From 608ecf565f99b9840095ecff424e396c4bae631a Mon Sep 17 00:00:00 2001 From: Eric Harney Date: Tue, 9 Sep 2014 16:20:24 -0400 Subject: [PATCH 01/16] Refuse invalid qcow2 backing files Don't allow qcow2 files that are pointing to backing files outside of: volume- volume-. volume-.tmp-snap- (optionally prefixed with /mnt/path) Closes-Bug: #1350504 Change-Id: Ic89cffc93940b7b119cfcde3362f304c9f2875df (cherry picked from commit dca3c8323cf8cf12aa8ce4ba21f647ce631e8153) --- cinder/tests/test_glusterfs.py | 13 ++++++------ cinder/tests/test_smbfs.py | 4 +++- cinder/volume/drivers/glusterfs.py | 13 ++++++++---- cinder/volume/drivers/remotefs.py | 34 ++++++++++++++++++++++++------ cinder/volume/drivers/smbfs.py | 21 ++++++++++++------ 5 files changed, 60 insertions(+), 25 deletions(-) diff --git a/cinder/tests/test_glusterfs.py b/cinder/tests/test_glusterfs.py index 9961408c93b..269d711168a 100644 --- a/cinder/tests/test_glusterfs.py +++ b/cinder/tests/test_glusterfs.py @@ -83,6 +83,7 @@ class GlusterFsDriverTestCase(test.TestCase): TEST_SHARES_CONFIG_FILE = '/etc/cinder/test-shares.conf' TEST_TMP_FILE = '/tmp/tempfile' 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' @@ -1477,8 +1478,8 @@ class GlusterFsDriverTestCase(test.TestCase): volume = self._simple_volume() vol_filename = volume['name'] - vol_filename_2 = volume['name'] + '.asdfjkl' - vol_filename_3 = volume['name'] + 'qwertyuiop' + 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) @@ -1687,7 +1688,7 @@ class GlusterFsDriverTestCase(test.TestCase): info = imageutils.QemuImgInfo() info.file_format = 'raw' - drv._qemu_img_info(IgnoreArg()).AndReturn(info) + drv._qemu_img_info(IgnoreArg(), IgnoreArg()).AndReturn(info) base_driver.VolumeDriver.backup_volume(IgnoreArg(), IgnoreArg(), @@ -1723,7 +1724,7 @@ class GlusterFsDriverTestCase(test.TestCase): info = imageutils.QemuImgInfo() info.file_format = 'raw' - drv._qemu_img_info(IgnoreArg()).AndReturn(info) + drv._qemu_img_info(IgnoreArg(), IgnoreArg()).AndReturn(info) base_driver.VolumeDriver.backup_volume(IgnoreArg(), IgnoreArg(), @@ -1777,7 +1778,7 @@ class GlusterFsDriverTestCase(test.TestCase): info.file_format = 'raw' info.backing_file = 'file1' - drv._qemu_img_info(IgnoreArg()).AndReturn(info) + drv._qemu_img_info(IgnoreArg(), IgnoreArg()).AndReturn(info) mox.ReplayAll() @@ -1806,7 +1807,7 @@ class GlusterFsDriverTestCase(test.TestCase): info.file_format = 'qcow2' drv.db.volume_get(ctxt, volume['id']).AndReturn(volume) - drv._qemu_img_info(IgnoreArg()).AndReturn(info) + drv._qemu_img_info(IgnoreArg(), IgnoreArg()).AndReturn(info) mox.ReplayAll() diff --git a/cinder/tests/test_smbfs.py b/cinder/tests/test_smbfs.py index 057b73d02c6..7f315412fd5 100644 --- a/cinder/tests/test_smbfs.py +++ b/cinder/tests/test_smbfs.py @@ -504,7 +504,9 @@ class SmbFsTestCase(test.TestCase): drv._DISK_FORMAT_VHDX, mock.sentinel.block_size) drv._do_extend_volume.assert_called_once_with( - self._FAKE_VOLUME_PATH, self._FAKE_VOLUME['size']) + self._FAKE_VOLUME_PATH, + self._FAKE_VOLUME['size'], + self._FAKE_VOLUME['name']) def test_copy_image_to_volume(self): self._test_copy_image_to_volume() diff --git a/cinder/volume/drivers/glusterfs.py b/cinder/volume/drivers/glusterfs.py index d494a823a34..27aac48b951 100644 --- a/cinder/volume/drivers/glusterfs.py +++ b/cinder/volume/drivers/glusterfs.py @@ -153,6 +153,10 @@ class GlusterfsDriver(remotefs_drv.RemoteFSSnapDriver): self._ensure_shares_mounted() + def _qemu_img_info(self, path, volume_name): + return super(GlusterfsDriver, self)._qemu_img_info_base( + path, volume_name, self.configuration.glusterfs_mount_point_base) + def check_for_setup_error(self): """Just to override parent behavior.""" pass @@ -207,7 +211,8 @@ class GlusterfsDriver(remotefs_drv.RemoteFSSnapDriver): # Find the file which backs this file, which represents the point # when this snapshot was created. - img_info = self._qemu_img_info(forward_path) + 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) @@ -392,7 +397,7 @@ class GlusterfsDriver(remotefs_drv.RemoteFSSnapDriver): data['options'] = self.shares[volume['provider_location']] # Test file for raw vs. qcow2 format - info = self._qemu_img_info(path) + 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 @@ -425,7 +430,7 @@ class GlusterfsDriver(remotefs_drv.RemoteFSSnapDriver): ' driver when no snapshots exist.') raise exception.InvalidVolume(msg) - info = self._qemu_img_info(volume_path) + info = self._qemu_img_info(volume_path, volume['name']) backing_fmt = info.file_format if backing_fmt not in ['raw', 'qcow2']: @@ -557,7 +562,7 @@ class GlusterfsDriver(remotefs_drv.RemoteFSSnapDriver): volume_dir, self.get_active_image_from_info(volume)) - info = self._qemu_img_info(active_file_path) + info = self._qemu_img_info(active_file_path, volume['name']) if info.backing_file is not None: msg = _('No snapshots found in database, but ' diff --git a/cinder/volume/drivers/remotefs.py b/cinder/volume/drivers/remotefs.py index 54904c16701..abed9c8069c 100644 --- a/cinder/volume/drivers/remotefs.py +++ b/cinder/volume/drivers/remotefs.py @@ -425,7 +425,7 @@ class RemoteFSSnapDriver(RemoteFSDriver): with open(info_path, 'w') as f: json.dump(snap_info, f, indent=1, sort_keys=True) - def _qemu_img_info(self, path): + 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. @@ -435,10 +435,25 @@ class RemoteFSSnapDriver(RemoteFSDriver): 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.RemoteFSException(msg) + info.backing_file = os.path.basename(info.backing_file) return info + def _qemu_img_info(self, path, volume_name): + raise NotImplementedError() + def _img_commit(self, path): self._execute('qemu-img', 'commit', path, run_as_root=True) self._delete(path) @@ -476,7 +491,7 @@ class RemoteFSSnapDriver(RemoteFSDriver): output = [] - info = self._qemu_img_info(path) + info = self._qemu_img_info(path, volume['name']) new_info = {} new_info['filename'] = os.path.basename(path) new_info['backing-filename'] = info.backing_file @@ -486,7 +501,7 @@ class RemoteFSSnapDriver(RemoteFSDriver): 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) + info = self._qemu_img_info(path, volume['name']) backing_filename = info.backing_file new_info = {} new_info['filename'] = filename @@ -559,7 +574,7 @@ class RemoteFSSnapDriver(RemoteFSDriver): active_file = self.get_active_image_from_info(volume) active_file_path = os.path.join(self._local_volume_dir(volume), active_file) - info = self._qemu_img_info(active_file_path) + info = self._qemu_img_info(active_file_path, volume['name']) backing_file = info.backing_file root_file_fmt = info.file_format @@ -692,7 +707,9 @@ class RemoteFSSnapDriver(RemoteFSDriver): self._local_volume_dir(snapshot['volume']), snapshot_file) - snapshot_path_img_info = self._qemu_img_info(snapshot_path) + snapshot_path_img_info = self._qemu_img_info( + snapshot_path, + snapshot['volume']['name']) vol_path = self._local_volume_dir(snapshot['volume']) @@ -718,7 +735,9 @@ class RemoteFSSnapDriver(RemoteFSDriver): base_path = os.path.join( self._local_volume_dir(snapshot['volume']), base_file) - base_file_img_info = self._qemu_img_info(base_path) + 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 @@ -868,7 +887,8 @@ class RemoteFSSnapDriver(RemoteFSDriver): '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) + info = self._qemu_img_info(backing_path_full_path, + snapshot['volume']['name']) backing_fmt = info.file_format command = ['qemu-img', 'rebase', '-u', diff --git a/cinder/volume/drivers/smbfs.py b/cinder/volume/drivers/smbfs.py index dab55fbf1b0..2a355a891e2 100644 --- a/cinder/volume/drivers/smbfs.py +++ b/cinder/volume/drivers/smbfs.py @@ -101,6 +101,10 @@ class SmbfsDriver(remotefs_drv.RemoteFSSnapDriver): smbfs_mount_options=opts) self.img_suffix = None + def _qemu_img_info(self, path, volume_name): + return super(SmbfsDriver, self)._qemu_img_info_base( + path, volume_name, self.configuration.smbfs_mount_point_base) + def initialize_connection(self, volume, connector): """Allow connection to connector and return connection info. @@ -111,7 +115,7 @@ class SmbfsDriver(remotefs_drv.RemoteFSSnapDriver): active_file = self.get_active_image_from_info(volume) active_file_path = os.path.join(self._local_volume_dir(volume), active_file) - info = self._qemu_img_info(active_file_path) + info = self._qemu_img_info(active_file_path, volume['name']) fmt = info.file_format data = {'export': volume['provider_location'], @@ -183,7 +187,7 @@ class SmbfsDriver(remotefs_drv.RemoteFSSnapDriver): volume_path = os.path.join(volume_dir, volume['name']) if os.path.exists(volume_path): - info = self._qemu_img_info(volume_path) + info = self._qemu_img_info(volume_path, volume['name']) volume_format = info.file_format else: volume_format = ( @@ -409,10 +413,10 @@ class SmbfsDriver(remotefs_drv.RemoteFSSnapDriver): self._check_extend_volume_support(volume, size_gb) LOG.info(_('Resizing file to %sG...') % size_gb) - self._do_extend_volume(volume_path, size_gb) + self._do_extend_volume(volume_path, size_gb, volume['name']) - def _do_extend_volume(self, volume_path, size_gb): - info = self._qemu_img_info(volume_path) + def _do_extend_volume(self, volume_path, size_gb, volume_name): + info = self._qemu_img_info(volume_path, volume_name) fmt = info.file_format # Note(lpetrut): as for version 2.0, qemu-img cannot resize @@ -481,7 +485,8 @@ class SmbfsDriver(remotefs_drv.RemoteFSSnapDriver): # Find the file which backs this file, which represents the point # when this snapshot was created. - img_info = self._qemu_img_info(forward_path) + img_info = self._qemu_img_info(forward_path, + snapshot['volume']['name']) path_to_snap_img = os.path.join(vol_dir, img_info.backing_file) LOG.debug("Will copy from snapshot at %s" % path_to_snap_img) @@ -512,7 +517,9 @@ class SmbfsDriver(remotefs_drv.RemoteFSSnapDriver): self.local_path(volume), volume_format, self.configuration.volume_dd_blocksize) - self._do_extend_volume(self.local_path(volume), volume['size']) + self._do_extend_volume(self.local_path(volume), + volume['size'], + volume['name']) data = image_utils.qemu_img_info(self.local_path(volume)) virt_size = data.virtual_size / units.Gi From 79afa849658f689a9105473fdfba1d993684d3df Mon Sep 17 00:00:00 2001 From: Lucian Petrut Date: Tue, 30 Sep 2014 11:58:22 +0300 Subject: [PATCH 02/16] Windows SMBFS: Handle volume_name in _qemu_img_info The volume_name is now parsed to the _qemu_img_info wrapper. As this method is not prone to security issues because this driver does not support raw images (at least not yet), we don't have to perform any checks on the backing image file path. Thus, this method simply ignores this argument that will be parsed by the base class methods. Related-Bug: #1350504 Change-Id: I801a6338250ec2dc631c4058543f7d0088b3e4d4 (cherry picked from commit 5e0ce63d6df39dcad5a0ef35553369e49c67dfb8) --- cinder/volume/drivers/windows/smbfs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cinder/volume/drivers/windows/smbfs.py b/cinder/volume/drivers/windows/smbfs.py index 275e07945a3..c2c07985b2d 100644 --- a/cinder/volume/drivers/windows/smbfs.py +++ b/cinder/volume/drivers/windows/smbfs.py @@ -135,7 +135,7 @@ class WindowsSmbfsDriver(smbfs.SmbfsDriver): backing_file_path = os.path.join(image_dir, backing_file) self.vhdutils.reconnect_parent(image, backing_file_path) - def _qemu_img_info(self, path): + def _qemu_img_info(self, path, volume_name=None): # This code expects to deal only with relative filenames. # As this method is needed by the upper class and qemu-img does # not fully support vhdx images, for the moment we'll use Win32 API From c70ef7d8d4d9479fe5d3f4a8387c4eac1dca274d Mon Sep 17 00:00:00 2001 From: OpenStack Proposal Bot Date: Mon, 6 Oct 2014 16:09:05 +0000 Subject: [PATCH 03/16] Updated from global requirements Change-Id: I116f04494e596e470f8fec242466ac5fe21b222c --- requirements.txt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/requirements.txt b/requirements.txt index 81c625302cf..d6f86a17041 100644 --- a/requirements.txt +++ b/requirements.txt @@ -10,13 +10,13 @@ eventlet>=0.15.1 greenlet>=0.3.2 iso8601>=0.1.9 keystonemiddleware>=1.0.0 -kombu>=2.4.8 +kombu>=2.5.0 lxml>=2.3 netaddr>=0.7.12 -oslo.config>=1.4.0.0a3 -oslo.db>=0.4.0 # Apache-2.0 -oslo.messaging>=1.4.0.0a3 -oslo.rootwrap>=1.3.0.0a1 +oslo.config>=1.4.0 # Apache-2.0 +oslo.db>=1.0.0 # Apache-2.0 +oslo.messaging>=1.4.0 +oslo.rootwrap>=1.3.0 osprofiler>=0.3.0 # Apache-2.0 paramiko>=1.13.0 Paste @@ -37,4 +37,4 @@ stevedore>=1.0.0 # Apache-2.0 suds>=0.4 WebOb>=1.2.3 wsgiref>=0.1.2 -oslo.i18n>=0.3.0 # Apache-2.0 +oslo.i18n>=1.0.0 # Apache-2.0 From d5efe6703297761215907eeaf703cec040e6ad25 Mon Sep 17 00:00:00 2001 From: Tristan Cacqueray Date: Fri, 3 Oct 2014 19:57:01 +0000 Subject: [PATCH 04/16] Sync latest processutils from oslo-incubator An earlier commit (Ia92aab76fa83d01c5fbf6f9d31df2463fc26ba5c) failed to address ssh_execute(). This change set addresses ssh_execute. ------------------------------------------------ oslo-incubator head: commit 4990535fb5f3e2dc9b397e1a18c1b5dda94ef1c4 Merge: 9f5c700 2a130bf Author: Jenkins Date: Mon Sep 29 23:12:14 2014 +0000 Merge "Script to list unreleased changes in all oslo projects" ----------------------------------------------- The sync pulls in the following changes (newest to oldest): 6a60f842 - Mask passwords in exceptions and error messages (SSH) ----------------------------------------------- Change-Id: Ie0caf32469126dd9feb44867adf27acb6e383958 Closes-Bug: #1377981 (cherry picked from commit 5e4e1f7ea71f9b4c7bd15809c58bc7a1838ed567) --- cinder/openstack/common/processutils.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/cinder/openstack/common/processutils.py b/cinder/openstack/common/processutils.py index a1c68822ed6..a4dc6718b99 100644 --- a/cinder/openstack/common/processutils.py +++ b/cinder/openstack/common/processutils.py @@ -242,7 +242,8 @@ def trycmd(*args, **kwargs): def ssh_execute(ssh, cmd, process_input=None, addl_env=None, check_exit_code=True): - LOG.debug('Running cmd (SSH): %s', cmd) + sanitized_cmd = strutils.mask_password(cmd) + LOG.debug('Running cmd (SSH): %s', sanitized_cmd) if addl_env: raise InvalidArgumentError(_('Environment not supported over SSH')) @@ -256,7 +257,10 @@ def ssh_execute(ssh, cmd, process_input=None, # 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() @@ -266,11 +270,11 @@ def ssh_execute(ssh, cmd, process_input=None, LOG.debug('Result was %s' % exit_status) if check_exit_code and exit_status != 0: raise ProcessExecutionError(exit_code=exit_status, - stdout=stdout, - stderr=stderr, - cmd=cmd) + stdout=sanitized_stdout, + stderr=sanitized_stderr, + cmd=sanitized_cmd) - return (stdout, stderr) + return (sanitized_stdout, sanitized_stderr) def get_worker_count(): From 2601acaec8d3c154f7638db0e7dad307d0efcc48 Mon Sep 17 00:00:00 2001 From: Vincent Hou Date: Fri, 12 Sep 2014 16:10:02 +0800 Subject: [PATCH 05/16] IBM Storwize driver: Retype the volume with correct empty QoS * Currently for Storwzie driver, if the new type does not have QoS configurations, the old QoS configurations remain in the volume after retyping it. It should be retyped into a volume with empty QoS for the Storwize driver. * Refactor three dicts into one for better maintainance of the QoS keys for Storwize driver. DocImpact Change-Id: I2b2801a4ef72ef02c11392ed00b56f5263a8a7e4 Closes-Bug: #1368595 (cherry picked from commit 26de1b1d829849665dae921b8be739194b84515d) --- cinder/tests/test_storwize_svc.py | 126 ++++++++++++++---- .../drivers/ibm/storwize_svc/__init__.py | 10 +- .../drivers/ibm/storwize_svc/helpers.py | 60 +++++++-- 3 files changed, 159 insertions(+), 37 deletions(-) diff --git a/cinder/tests/test_storwize_svc.py b/cinder/tests/test_storwize_svc.py index 0ecaa64e52a..cbe68154093 100644 --- a/cinder/tests/test_storwize_svc.py +++ b/cinder/tests/test_storwize_svc.py @@ -1716,7 +1716,7 @@ class StorwizeSVCDriverTestCase(test.TestCase): # If the qos is not empty, chvdisk should be called # for create_volume. - fake_opts['qos'] = {'rate': 5000} + fake_opts['qos'] = {'IOThrottling': 5000} get_vdisk_params.return_value = fake_opts self.driver.create_volume(vol) self._assert_vol_exists(vol['name'], True) @@ -1854,7 +1854,7 @@ class StorwizeSVCDriverTestCase(test.TestCase): # If the qos is not empty, chvdisk should be called # for create_volume_from_snapshot. - fake_opts['qos'] = {'rate': 5000} + fake_opts['qos'] = {'IOThrottling': 5000} get_vdisk_params.return_value = fake_opts self.driver.create_volume_from_snapshot(vol2, snap1) self._assert_vol_exists(vol2['name'], True) @@ -1876,7 +1876,7 @@ class StorwizeSVCDriverTestCase(test.TestCase): # If the qos is not empty, chvdisk should be called # for create_volume_from_snapshot. - fake_opts['qos'] = {'rate': 5000} + fake_opts['qos'] = {'IOThrottling': 5000} get_vdisk_params.return_value = fake_opts self.driver.create_cloned_volume(vol3, vol2) self._assert_vol_exists(vol3['name'], True) @@ -2442,8 +2442,10 @@ class StorwizeSVCDriverTestCase(test.TestCase): self.driver.migrate_volume(ctxt, volume, host) self._delete_volume(volume) - @mock.patch.object(helpers.StorwizeHelpers, 'add_vdisk_qos') - def test_storwize_svc_retype_no_copy(self, add_vdisk_qos): + @mock.patch.object(helpers.StorwizeHelpers, 'disable_vdisk_qos') + @mock.patch.object(helpers.StorwizeHelpers, 'update_vdisk_qos') + def test_storwize_svc_retype_no_copy(self, update_vdisk_qos, + disable_vdisk_qos): self.driver.do_setup(None) loc = ('StorwizeSVCDriver:' + self.driver._state['system_id'] + ':openstack') @@ -2475,24 +2477,62 @@ class StorwizeSVCDriverTestCase(test.TestCase): self.driver.delete_volume(volume) fake_opts = self._get_default_opts() + fake_opts_old = self._get_default_opts() + fake_opts_old['qos'] = {'IOThrottling': 4000} + fake_opts_qos = self._get_default_opts() + fake_opts_qos['qos'] = {'IOThrottling': 5000} self.driver.create_volume(volume) with mock.patch.object(storwize_svc.StorwizeSVCDriver, '_get_vdisk_params') as get_vdisk_params: - # If qos is empty, chvdisk will not be called for retype. - get_vdisk_params.return_value = fake_opts + # If qos is empty for both the source and target volumes, + # add_vdisk_qos and disable_vdisk_qos will not be called for + # retype. + get_vdisk_params.side_effect = [fake_opts, fake_opts] self.driver.retype(ctxt, volume, new_type, diff, host) - self.assertFalse(add_vdisk_qos.called) + self.assertFalse(update_vdisk_qos.called) + self.assertFalse(disable_vdisk_qos.called) self.driver.delete_volume(volume) self.driver.create_volume(volume) - add_vdisk_qos.reset_mock() + update_vdisk_qos.reset_mock() with mock.patch.object(storwize_svc.StorwizeSVCDriver, '_get_vdisk_params') as get_vdisk_params: - # If qos is not empty, chvdisk will be called for retype. - fake_opts['qos'] = {'rate': 5000} - get_vdisk_params.return_value = fake_opts + # If qos is specified for both source and target volumes, + # add_vdisk_qos will be called for retype, and disable_vdisk_qos + # will not be called. + get_vdisk_params.side_effect = [fake_opts_old, fake_opts_qos] self.driver.retype(ctxt, volume, new_type, diff, host) - add_vdisk_qos.assert_called_with(volume['name'], fake_opts['qos']) + update_vdisk_qos.assert_called_with(volume['name'], + fake_opts_qos['qos']) + self.assertFalse(disable_vdisk_qos.called) + self.driver.delete_volume(volume) + + self.driver.create_volume(volume) + update_vdisk_qos.reset_mock() + with mock.patch.object(storwize_svc.StorwizeSVCDriver, + '_get_vdisk_params') as get_vdisk_params: + # If qos is empty for source and speficied for target volume, + # add_vdisk_qos will be called for retype, and disable_vdisk_qos + # will not be called. + get_vdisk_params.side_effect = [fake_opts, fake_opts_qos] + self.driver.retype(ctxt, volume, new_type, diff, host) + update_vdisk_qos.assert_called_with(volume['name'], + fake_opts_qos['qos']) + self.assertFalse(disable_vdisk_qos.called) + self.driver.delete_volume(volume) + + self.driver.create_volume(volume) + update_vdisk_qos.reset_mock() + with mock.patch.object(storwize_svc.StorwizeSVCDriver, + '_get_vdisk_params') as get_vdisk_params: + # If qos is empty for target volume and specified for source + # volume, add_vdisk_qos will not be called for retype, and + # disable_vdisk_qos will be called. + get_vdisk_params.side_effect = [fake_opts_qos, fake_opts] + self.driver.retype(ctxt, volume, new_type, diff, host) + self.assertFalse(update_vdisk_qos.called) + disable_vdisk_qos.assert_called_with(volume['name'], + fake_opts_qos['qos']) self.driver.delete_volume(volume) def test_storwize_svc_retype_only_change_iogrp(self): @@ -2525,8 +2565,10 @@ class StorwizeSVCDriverTestCase(test.TestCase): 'failed') self.driver.delete_volume(volume) - @mock.patch.object(helpers.StorwizeHelpers, 'add_vdisk_qos') - def test_storwize_svc_retype_need_copy(self, add_vdisk_qos): + @mock.patch.object(helpers.StorwizeHelpers, 'disable_vdisk_qos') + @mock.patch.object(helpers.StorwizeHelpers, 'update_vdisk_qos') + def test_storwize_svc_retype_need_copy(self, update_vdisk_qos, + disable_vdisk_qos): self.driver.do_setup(None) loc = ('StorwizeSVCDriver:' + self.driver._state['system_id'] + ':openstack') @@ -2558,24 +2600,62 @@ class StorwizeSVCDriverTestCase(test.TestCase): self.driver.delete_volume(volume) fake_opts = self._get_default_opts() + fake_opts_old = self._get_default_opts() + fake_opts_old['qos'] = {'IOThrottling': 4000} + fake_opts_qos = self._get_default_opts() + fake_opts_qos['qos'] = {'IOThrottling': 5000} self.driver.create_volume(volume) with mock.patch.object(storwize_svc.StorwizeSVCDriver, '_get_vdisk_params') as get_vdisk_params: - # If qos is empty, chvdisk will not be called for retype. - get_vdisk_params.return_value = fake_opts + # If qos is empty for both the source and target volumes, + # add_vdisk_qos and disable_vdisk_qos will not be called for + # retype. + get_vdisk_params.side_effect = [fake_opts, fake_opts] self.driver.retype(ctxt, volume, new_type, diff, host) - self.assertFalse(add_vdisk_qos.called) + self.assertFalse(update_vdisk_qos.called) + self.assertFalse(disable_vdisk_qos.called) self.driver.delete_volume(volume) - add_vdisk_qos.reset_mock() self.driver.create_volume(volume) + update_vdisk_qos.reset_mock() with mock.patch.object(storwize_svc.StorwizeSVCDriver, '_get_vdisk_params') as get_vdisk_params: - # If qos is not empty, chvdisk will be called for retype. - fake_opts['qos'] = {'rate': 5000} - get_vdisk_params.return_value = fake_opts + # If qos is specified for both source and target volumes, + # add_vdisk_qos will be called for retype, and disable_vdisk_qos + # will not be called. + get_vdisk_params.side_effect = [fake_opts_old, fake_opts_qos] self.driver.retype(ctxt, volume, new_type, diff, host) - add_vdisk_qos.assert_called_with(volume['name'], fake_opts['qos']) + update_vdisk_qos.assert_called_with(volume['name'], + fake_opts_qos['qos']) + self.assertFalse(disable_vdisk_qos.called) + self.driver.delete_volume(volume) + + self.driver.create_volume(volume) + update_vdisk_qos.reset_mock() + with mock.patch.object(storwize_svc.StorwizeSVCDriver, + '_get_vdisk_params') as get_vdisk_params: + # If qos is empty for source and speficied for target volume, + # add_vdisk_qos will be called for retype, and disable_vdisk_qos + # will not be called. + get_vdisk_params.side_effect = [fake_opts, fake_opts_qos] + self.driver.retype(ctxt, volume, new_type, diff, host) + update_vdisk_qos.assert_called_with(volume['name'], + fake_opts_qos['qos']) + self.assertFalse(disable_vdisk_qos.called) + self.driver.delete_volume(volume) + + self.driver.create_volume(volume) + update_vdisk_qos.reset_mock() + with mock.patch.object(storwize_svc.StorwizeSVCDriver, + '_get_vdisk_params') as get_vdisk_params: + # If qos is empty for target volume and specified for source + # volume, add_vdisk_qos will not be called for retype, and + # disable_vdisk_qos will be called. + get_vdisk_params.side_effect = [fake_opts_qos, fake_opts] + self.driver.retype(ctxt, volume, new_type, diff, host) + self.assertFalse(update_vdisk_qos.called) + disable_vdisk_qos.assert_called_with(volume['name'], + fake_opts_qos['qos']) self.driver.delete_volume(volume) def test_set_storage_code_level_success(self): diff --git a/cinder/volume/drivers/ibm/storwize_svc/__init__.py b/cinder/volume/drivers/ibm/storwize_svc/__init__.py index d6ad506aa8f..62ad086cff5 100644 --- a/cinder/volume/drivers/ibm/storwize_svc/__init__.py +++ b/cinder/volume/drivers/ibm/storwize_svc/__init__.py @@ -920,9 +920,13 @@ class StorwizeSVCDriver(san.SanDriver): self._helpers.change_vdisk_options(volume['name'], vdisk_changes, new_opts, self._state) - qos = new_opts['qos'] or old_opts['qos'] - if qos: - self._helpers.add_vdisk_qos(volume['name'], qos) + if new_opts['qos']: + # Add the new QoS setting to the volume. If the volume has an + # old QoS setting, it will be overwritten. + self._helpers.update_vdisk_qos(volume['name'], new_opts['qos']) + elif old_opts['qos']: + # If the old_opts contain QoS keys, disable them. + self._helpers.disable_vdisk_qos(volume['name'], old_opts['qos']) # Add replica if needed if not old_type_replication and new_type_replication: diff --git a/cinder/volume/drivers/ibm/storwize_svc/helpers.py b/cinder/volume/drivers/ibm/storwize_svc/helpers.py index c71f21fed2e..6f854021104 100644 --- a/cinder/volume/drivers/ibm/storwize_svc/helpers.py +++ b/cinder/volume/drivers/ibm/storwize_svc/helpers.py @@ -38,8 +38,14 @@ LOG = logging.getLogger(__name__) class StorwizeHelpers(object): - svc_qos_keys = {'IOThrottling': int} - svc_qos_param_dict = {'IOThrottling': 'rate'} + # All the supported QoS key are saved in this dict. When a new + # key is going to add, three values MUST be set: + # 'default': to indicate the value, when the parameter is disabled. + # 'param': to indicate the corresponding parameter in the command. + # 'type': to indicate the type of this value. + svc_qos_keys = {'IOThrottling': {'default': '0', + 'param': 'rate', + 'type': int}} def __init__(self, run_ssh): self.ssh = storwize_ssh.StorwizeSSH(run_ssh) @@ -487,12 +493,13 @@ class StorwizeHelpers(object): # Add the QoS. if scope and scope == 'qos': - type_fn = self.svc_qos_keys[key] - try: - value = type_fn(value) - qos[self.svc_qos_param_dict[key]] = value - except ValueError: - continue + if key in self.svc_qos_keys.keys(): + try: + type_fn = self.svc_qos_keys[key]['type'] + value = type_fn(value) + qos[key] = value + except ValueError: + continue # Any keys that the driver should look at should have the # 'drivers' scope. @@ -525,10 +532,10 @@ class StorwizeHelpers(object): # Add the QoS. if scope and scope == 'qos': if key in self.svc_qos_keys.keys(): - type_fn = self.svc_qos_keys[key] try: + type_fn = self.svc_qos_keys[key]['type'] value = type_fn(value) - qos[self.svc_qos_param_dict[key]] = value + qos[key] = value except ValueError: continue return qos @@ -876,8 +883,39 @@ class StorwizeHelpers(object): return dest_pool def add_vdisk_qos(self, vdisk, qos): + """Add the QoS configuration to the volume.""" for key, value in qos.iteritems(): - self.ssh.chvdisk(vdisk, ['-' + key, str(value)]) + if key in self.svc_qos_keys.keys(): + param = self.svc_qos_keys[key]['param'] + self.ssh.chvdisk(vdisk, ['-' + param, str(value)]) + + def update_vdisk_qos(self, vdisk, qos): + """Update all the QoS in terms of a key and value. + + svc_qos_keys saves all the supported QoS parameters. Going through + this dict, we set the new values to all the parameters. If QoS is + available in the QoS configuration, the value is taken from it; + if not, the value will be set to default. + """ + for key, value in self.svc_qos_keys.iteritems(): + param = value['param'] + if key in qos.keys(): + # If the value is set in QoS, take the value from + # the QoS configuration. + v = qos[key] + else: + # If not, set the value to default. + v = value['default'] + self.ssh.chvdisk(vdisk, ['-' + param, str(v)]) + + def disable_vdisk_qos(self, vdisk, qos): + """Disable the QoS.""" + for key, value in qos.iteritems(): + if key in self.svc_qos_keys.keys(): + param = self.svc_qos_keys[key]['param'] + # Take the default value. + value = self.svc_qos_keys[key]['default'] + self.ssh.chvdisk(vdisk, ['-' + param, value]) def change_vdisk_options(self, vdisk, changes, opts, state): if 'warning' in opts: From 40eff25fce9a350d1872b083503e4306242961de Mon Sep 17 00:00:00 2001 From: Clinton Knight Date: Fri, 26 Sep 2014 12:07:44 -0400 Subject: [PATCH 06/16] Deprecate / obsolete NetApp volume extra specs The NetApp Data ONTAP (Cluster-mode) NFS & iSCSI drivers for Juno support the Cinder pools feature, but the drivers are reporting two qualified extra specs that must be converted to unqualified extra specs in order to be used by the Cinder scheduler's capability filter. Furthermore, there are four extra specs that must be deprecated due to having the pools feature. Warnings will be logged during volume creation if any of the obsolete or deprecated extra specs are seen in the volume type. Change-Id: I4dbd667610e481356304a12b8dae84cff61aa9d9 Closes-bug: 1374630 (cherry picked from commit 4cb4be4122a44dc99d6f29f065cdd32ae86273ce) --- cinder/tests/test_netapp_nfs.py | 35 +++++++++++++++++++ .../tests/volume/drivers/netapp/test_iscsi.py | 35 ++++++++++++++++++- cinder/volume/drivers/netapp/iscsi.py | 8 +++-- cinder/volume/drivers/netapp/nfs.py | 8 +++-- cinder/volume/drivers/netapp/utils.py | 21 +++++++++++ 5 files changed, 100 insertions(+), 7 deletions(-) diff --git a/cinder/tests/test_netapp_nfs.py b/cinder/tests/test_netapp_nfs.py index f059b627a9c..e9d27e01646 100644 --- a/cinder/tests/test_netapp_nfs.py +++ b/cinder/tests/test_netapp_nfs.py @@ -819,6 +819,7 @@ class NetappDirectCmodeNfsDriverOnlyTestCase(test.TestCase): self._driver.ssc_enabled = True self._driver.configuration.netapp_copyoffload_tool_path = 'cof_path' + @mock.patch.object(utils, 'LOG', mock.Mock()) @mock.patch.object(netapp_nfs, 'get_volume_extra_specs') def test_create_volume(self, mock_volume_extra_specs): drv = self._driver @@ -832,6 +833,40 @@ class NetappDirectCmodeNfsDriverOnlyTestCase(test.TestCase): volume_info = self._driver.create_volume(FakeVolume(host, 1)) self.assertEqual(volume_info.get('provider_location'), fake_share) + self.assertEqual(0, utils.LOG.warn.call_count) + + @mock.patch.object(utils, 'LOG', mock.Mock()) + @mock.patch.object(netapp_nfs, 'get_volume_extra_specs') + def test_create_volume_obsolete_extra_spec(self, mock_volume_extra_specs): + drv = self._driver + drv.ssc_enabled = False + extra_specs = {'netapp:raid_type': 'raid4'} + mock_volume_extra_specs.return_value = extra_specs + fake_share = 'localhost:myshare' + host = 'hostname@backend#' + fake_share + with mock.patch.object(drv, '_ensure_shares_mounted'): + with mock.patch.object(drv, '_do_create_volume'): + self._driver.create_volume(FakeVolume(host, 1)) + warn_msg = 'Extra spec netapp:raid_type is obsolete. ' \ + 'Use netapp_raid_type instead.' + utils.LOG.warn.assert_called_once_with(warn_msg) + + @mock.patch.object(utils, 'LOG', mock.Mock()) + @mock.patch.object(netapp_nfs, 'get_volume_extra_specs') + def test_create_volume_deprecated_extra_spec(self, + mock_volume_extra_specs): + drv = self._driver + drv.ssc_enabled = False + extra_specs = {'netapp_thick_provisioned': 'true'} + mock_volume_extra_specs.return_value = extra_specs + fake_share = 'localhost:myshare' + host = 'hostname@backend#' + fake_share + with mock.patch.object(drv, '_ensure_shares_mounted'): + with mock.patch.object(drv, '_do_create_volume'): + self._driver.create_volume(FakeVolume(host, 1)) + warn_msg = 'Extra spec netapp_thick_provisioned is ' \ + 'deprecated. Use netapp_thin_provisioned instead.' + utils.LOG.warn.assert_called_once_with(warn_msg) def test_create_volume_no_pool_specified(self): drv = self._driver diff --git a/cinder/tests/volume/drivers/netapp/test_iscsi.py b/cinder/tests/volume/drivers/netapp/test_iscsi.py index 40e077872d6..836a9e08b52 100644 --- a/cinder/tests/volume/drivers/netapp/test_iscsi.py +++ b/cinder/tests/volume/drivers/netapp/test_iscsi.py @@ -82,7 +82,8 @@ class NetAppDirectISCSIDriverTestCase(test.TestCase): @mock.patch.object(iscsiDriver, 'create_lun', mock.Mock()) @mock.patch.object(iscsiDriver, '_create_lun_handle', mock.Mock()) @mock.patch.object(iscsiDriver, '_add_lun_to_table', mock.Mock()) - @mock.patch.object(na_utils, 'get_volume_extra_specs', + @mock.patch.object(ntap_iscsi, 'LOG', mock.Mock()) + @mock.patch.object(ntap_iscsi, 'get_volume_extra_specs', mock.Mock(return_value=None)) def test_create_volume(self): self.driver.create_volume({'name': 'lun1', 'size': 100, @@ -90,6 +91,7 @@ class NetAppDirectISCSIDriverTestCase(test.TestCase): 'host': 'hostname@backend#vol1'}) self.driver.create_lun.assert_called_once_with( 'vol1', 'lun1', 107374182400, mock.ANY, None) + self.assertEqual(0, ntap_iscsi.LOG.warn.call_count) def test_create_volume_no_pool_provided_by_scheduler(self): self.assertRaises(exception.InvalidHost, self.driver.create_volume, @@ -97,6 +99,37 @@ class NetAppDirectISCSIDriverTestCase(test.TestCase): 'id': uuid.uuid4(), 'host': 'hostname@backend'}) # missing pool + @mock.patch.object(iscsiDriver, 'create_lun', mock.Mock()) + @mock.patch.object(iscsiDriver, '_create_lun_handle', mock.Mock()) + @mock.patch.object(iscsiDriver, '_add_lun_to_table', mock.Mock()) + @mock.patch.object(na_utils, 'LOG', mock.Mock()) + @mock.patch.object(ntap_iscsi, 'get_volume_extra_specs', + mock.Mock(return_value={'netapp:raid_type': 'raid4'})) + def test_create_volume_obsolete_extra_spec(self): + + self.driver.create_volume({'name': 'lun1', 'size': 100, + 'id': uuid.uuid4(), + 'host': 'hostname@backend#vol1'}) + warn_msg = 'Extra spec netapp:raid_type is obsolete. ' \ + 'Use netapp_raid_type instead.' + na_utils.LOG.warn.assert_called_once_with(warn_msg) + + @mock.patch.object(iscsiDriver, 'create_lun', mock.Mock()) + @mock.patch.object(iscsiDriver, '_create_lun_handle', mock.Mock()) + @mock.patch.object(iscsiDriver, '_add_lun_to_table', mock.Mock()) + @mock.patch.object(na_utils, 'LOG', mock.Mock()) + @mock.patch.object(ntap_iscsi, 'get_volume_extra_specs', + mock.Mock(return_value={'netapp_thick_provisioned': + 'true'})) + def test_create_volume_deprecated_extra_spec(self): + + self.driver.create_volume({'name': 'lun1', 'size': 100, + 'id': uuid.uuid4(), + 'host': 'hostname@backend#vol1'}) + warn_msg = 'Extra spec netapp_thick_provisioned is deprecated. ' \ + 'Use netapp_thin_provisioned instead.' + na_utils.LOG.warn.assert_called_once_with(warn_msg) + def test_create_lun(self): expected_path = '/vol/%s/%s' % (self.fake_volume, self.fake_lun) diff --git a/cinder/volume/drivers/netapp/iscsi.py b/cinder/volume/drivers/netapp/iscsi.py index 45b8a42a061..e08c0dc1030 100644 --- a/cinder/volume/drivers/netapp/iscsi.py +++ b/cinder/volume/drivers/netapp/iscsi.py @@ -190,6 +190,9 @@ class NetAppDirectISCSIDriver(driver.ISCSIDriver): qos_policy_group = extra_specs.pop('netapp:qos_policy_group', None) \ if extra_specs else None + # warn on obsolete extra specs + na_utils.log_extra_spec_warnings(extra_specs) + self.create_lun(ontap_volume_name, lun_name, size, metadata, qos_policy_group) LOG.debug('Created LUN with name %s' % lun_name) @@ -1105,9 +1108,8 @@ class NetAppDirectCmodeISCSIDriver(NetAppDirectISCSIDriver): free /= units.Gi pool['free_capacity_gb'] = round_down(free, '0.01') - pool['netapp:raid_type'] = vol.aggr['raid_type'] - pool['netapp:disk_type'] = vol.aggr['disk_type'] - pool['netapp:qos_policy_group'] = vol.qos['qos_policy_group'] + pool['netapp_raid_type'] = vol.aggr['raid_type'] + pool['netapp_disk_type'] = vol.aggr['disk_type'] mirrored = vol in self.ssc_vols['mirrored'] pool['netapp_mirrored'] = six.text_type(mirrored).lower() diff --git a/cinder/volume/drivers/netapp/nfs.py b/cinder/volume/drivers/netapp/nfs.py index 5980c4a9491..c74f8551eff 100644 --- a/cinder/volume/drivers/netapp/nfs.py +++ b/cinder/volume/drivers/netapp/nfs.py @@ -812,6 +812,9 @@ class NetAppDirectCmodeNfsDriver (NetAppDirectNfsDriver): qos_policy_group = extra_specs.pop('netapp:qos_policy_group', None) \ if extra_specs else None + # warn on obsolete extra specs + na_utils.log_extra_spec_warnings(extra_specs) + try: volume['provider_location'] = share LOG.info(_('casted to %s') % volume['provider_location']) @@ -994,9 +997,8 @@ class NetAppDirectCmodeNfsDriver (NetAppDirectNfsDriver): # add SSC content if available vol = self._get_vol_for_share(nfs_share) if vol and self.ssc_vols: - pool['netapp:raid_type'] = vol.aggr['raid_type'] - pool['netapp:disk_type'] = vol.aggr['disk_type'] - pool['netapp:qos_policy_group'] = vol.qos['qos_policy_group'] + pool['netapp_raid_type'] = vol.aggr['raid_type'] + pool['netapp_disk_type'] = vol.aggr['disk_type'] mirrored = vol in self.ssc_vols['mirrored'] pool['netapp_mirrored'] = six.text_type(mirrored).lower() diff --git a/cinder/volume/drivers/netapp/utils.py b/cinder/volume/drivers/netapp/utils.py index 10cea03e6df..6a6bfc0e1d5 100644 --- a/cinder/volume/drivers/netapp/utils.py +++ b/cinder/volume/drivers/netapp/utils.py @@ -45,6 +45,14 @@ from cinder.volume import volume_types LOG = logging.getLogger(__name__) +OBSOLETE_SSC_SPECS = {'netapp:raid_type': 'netapp_raid_type', + 'netapp:disk_type': 'netapp_disk_type'} +DEPRECATED_SSC_SPECS = {'netapp_unmirrored': 'netapp_mirrored', + 'netapp_nodedup': 'netapp_dedup', + 'netapp_nocompression': 'netapp_compression', + 'netapp_thick_provisioned': 'netapp_thin_provisioned'} + + def provide_ems(requester, server, stats, netapp_backend, server_type="cluster"): """Provide ems with volume stats for the requester. @@ -364,3 +372,16 @@ def convert_es_fmt_to_uuid(es_label): def round_down(value, precision): return float(decimal.Decimal(six.text_type(value)).quantize( decimal.Decimal(precision), rounding=decimal.ROUND_DOWN)) + + +def log_extra_spec_warnings(extra_specs): + for spec in (set(extra_specs.keys() if extra_specs else []) & + set(OBSOLETE_SSC_SPECS.keys())): + msg = _('Extra spec %(old)s is obsolete. Use %(new)s instead.') + args = {'old': spec, 'new': OBSOLETE_SSC_SPECS[spec]} + LOG.warn(msg % args) + for spec in (set(extra_specs.keys() if extra_specs else []) & + set(DEPRECATED_SSC_SPECS.keys())): + msg = _('Extra spec %(old)s is deprecated. Use %(new)s instead.') + args = {'old': spec, 'new': DEPRECATED_SSC_SPECS[spec]} + LOG.warn(msg % args) From c566767d6a5041d1d86b1e199028d78772ebc508 Mon Sep 17 00:00:00 2001 From: Patrick East Date: Tue, 30 Sep 2014 11:47:42 -0700 Subject: [PATCH 07/16] Fix race condition in ISCSIConnector _disconnect_volume_multipath_iscsi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is a similar issue as seen in https://bugs.launchpad.net/cinder/+bug/1375382 The list of devices returned by driver.get_all_block_devices() in _disconnect_volume_multipath_iscsi will potentially contain broken symlinks as the SCSI devices have been deleted from calling self._linuxscsi.remove_multipath_device(device_realpath) right before _disconnect_volume_multipath_iscsi but the udev rule for the symlink may not yet have completed. Adding in a check to os.path.exists() will ensure that we will not consider the broken symlinks as an “in use” device. Change-Id: I79c9627e9b47127d3765fcec5b7e3bacef179630 Closes-Bug: #1375946 (cherry picked from commit 4541521de576297d9b7d4115b040ff54773d9d50) --- cinder/brick/initiator/connector.py | 13 +++++----- cinder/tests/brick/test_brick_connector.py | 30 ++++++++++++++++++++++ 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/cinder/brick/initiator/connector.py b/cinder/brick/initiator/connector.py index fb727779127..a51735e7c27 100644 --- a/cinder/brick/initiator/connector.py +++ b/cinder/brick/initiator/connector.py @@ -351,12 +351,13 @@ class ISCSIConnector(InitiatorConnector): 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) + if os.path.exists(dev): + 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 diff --git a/cinder/tests/brick/test_brick_connector.py b/cinder/tests/brick/test_brick_connector.py index f2ff6caa110..db87184a78d 100644 --- a/cinder/tests/brick/test_brick_connector.py +++ b/cinder/tests/brick/test_brick_connector.py @@ -302,6 +302,7 @@ class ISCSIConnectorTestCase(ConnectorTestCase): lambda x: iqns.pop()) self.stubs.Set(self.connector, '_disconnect_from_iscsi_portal', fake_disconnect_from_iscsi_portal) + self.stubs.Set(os.path, 'exists', lambda x: True) fake_property = {'target_portal': portal, 'target_iqn': iqn1} self.connector._disconnect_volume_multipath_iscsi(fake_property, @@ -326,6 +327,35 @@ class ISCSIConnectorTestCase(ConnectorTestCase): lambda: []) self.stubs.Set(self.connector, '_disconnect_from_iscsi_portal', fake_disconnect_from_iscsi_portal) + self.stubs.Set(os.path, 'exists', lambda x: True) + 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) + + def test_disconnect_volume_multipath_iscsi_with_invalid_symlink(self): + result = [] + + def fake_disconnect_from_iscsi_portal(properties): + result.append(properties) + + portal = '10.0.0.1:3260' + name = 'volume-00000001' + iqn = 'iqn.2010-10.org.openstack:%s' % name + dev = ('ip-%s-iscsi-%s-lun-0' % (portal, iqn)) + 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: [dev, '/dev/mapper/md-1']) + self.stubs.Set(self.connector, '_disconnect_from_iscsi_portal', + fake_disconnect_from_iscsi_portal) + # Simulate a broken symlink by returning False for os.path.exists(dev) + self.stubs.Set(os.path, 'exists', lambda x: False) fake_property = {'target_portal': portal, 'target_iqn': iqn} self.connector._disconnect_volume_multipath_iscsi(fake_property, From 787b328518b2eec8275956835ae16488644e7d87 Mon Sep 17 00:00:00 2001 From: Juan Zuluaga Date: Tue, 16 Sep 2014 11:23:36 -0400 Subject: [PATCH 08/16] ZFSSA iSCSI driver cannot add multple initiators to a group All initiators defined in zfssa_initiator property would be added to the group. Also fixed some typos related to initiators error messages. Change-Id: Iec6c90702e5aafa153b4a7f1e429974ac450afc0 Closes-Bug: #1369750 (cherry picked from commit f94d671e627dd7b5143422ffe739418fcfb51a70) --- cinder/tests/test_zfssa.py | 39 ++++++++++++++++++------ cinder/volume/drivers/zfssa/zfssarest.py | 25 ++++++++++++--- 2 files changed, 50 insertions(+), 14 deletions(-) diff --git a/cinder/tests/test_zfssa.py b/cinder/tests/test_zfssa.py index 49a55e6f6e4..dd555d827eb 100644 --- a/cinder/tests/test_zfssa.py +++ b/cinder/tests/test_zfssa.py @@ -17,11 +17,15 @@ Unit tests for Oracle's ZFSSA Cinder volume driver import mock +from json import JSONEncoder + from cinder.openstack.common import log as logging from cinder.openstack.common import units from cinder import test from cinder.volume import configuration as conf +from cinder.volume.drivers.zfssa import restclient as client from cinder.volume.drivers.zfssa import zfssaiscsi as iscsi +from cinder.volume.drivers.zfssa import zfssarest as rest LOG = logging.getLogger(__name__) @@ -69,15 +73,9 @@ class FakeZFSSA(object): return out def add_to_initiatorgroup(self, init, initgrp): - out = {} - if not self.host or not self.user: - return out - - out = {"href": "fake_href", - "name": "fake_initgrp", - "initiators": ["fake_iqn.1993-08.org.fake:01:000000000000"] - } - return out + r = rest.ZFSSAApi() + type(r).rclient = mock.PropertyMock(return_value=FakeAddIni2InitGrp()) + r.add_to_initiatorgroup(init, initgrp) def create_target(self, tgtalias, inter, tchapuser, tchapsecret): out = {} @@ -257,7 +255,7 @@ class TestZFSSAISCSIDriver(test.TestCase): self.configuration.zfssa_lun_compression = 'off' self.configuration.zfssa_initiator_group = 'test-init-grp1' self.configuration.zfssa_initiator = \ - 'iqn.1993-08.org.debian:01:daa02db2a827' + 'iqn.1-0.org.deb:01:d7, iqn.1-0.org.deb:01:d9' self.configuration.zfssa_initiator_user = '' self.configuration.zfssa_initiator_password = '' self.configuration.zfssa_target_group = 'test-target-grp1' @@ -304,3 +302,24 @@ class TestZFSSAISCSIDriver(test.TestCase): def tearDown(self): super(TestZFSSAISCSIDriver, self).tearDown() + + +class FakeAddIni2InitGrp(object): + + def get(self, path, **kwargs): + result = client.RestResult() + result.status = client.Status.OK + result.data = JSONEncoder().encode({'group': + {'initiators': + ['iqn.1-0.org.deb:01:d7']}}) + return result + + def put(self, path, body="", **kwargs): + result = client.RestResult() + result.status = client.Status.ACCEPTED + return result + + def post(self, path, body="", **kwargs): + result = client.RestResult() + result.status = client.Status.CREATED + return result diff --git a/cinder/volume/drivers/zfssa/zfssarest.py b/cinder/volume/drivers/zfssa/zfssarest.py index b86294e4cfe..762951374ae 100644 --- a/cinder/volume/drivers/zfssa/zfssarest.py +++ b/cinder/volume/drivers/zfssa/zfssarest.py @@ -149,7 +149,7 @@ class ZFSSAApi(object): ret = self.rclient.post(svc, arg) if ret.status != restclient.Status.CREATED: - exception_msg = (_('Error Creating Initator: ' + exception_msg = (_('Error Creating Initiator: ' '%(initiator)s on ' 'Alias: %(alias)s ' 'Return code: %(ret.status)d ' @@ -173,7 +173,7 @@ class ZFSSAApi(object): } ret = self.rclient.post(svc, arg) if ret.status != restclient.Status.CREATED: - exception_msg = (_('Error Adding Initator: ' + exception_msg = (_('Error Adding Initiator: ' '%(initiator)s on group' 'InitiatorGroup: %(initiatorgroup)s ' 'Return code: %(ret.status)d ' @@ -185,13 +185,30 @@ class ZFSSAApi(object): LOG.error(exception_msg) raise exception.VolumeBackendAPIException(data=exception_msg) else: + val = json.loads(ret.data) + inits = val['group']['initiators'] + if inits is None: + exception_msg = (_('Error Getting Initiators: ' + 'InitiatorGroup: %(initiatorgroup)s ' + 'Return code: %(ret.status)d ' + 'Message: %(ret.data)s .') + % {'initiatorgroup': initiatorgroup, + 'ret.status': ret.status, + 'ret.data': ret.data}) + LOG.error(exception_msg) + raise exception.VolumeBackendAPIException(data=exception_msg) + + if initiator in inits: + return + + inits.append(initiator) svc = '/api/san/v1/iscsi/initiator-groups/' + initiatorgroup arg = { - 'initiators': [initiator] + 'initiators': inits } ret = self.rclient.put(svc, arg) if ret.status != restclient.Status.ACCEPTED: - exception_msg = (_('Error Adding Initator: ' + exception_msg = (_('Error Adding Initiator: ' '%(initiator)s on group' 'InitiatorGroup: %(initiatorgroup)s ' 'Return code: %(ret.status)d ' From 04cd35fd88768ec0f5d23619cec2df4981ee7d8c Mon Sep 17 00:00:00 2001 From: Sean McGinnis Date: Fri, 26 Sep 2014 15:21:35 -0500 Subject: [PATCH 09/16] Handle eqlx SSH connection close on abort. EqualLogic array CLI operation timeout causes the SSH thread to be aborted. This would cause SSH sessions to be orphaned and hit a max connection limit on the array. This fix catches these aborts and makes sure the connection is closed. Change-Id: I9392fd5dd79eb44f252bf50217f17cc473e6f2f0 Closes-Bug: 1374613 (cherry picked from commit 5cb23b67c53437fc51a6b37acac477fba4d6a7ab) --- cinder/volume/drivers/eqlx.py | 47 ++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/cinder/volume/drivers/eqlx.py b/cinder/volume/drivers/eqlx.py index ab54ca15620..a4a778c6790 100644 --- a/cinder/volume/drivers/eqlx.py +++ b/cinder/volume/drivers/eqlx.py @@ -151,29 +151,36 @@ class DellEQLSanISCSIDriver(SanISCSIDriver): def _ssh_execute(self, ssh, command, *arg, **kwargs): transport = ssh.get_transport() chan = transport.open_session() - chan.invoke_shell() + completed = False - LOG.debug("Reading CLI MOTD") - self._get_output(chan) + try: + chan.invoke_shell() - cmd = 'stty columns 255' - LOG.debug("Setting CLI terminal width: '%s'.", cmd) - chan.send(cmd + '\r') - out = self._get_output(chan) + LOG.debug("Reading CLI MOTD") + self._get_output(chan) - LOG.debug("Sending CLI command: '%s'.", command) - chan.send(command + '\r') - out = 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) - chan.close() + LOG.debug("Sending CLI command: '%s'", command) + chan.send(command + '\r') + out = self._get_output(chan) - 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 + completed = True + + if any(ln.startswith(('% Error', 'Error:')) for ln 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 + finally: + if not completed: + LOG.debug("Timed out executing command: '%s'", command) + chan.close() def _run_ssh(self, cmd_list, attempts=1): utils.check_ssh_injection(cmd_list) @@ -295,11 +302,11 @@ class DellEQLSanISCSIDriver(SanISCSIDriver): and returns the correct connection id. """ lines = [line for line in out if line != ''] - #Every record has 2 lines + # Every record has 2 lines for i in xrange(0, len(lines), 2): try: int(lines[i][0]) - #sanity check + # sanity check if len(lines[i + 1].split()) == 1: check = lines[i].split()[1] + lines[i + 1].strip() if connector['initiator'] == check: From a8cec39f8243fd4ee6c0a16fc0620d4b0980c749 Mon Sep 17 00:00:00 2001 From: Juan Zuluaga Date: Wed, 24 Sep 2014 18:51:07 -0400 Subject: [PATCH 10/16] ZFSSA iSCSI vol create fails with vol type option Vol create with volume-type option is not working since volume_backend_name contains the class name as predefined string. No matter what was specified in cinder.conf as volume_backend_name, volume creation failed. Multi-backend option and using extra specs to create custom volumes won't work. The fix is to look whether volume_backend_name is part of the configuration or falls into the class name in case there is no backend name. Closes-Bug: 1373621 DocImpact (cherry picked from commit 5c61d57d3693523e9cbf11bf0b5b09bafe699247) Change-Id: I1bc501dd4c5689d96c7beb720b64112df1770232 --- cinder/volume/drivers/zfssa/zfssaiscsi.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cinder/volume/drivers/zfssa/zfssaiscsi.py b/cinder/volume/drivers/zfssa/zfssaiscsi.py index ade95d73cf8..f2c781fbe00 100644 --- a/cinder/volume/drivers/zfssa/zfssaiscsi.py +++ b/cinder/volume/drivers/zfssa/zfssaiscsi.py @@ -283,7 +283,8 @@ class ZFSSAISCSIDriver(driver.ISCSIDriver): LOG.debug("Updating volume status") self._stats = None data = {} - data["volume_backend_name"] = self.__class__.__name__ + backend_name = self.configuration.safe_get('volume_backend_name') + data["volume_backend_name"] = backend_name or self.__class__.__name__ data["vendor_name"] = 'Oracle' data["driver_version"] = self.VERSION data["storage_protocol"] = self.protocol From aaecfcf15e6b9defde5822453f2ae97aaf959408 Mon Sep 17 00:00:00 2001 From: John Griffith Date: Tue, 7 Oct 2014 11:49:58 -0600 Subject: [PATCH 11/16] Make sure device support Direct before setting We added '-t none' option to the qemu-img convert operation in image_utils.py a while back to accomodate a couple of backend devices that didn't flush writes on disconnect. (Change: I7a04f683add8c23b9125fe837c4048ccc3ac224d) The only problem here is that some backend devices don't support Direct mode and raise an exception and fail when setting this option. This patch adds a simple check using dd to see if the dest supports the Direct flag and only sets '-t none' if the device does in fact support it. Additionally it was brought up that even yet other backends are using file devices not blk devices. In their case setting Direct will still work, however it's sub-optimal as qemu-convert has internal mechanisms to make sure flushing etc are done correctly and efficiently for those devices. So to accomodate that particular use case I'm also adding a check if blk dev that can be used for determining whether to set Direct for the qemu-convert process. Change-Id: I34127ac373ceadcfb6fc2662628b1a91eb7b0046 Closes-Bug: 1375487 (cherry picked from commit c42273fbc1983b146180c82b8a34b0d832a6f431) --- cinder/image/image_utils.py | 25 +++++++++++--- cinder/tests/test_image_utils.py | 54 +++++++++++++++++++++++++++---- cinder/tests/test_volume.py | 4 +++ cinder/tests/test_volume_utils.py | 7 ++++ cinder/utils.py | 10 ++++++ cinder/volume/utils.py | 24 +++++++++----- 6 files changed, 104 insertions(+), 20 deletions(-) diff --git a/cinder/image/image_utils.py b/cinder/image/image_utils.py index c7a0e3df2c0..361e36fc1a0 100644 --- a/cinder/image/image_utils.py +++ b/cinder/image/image_utils.py @@ -63,13 +63,28 @@ def qemu_img_info(path): def convert_image(source, dest, out_format, bps_limit=None): """Convert image to other format.""" - start_time = timeutils.utcnow() - # Always set -t none. First it is needed for cgroup io/limiting - # and it is needed to ensure that all data hit the device before - # it gets unmapped remotely from the host + cmd = ('qemu-img', 'convert', - '-t', 'none', '-O', out_format, source, dest) + + # Check whether O_DIRECT is supported and set '-t none' if it is + # This is needed to ensure that all data hit the device before + # it gets unmapped remotely from the host for some backends + # Reference Bug: #1363016 + + # NOTE(jdg): In the case of file devices qemu does the + # flush properly and more efficiently than would be done + # setting O_DIRECT, so check for that and skip the + # setting for non BLK devs + if (utils.is_blk_device(dest) and + volume_utils.check_for_odirect_support(source, + dest, + 'oflag=direct')): + cmd = ('qemu-img', 'convert', + '-t', 'none', + '-O', out_format, source, dest) + + start_time = timeutils.utcnow() cgcmd = volume_utils.setup_blkio_cgroup(source, dest, bps_limit) if cgcmd: cmd = tuple(cgcmd) + cmd diff --git a/cinder/tests/test_image_utils.py b/cinder/tests/test_image_utils.py index 150762d82c1..86168c012c9 100644 --- a/cinder/tests/test_image_utils.py +++ b/cinder/tests/test_image_utils.py @@ -84,11 +84,16 @@ class TestUtils(test.TestCase): mox = self._mox mox.StubOutWithMock(utils, 'execute') + mox.StubOutWithMock(utils, 'is_blk_device') TEST_OUT_FORMAT = 'vmdk' TEST_SOURCE = 'img/qemu.img' TEST_DEST = '/img/vmware.vmdk' + utils.is_blk_device(TEST_DEST).AndReturn(True) + utils.execute('dd', 'count=0', 'if=img/qemu.img', + 'of=/img/vmware.vmdk', 'oflag=direct', + run_as_root=True) utils.execute( 'qemu-img', 'convert', '-t', 'none', '-O', TEST_OUT_FORMAT, TEST_SOURCE, TEST_DEST, run_as_root=True) @@ -207,12 +212,14 @@ class TestUtils(test.TestCase): mox.StubOutWithMock(utils, 'execute') mox.StubOutWithMock(image_utils, 'fetch') mox.StubOutWithMock(volume_utils, 'setup_blkio_cgroup') + mox.StubOutWithMock(utils, 'is_blk_device') TEST_INFO = ("image: qemu.qcow2\n" "file format: raw\n" "virtual size: 0 (0 bytes)\n" "disk size: 0") + utils.is_blk_device(self.TEST_DEV_PATH).AndReturn(True) CONF.set_override('volume_copy_bps_limit', bps_limit) image_utils.create_temporary_file().AndReturn(self.TEST_DEV_PATH) @@ -239,6 +246,11 @@ class TestUtils(test.TestCase): prefix = ('cgexec', '-g', 'blkio:test') else: prefix = () + + utils.execute('dd', 'count=0', 'if=/dev/ether/fake_dev', + 'of=/dev/ether/fake_dev', 'oflag=direct', + run_as_root=True) + cmd = prefix + ('qemu-img', 'convert', '-t', 'none', '-O', 'raw', self.TEST_DEV_PATH, self.TEST_DEV_PATH) @@ -306,8 +318,6 @@ class TestUtils(test.TestCase): 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" @@ -321,7 +331,6 @@ class TestUtils(test.TestCase): 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" @@ -338,7 +347,6 @@ class TestUtils(test.TestCase): context, self._image_service, self.TEST_IMAGE_ID, self.TEST_DEV_PATH, mox.IgnoreArg()) - self._mox.VerifyAll() @mock.patch('os.stat') def test_fetch_to_raw_on_error_not_convert_to_raw(self, mock_stat): @@ -443,7 +451,8 @@ class TestUtils(test.TestCase): prefix = ('cgexec', '-g', 'blkio:test') else: prefix = () - cmd = prefix + ('qemu-img', 'convert', '-t', 'none', '-O', 'qcow2', + + cmd = prefix + ('qemu-img', 'convert', '-O', 'qcow2', mox.IgnoreArg(), mox.IgnoreArg()) m = self._mox @@ -452,6 +461,7 @@ class TestUtils(test.TestCase): volume_utils.setup_blkio_cgroup(mox.IgnoreArg(), mox.IgnoreArg(), bps_limit).AndReturn(prefix) + utils.execute(*cmd, run_as_root=True) utils.execute( 'env', 'LC_ALL=C', 'qemu-img', 'info', @@ -466,8 +476,37 @@ class TestUtils(test.TestCase): @mock.patch('os.stat') def test_upload_volume_with_bps_limit(self, mock_stat): + bps_limit = 1048576 + 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)" - self.test_upload_volume(bps_limit=1048576) + CONF.set_override('volume_copy_bps_limit', bps_limit) + prefix = ('cgexec', '-g', 'blkio:test') + + cmd = prefix + ('qemu-img', 'convert', '-O', 'qcow2', + mox.IgnoreArg(), mox.IgnoreArg()) + + m = self._mox + m.StubOutWithMock(utils, 'execute') + m.StubOutWithMock(volume_utils, 'setup_blkio_cgroup') + m.StubOutWithMock(volume_utils, 'check_for_odirect_support') + + volume_utils.setup_blkio_cgroup(mox.IgnoreArg(), mox.IgnoreArg(), + bps_limit).AndReturn(prefix) + utils.execute(*cmd, 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'} @@ -493,8 +532,9 @@ class TestUtils(test.TestCase): m = self._mox m.StubOutWithMock(utils, 'execute') + m.StubOutWithMock(volume_utils, 'check_for_odirect_support') - utils.execute('qemu-img', 'convert', '-t', 'none', '-O', 'qcow2', + utils.execute('qemu-img', 'convert', '-O', 'qcow2', mox.IgnoreArg(), mox.IgnoreArg(), run_as_root=True) utils.execute( 'env', 'LC_ALL=C', 'qemu-img', 'info', diff --git a/cinder/tests/test_volume.py b/cinder/tests/test_volume.py index f99238b10be..b8acbf35690 100644 --- a/cinder/tests/test_volume.py +++ b/cinder/tests/test_volume.py @@ -920,6 +920,9 @@ class VolumeTestCase(BaseVolumeTestCase): return inner_sync2 return inner_sync1 + def _fake_execute(self, *cmd, **kwargs): + pass + 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) @@ -989,6 +992,7 @@ class VolumeTestCase(BaseVolumeTestCase): 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) + self.stubs.Set(utils, 'execute', self._fake_execute) orig_flow = engine.ActionEngine.run diff --git a/cinder/tests/test_volume_utils.py b/cinder/tests/test_volume_utils.py index 6179ee7f0f5..04d0fc58f39 100644 --- a/cinder/tests/test_volume_utils.py +++ b/cinder/tests/test_volume_utils.py @@ -213,6 +213,13 @@ class CopyVolumeTestCase(test.TestCase): if 'iflag=direct' in cmd and 'oflag=direct' in cmd: raise exception.InvalidInput(message='iflag/oflag error') + def fake_check_odirect(src, dest, flags='blah'): + return False + + self.stubs.Set(volume_utils, + 'check_for_odirect_support', + fake_check_odirect) + volume_utils.copy_volume('/dev/zero', '/dev/null', 1024, CONF.volume_dd_blocksize, sync=True, ionice=None, execute=fake_utils_execute) diff --git a/cinder/utils.py b/cinder/utils.py index 1073a20fa99..8f27701c556 100644 --- a/cinder/utils.py +++ b/cinder/utils.py @@ -757,3 +757,13 @@ def remove_invalid_filter_options(context, filters, LOG.debug(log_msg) for opt in unknown_options: del filters[opt] + + +def is_blk_device(dev): + try: + if stat.S_ISBLK(os.stat(dev).st_mode): + return True + return False + except Exception: + LOG.debug('Path %s not found in is_blk_device check' % dev) + return False diff --git a/cinder/volume/utils.py b/cinder/volume/utils.py index d59dce8068e..56f5b0c6208 100644 --- a/cinder/volume/utils.py +++ b/cinder/volume/utils.py @@ -285,18 +285,26 @@ def _calculate_count(size_in_m, blocksize): return blocksize, int(count) +def check_for_odirect_support(src, dest, flag='oflag=direct'): + + # Check whether O_DIRECT is supported + try: + utils.execute('dd', 'count=0', 'if=%s' % src, 'of=%s' % dest, + flag, run_as_root=True) + return True + except processutils.ProcessExecutionError: + return False + + 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 = [] - # Check whether O_DIRECT is supported to iflag and oflag separately - for flag in ['iflag=direct', 'oflag=direct']: - try: - execute('dd', 'count=0', 'if=%s' % srcstr, 'of=%s' % deststr, - flag, run_as_root=True) - extra_flags.append(flag) - except processutils.ProcessExecutionError: - pass + if check_for_odirect_support(srcstr, deststr, 'iflag=direct'): + extra_flags.append('iflag=direct') + + if check_for_odirect_support(srcstr, deststr, 'oflag=direct'): + extra_flags.append('oflag=direct') # If the volume is being unprovisioned then # request the data is persisted before returning, From 8e94aaa2b28b491314fe8642061ac73e3fe8e966 Mon Sep 17 00:00:00 2001 From: Navneet Singh Date: Thu, 28 Aug 2014 16:03:41 +0530 Subject: [PATCH 12/16] NetApp fix eseries unit test mock clean This patch fixes the issue of mock not getting cleaned for requests in unit tests. Closes-Bug: #1353506 Change-Id: Iab401021d7f180ff1f2bf3ed79166699112cc367 (cherry picked from commit 140956515327494a53de6ad09c35690624248f0a) --- cinder/tests/test_netapp_eseries_iscsi.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cinder/tests/test_netapp_eseries_iscsi.py b/cinder/tests/test_netapp_eseries_iscsi.py index 7b1784514fe..5d2b983494b 100644 --- a/cinder/tests/test_netapp_eseries_iscsi.py +++ b/cinder/tests/test_netapp_eseries_iscsi.py @@ -640,7 +640,7 @@ class NetAppEseriesIscsiDriverTestCase(test.TestCase): def _custom_setup(self): configuration = self._set_config(create_configuration()) self.driver = common.NetAppDriver(configuration=configuration) - requests.Session = mock.Mock(wraps=FakeEseriesHTTPSession) + self.mock_object(requests, 'Session', FakeEseriesHTTPSession) self.driver.do_setup(context='context') self.driver.check_for_setup_error() From 900d49723f65e87658381ff955559f54ac98c487 Mon Sep 17 00:00:00 2001 From: Andreas Jaeger Date: Thu, 9 Oct 2014 12:25:28 +0200 Subject: [PATCH 13/16] Updated translations Commands run:- $ python setup.py extract_messages $ python setup.py update_catalog --no-fuzzy-matching \ --ignore-obsolete=true $ source \ ../openstack-infra/project-config/jenkins/scripts/common_translation_update.sh $ setup_loglevel_vars $ cleanup_po_files cinder Change-Id: I73f3bdccb4be98df95fa853864e465f4d83a8884 --- cinder/locale/cinder.pot | 837 +- .../locale/cs/LC_MESSAGES/cinder-log-error.po | 67 - .../en_GB/LC_MESSAGES/cinder-log-critical.po | 20 - cinder/locale/en_US/LC_MESSAGES/cinder.po | 12333 ---------------- .../fr/LC_MESSAGES/cinder-log-critical.po | 23 - .../locale/ru/LC_MESSAGES/cinder-log-error.po | 67 - .../te_IN/LC_MESSAGES/cinder-log-critical.po | 21 - .../te_IN/LC_MESSAGES/cinder-log-error.po | 67 - .../tr_TR/LC_MESSAGES/cinder-log-error.po | 66 - 9 files changed, 466 insertions(+), 13035 deletions(-) delete mode 100644 cinder/locale/cs/LC_MESSAGES/cinder-log-error.po delete mode 100644 cinder/locale/en_GB/LC_MESSAGES/cinder-log-critical.po delete mode 100644 cinder/locale/en_US/LC_MESSAGES/cinder.po delete mode 100644 cinder/locale/fr/LC_MESSAGES/cinder-log-critical.po delete mode 100644 cinder/locale/ru/LC_MESSAGES/cinder-log-error.po delete mode 100644 cinder/locale/te_IN/LC_MESSAGES/cinder-log-critical.po delete mode 100644 cinder/locale/te_IN/LC_MESSAGES/cinder-log-error.po delete mode 100644 cinder/locale/tr_TR/LC_MESSAGES/cinder-log-error.po diff --git a/cinder/locale/cinder.pot b/cinder/locale/cinder.pot index 8d13eba26c8..87bc6c48c5a 100644 --- a/cinder/locale/cinder.pot +++ b/cinder/locale/cinder.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: cinder 2014.2.dev127.gd5d2744\n" +"Project-Id-Version: cinder 2014.2.a19.gad0ff5e\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-09-24 06:03+0000\n" +"POT-Creation-Date: 2014-10-09 12:25+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -912,14 +912,12 @@ msgstr "" msgid "model server went away" msgstr "" -#: cinder/service.py:336 +#: cinder/service.py:335 #, python-format -msgid "" -"Value of config option %(name)s_workers must be integer greater than 1. " -"Input value ignored." +msgid "%(worker_name)s value of %(workers)d is invalid, must be greater than 0." msgstr "" -#: cinder/service.py:419 +#: cinder/service.py:420 msgid "serve() can only be called once" msgstr "" @@ -2521,36 +2519,36 @@ msgid "" " number: %(tries)s" msgstr "" -#: cinder/brick/initiator/connector.py:317 +#: cinder/brick/initiator/connector.py:318 #, python-format msgid "Could not find the iSCSI Initiator File %s" msgstr "" -#: cinder/brick/initiator/connector.py:610 +#: cinder/brick/initiator/connector.py:612 msgid "We are unable to locate any Fibre Channel devices" msgstr "" -#: cinder/brick/initiator/connector.py:630 +#: cinder/brick/initiator/connector.py:632 msgid "Fibre Channel volume device not found." msgstr "" -#: cinder/brick/initiator/connector.py:634 +#: cinder/brick/initiator/connector.py:636 #, python-format msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" msgstr "" -#: cinder/brick/initiator/connector.py:778 +#: cinder/brick/initiator/connector.py:780 #, python-format msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" msgstr "" -#: cinder/brick/initiator/connector.py:860 +#: cinder/brick/initiator/connector.py:862 msgid "" "Connection details not present. RemoteFsClient may not initialize " "properly." msgstr "" -#: cinder/brick/initiator/connector.py:917 +#: cinder/brick/initiator/connector.py:919 msgid "Invalid connection_properties specified no device_path attribute" msgstr "" @@ -2560,7 +2558,7 @@ msgstr "" #: cinder/brick/initiator/linuxscsi.py:104 #, python-format -msgid "Failed to flush IO buffers prior to removingdevice: (%(code)s)" +msgid "Failed to flush IO buffers prior to removing device: (%(code)s)" msgstr "" #: cinder/brick/initiator/linuxscsi.py:114 @@ -3112,56 +3110,56 @@ msgstr "" msgid "Error contacting glance server '%(netloc)s' for '%(method)s', %(extra)s." msgstr "" -#: cinder/image/image_utils.py:93 +#: cinder/image/image_utils.py:108 #, python-format msgid "Converted %(sz).2f MB image at %(mbps).2f MB/s" msgstr "" -#: cinder/image/image_utils.py:125 +#: cinder/image/image_utils.py:140 #, python-format msgid "Image download %(sz).2f MB at %(mbps).2f MB/s" msgstr "" -#: cinder/image/image_utils.py:139 cinder/image/image_utils.py:244 +#: cinder/image/image_utils.py:154 cinder/image/image_utils.py:259 msgid "'qemu-img info' parsing failed." msgstr "" -#: cinder/image/image_utils.py:146 +#: cinder/image/image_utils.py:161 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: cinder/image/image_utils.py:154 cinder/image/image_utils.py:237 +#: cinder/image/image_utils.py:169 cinder/image/image_utils.py:252 #, 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:202 +#: cinder/image/image_utils.py:217 #, 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:209 +#: cinder/image/image_utils.py:224 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:251 +#: cinder/image/image_utils.py:266 #, python-format msgid "fmt=%(fmt)s backed by:%(backing_file)s" msgstr "" -#: cinder/image/image_utils.py:270 +#: cinder/image/image_utils.py:285 #, python-format msgid "Converted to %(vol_format)s, but format is now %(file_format)s" msgstr "" -#: cinder/image/image_utils.py:307 +#: cinder/image/image_utils.py:322 #, python-format msgid "Converted to %(f1)s, but format is now %(f2)s" msgstr "" @@ -3345,11 +3343,11 @@ msgstr "" msgid "%r failed. Retrying." msgstr "" -#: cinder/openstack/common/processutils.py:247 +#: cinder/openstack/common/processutils.py:248 msgid "Environment not supported over SSH" msgstr "" -#: cinder/openstack/common/processutils.py:251 +#: cinder/openstack/common/processutils.py:252 msgid "process_input not supported over SSH" msgstr "" @@ -3623,20 +3621,20 @@ msgstr "" msgid "method is not exist " msgstr "" -#: cinder/tests/test_glusterfs.py:758 +#: cinder/tests/test_glusterfs.py:759 msgid "umount: : target is busy" msgstr "" -#: cinder/tests/test_glusterfs.py:773 +#: cinder/tests/test_glusterfs.py:774 msgid "umount: : some other error" msgstr "" -#: cinder/tests/test_glusterfs.py:904 +#: cinder/tests/test_glusterfs.py:905 #, python-format msgid "umount: %s: not mounted" msgstr "" -#: cinder/tests/test_glusterfs.py:916 cinder/tests/test_glusterfs.py:928 +#: cinder/tests/test_glusterfs.py:917 cinder/tests/test_glusterfs.py:929 #, python-format msgid "umount: %s: target is busy" msgstr "" @@ -3653,7 +3651,7 @@ msgid "" "\t%s" msgstr "" -#: cinder/tests/test_netapp.py:667 cinder/volume/drivers/netapp/iscsi.py:272 +#: cinder/tests/test_netapp.py:667 cinder/volume/drivers/netapp/iscsi.py:275 #, python-format msgid "No iscsi target details were found for LUN %s" msgstr "" @@ -3727,7 +3725,7 @@ msgstr "" msgid "Value is invalid" msgstr "" -#: cinder/tests/brick/test_brick_connector.py:462 +#: cinder/tests/brick/test_brick_connector.py:492 msgid "in fixed duration looping call" msgstr "" @@ -3820,7 +3818,7 @@ msgstr "" #: cinder/transfer/api.py:187 #, python-format -msgid "Failed to update quota donating volumetransfer id %s" +msgid "Failed to update quota donating volume transfer id %s" msgstr "" #: cinder/transfer/api.py:204 @@ -4626,17 +4624,17 @@ msgid "" "'volume_dd_blocksize' was configured incorrectly. Fall back to default." msgstr "" -#: cinder/volume/utils.py:336 +#: cinder/volume/utils.py:344 #, python-format msgid "Volume copy %(size_in_m).2f MB at %(mbps).2f MB/s" msgstr "" -#: cinder/volume/utils.py:355 +#: cinder/volume/utils.py:363 #, python-format msgid "Performing secure delete on volume: %s" msgstr "" -#: cinder/volume/utils.py:380 +#: cinder/volume/utils.py:388 #, python-format msgid "Elapsed time for clear volume: %.2f sec" msgstr "" @@ -4725,100 +4723,99 @@ msgstr "" msgid "Request to Datera cluster returned bad status: %(status)s | %(reason)s" msgstr "" -#: cinder/volume/drivers/eqlx.py:171 +#: cinder/volume/drivers/eqlx.py:174 msgid "Error executing EQL command" msgstr "" -#: cinder/volume/drivers/eqlx.py:202 +#: cinder/volume/drivers/eqlx.py:209 #, python-format -msgid "EQL-driver: executing \"%s\"" +msgid "EQL-driver: executing \"%s\"." msgstr "" -#: cinder/volume/drivers/eqlx.py:211 +#: cinder/volume/drivers/eqlx.py:218 #, python-format msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" msgstr "" -#: cinder/volume/drivers/eqlx.py:218 cinder/volume/drivers/san/san.py:151 -#: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:417 -#: cinder/zonemanager/drivers/cisco/cisco_fc_san_lookup_service.py:271 -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_client_cli.py:397 +#: cinder/volume/drivers/eqlx.py:225 #, python-format -msgid "Error running SSH command: %s" +msgid "Error running SSH command: \"%s\"." msgstr "" -#: cinder/volume/drivers/eqlx.py:325 +#: cinder/volume/drivers/eqlx.py:332 #, python-format -msgid "EQL-driver: Setup is complete, group IP is %s" +msgid "EQL-driver: Setup is complete, group IP is \"%s\"." msgstr "" -#: cinder/volume/drivers/eqlx.py:329 -msgid "Failed to setup the Dell EqualLogic driver" +#: cinder/volume/drivers/eqlx.py:336 +msgid "Failed to setup the Dell EqualLogic driver." msgstr "" -#: cinder/volume/drivers/eqlx.py:346 +#: cinder/volume/drivers/eqlx.py:353 #, python-format -msgid "Failed to create volume %s" +msgid "Failed to create volume \"%s\"." msgstr "" -#: cinder/volume/drivers/eqlx.py:356 +#: cinder/volume/drivers/eqlx.py:363 #, python-format -msgid "Failed to add multi-host access for volume %s" +msgid "Failed to add multihost-access for volume \"%s\"." msgstr "" -#: cinder/volume/drivers/eqlx.py:366 +#: cinder/volume/drivers/eqlx.py:374 #, python-format -msgid "Volume %s was not found while trying to delete it" +msgid "Volume %s was not found while trying to delete it." msgstr "" -#: cinder/volume/drivers/eqlx.py:370 +#: cinder/volume/drivers/eqlx.py:378 #, python-format -msgid "Failed to delete volume %s" +msgid "Failed to delete volume \"%s\"." msgstr "" -#: cinder/volume/drivers/eqlx.py:385 +#: cinder/volume/drivers/eqlx.py:393 #, python-format -msgid "Failed to create snapshot of volume %s" +msgid "Failed to create snapshot of volume \"%s\"." msgstr "" -#: cinder/volume/drivers/eqlx.py:399 +#: cinder/volume/drivers/eqlx.py:407 #, python-format -msgid "Failed to create volume from snapshot %s" +msgid "Failed to create volume from snapshot \"%s\"." msgstr "" -#: cinder/volume/drivers/eqlx.py:413 +#: cinder/volume/drivers/eqlx.py:421 #, python-format -msgid "Failed to create clone of volume %s" +msgid "Failed to create clone of volume \"%s\"." msgstr "" -#: cinder/volume/drivers/eqlx.py:423 +#: cinder/volume/drivers/eqlx.py:431 #, python-format -msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" +msgid "Failed to delete snapshot %(snap)s of volume %(vol)s." msgstr "" -#: cinder/volume/drivers/eqlx.py:444 +#: cinder/volume/drivers/eqlx.py:452 #, python-format -msgid "Failed to initialize connection to volume %s" +msgid "Failed to initialize connection to volume \"%s\"." msgstr "" -#: cinder/volume/drivers/eqlx.py:458 +#: cinder/volume/drivers/eqlx.py:467 #, python-format -msgid "Failed to terminate connection to volume %s" +msgid "Failed to terminate connection to volume \"%s\"." msgstr "" -#: cinder/volume/drivers/eqlx.py:479 +#: cinder/volume/drivers/eqlx.py:489 #, python-format -msgid "Volume %s is not found!, it may have been deleted" +msgid "Volume %s is not found!, it may have been deleted." msgstr "" -#: cinder/volume/drivers/eqlx.py:483 +#: cinder/volume/drivers/eqlx.py:493 #, python-format -msgid "Failed to ensure export of volume %s" +msgid "Failed to ensure export of volume \"%s\"." msgstr "" -#: cinder/volume/drivers/eqlx.py:502 +#: cinder/volume/drivers/eqlx.py:512 #, python-format -msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" +msgid "" +"Failed to extend_volume %(name)s from %(current_size)sGB to " +"%(new_size)sGB." msgstr "" #: cinder/volume/drivers/fujitsu_eternus_dx_common.py:160 @@ -5286,79 +5283,79 @@ msgstr "" msgid "Failed to refresh mounts, reason=%s" msgstr "" -#: cinder/volume/drivers/glusterfs.py:179 cinder/volume/drivers/remotefs.py:115 -#: cinder/volume/drivers/netapp/nfs.py:817 +#: cinder/volume/drivers/glusterfs.py:183 cinder/volume/drivers/remotefs.py:115 +#: cinder/volume/drivers/netapp/nfs.py:820 #, python-format msgid "casted to %s" msgstr "" -#: cinder/volume/drivers/glusterfs.py:233 cinder/volume/drivers/remotefs.py:167 +#: cinder/volume/drivers/glusterfs.py:238 cinder/volume/drivers/remotefs.py:167 #, python-format msgid "Volume %s does not have provider_location specified, skipping" msgstr "" -#: cinder/volume/drivers/glusterfs.py:312 +#: cinder/volume/drivers/glusterfs.py:317 msgid "Call to Nova delete snapshot failed" msgstr "" -#: cinder/volume/drivers/glusterfs.py:336 +#: cinder/volume/drivers/glusterfs.py:341 #, python-format msgid "Unable to delete snapshot %(id)s, status: %(status)s." msgstr "" -#: cinder/volume/drivers/glusterfs.py:349 +#: cinder/volume/drivers/glusterfs.py:354 #, python-format msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." msgstr "" -#: cinder/volume/drivers/glusterfs.py:398 +#: cinder/volume/drivers/glusterfs.py:403 #, python-format msgid "%s must be a valid raw or qcow2 image." msgstr "" -#: cinder/volume/drivers/glusterfs.py:424 cinder/volume/drivers/smbfs.py:442 +#: cinder/volume/drivers/glusterfs.py:429 cinder/volume/drivers/smbfs.py:446 msgid "Extend volume is only supported for this driver when no snapshots exist." msgstr "" -#: cinder/volume/drivers/glusterfs.py:432 +#: cinder/volume/drivers/glusterfs.py:437 #, python-format msgid "Unrecognized backing format: %s" msgstr "" -#: cinder/volume/drivers/glusterfs.py:450 +#: cinder/volume/drivers/glusterfs.py:455 #, python-format msgid "file already exists at %s" msgstr "" -#: cinder/volume/drivers/glusterfs.py:476 cinder/volume/drivers/remotefs.py:152 +#: cinder/volume/drivers/glusterfs.py:481 cinder/volume/drivers/remotefs.py:152 #, python-format msgid "Exception during mounting %s" msgstr "" -#: cinder/volume/drivers/glusterfs.py:548 +#: cinder/volume/drivers/glusterfs.py:553 msgid "Backup is not supported for GlusterFS volumes with snapshots." msgstr "" -#: cinder/volume/drivers/glusterfs.py:563 +#: cinder/volume/drivers/glusterfs.py:568 #, python-format msgid "" "No snapshots found in database, but %(path)s has backing file " "%(backing_file)s!" msgstr "" -#: cinder/volume/drivers/glusterfs.py:571 +#: cinder/volume/drivers/glusterfs.py:576 msgid "Backup is only supported for raw-formatted GlusterFS volumes." msgstr "" -#: cinder/volume/drivers/glusterfs.py:600 +#: cinder/volume/drivers/glusterfs.py:605 msgid "Call to Nova to create snapshot failed" msgstr "" -#: cinder/volume/drivers/glusterfs.py:622 +#: cinder/volume/drivers/glusterfs.py:627 msgid "Nova returned \"error\" status while creating snapshot." msgstr "" -#: cinder/volume/drivers/glusterfs.py:639 +#: cinder/volume/drivers/glusterfs.py:644 #, python-format msgid "Timed out while waiting for Nova update for creation of snapshot %s." msgstr "" @@ -5435,13 +5432,13 @@ msgstr "" msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" -#: cinder/volume/drivers/nfs.py:249 cinder/volume/drivers/smbfs.py:403 +#: cinder/volume/drivers/nfs.py:249 cinder/volume/drivers/smbfs.py:407 #: cinder/volume/drivers/netapp/nfs.py:620 #, python-format msgid "Extending volume %s." msgstr "" -#: cinder/volume/drivers/nfs.py:257 cinder/volume/drivers/smbfs.py:410 +#: cinder/volume/drivers/nfs.py:257 cinder/volume/drivers/smbfs.py:414 #, python-format msgid "Resizing file to %sG..." msgstr "" @@ -5783,7 +5780,7 @@ msgstr "" msgid "Failed to Extend Volume %(volname)s" msgstr "" -#: cinder/volume/drivers/remotefs.py:267 cinder/volume/drivers/smbfs.py:522 +#: cinder/volume/drivers/remotefs.py:267 cinder/volume/drivers/smbfs.py:529 #, python-format msgid "Expected volume size was %d" msgstr "" @@ -5807,63 +5804,68 @@ msgstr "" msgid "'active' must be present when writing snap_info." msgstr "" -#: cinder/volume/drivers/remotefs.py:548 +#: cinder/volume/drivers/remotefs.py:445 +#, python-format +msgid "File %(path)s has invalid backing file %(bfile)s, aborting." +msgstr "" + +#: cinder/volume/drivers/remotefs.py:563 #, python-format msgid "" "Share at %(dir)s is not writable by the Cinder volume service. Snapshot " "operations will not be supported." msgstr "" -#: cinder/volume/drivers/remotefs.py:601 +#: cinder/volume/drivers/remotefs.py:616 #, python-format msgid "Cloning volume %(src)s to volume %(dst)s" msgstr "" -#: cinder/volume/drivers/remotefs.py:606 +#: cinder/volume/drivers/remotefs.py:621 msgid "Volume status must be 'available'." msgstr "" -#: cinder/volume/drivers/remotefs.py:645 +#: cinder/volume/drivers/remotefs.py:660 #, python-format msgid "Deleting stale snapshot: %s" msgstr "" -#: cinder/volume/drivers/remotefs.py:669 +#: cinder/volume/drivers/remotefs.py:684 msgid "Volume status must be \"available\" or \"in-use\"." msgstr "" -#: cinder/volume/drivers/remotefs.py:685 +#: cinder/volume/drivers/remotefs.py:700 #, python-format msgid "" "Snapshot record for %s is not present, allowing snapshot_delete to " "proceed." msgstr "" -#: cinder/volume/drivers/remotefs.py:711 +#: cinder/volume/drivers/remotefs.py:728 #, python-format msgid "No backing file found for %s, allowing snapshot to be deleted." msgstr "" -#: cinder/volume/drivers/remotefs.py:782 +#: cinder/volume/drivers/remotefs.py:801 #, python-format msgid "No file found with %s as backing file." msgstr "" -#: cinder/volume/drivers/remotefs.py:791 +#: cinder/volume/drivers/remotefs.py:810 #, python-format msgid "No snap found with %s as backing file." msgstr "" -#: cinder/volume/drivers/remotefs.py:820 +#: cinder/volume/drivers/remotefs.py:839 #, python-format msgid "Check condition failed: %s expected to be None." msgstr "" -#: cinder/volume/drivers/remotefs.py:835 +#: cinder/volume/drivers/remotefs.py:854 msgid "Snapshot status must be \"available\" to clone." msgstr "" -#: cinder/volume/drivers/remotefs.py:964 +#: cinder/volume/drivers/remotefs.py:984 #, python-format msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" msgstr "" @@ -5899,70 +5901,70 @@ msgstr "" msgid "Sheepdog is not working" msgstr "" -#: cinder/volume/drivers/smbfs.py:131 +#: cinder/volume/drivers/smbfs.py:135 msgid "SMBFS config file not set (smbfs_shares_config)." msgstr "" -#: cinder/volume/drivers/smbfs.py:135 +#: cinder/volume/drivers/smbfs.py:139 #, python-format msgid "SMBFS config file at %(config)s doesn't exist." msgstr "" -#: cinder/volume/drivers/smbfs.py:140 +#: cinder/volume/drivers/smbfs.py:144 #, python-format msgid "Invalid mount point base: %s" msgstr "" -#: cinder/volume/drivers/smbfs.py:144 +#: cinder/volume/drivers/smbfs.py:148 #, python-format msgid "SMBFS config 'smbfs_oversub_ratio' invalid. Must be > 0: %s" msgstr "" -#: cinder/volume/drivers/smbfs.py:153 +#: cinder/volume/drivers/smbfs.py:157 #, python-format msgid "SMBFS config 'smbfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" msgstr "" -#: cinder/volume/drivers/smbfs.py:204 cinder/volume/drivers/ibm/ibmnas.py:287 +#: cinder/volume/drivers/smbfs.py:208 cinder/volume/drivers/ibm/ibmnas.py:287 #, python-format msgid "Volume %s does not have provider_location specified, skipping." msgstr "" -#: cinder/volume/drivers/smbfs.py:226 +#: cinder/volume/drivers/smbfs.py:230 msgid "qemu-img is not installed." msgstr "" -#: cinder/volume/drivers/smbfs.py:238 +#: cinder/volume/drivers/smbfs.py:242 msgid "" "This version of qemu-img does not support vhdx images. Please upgrade to " "1.7 or greater." msgstr "" -#: cinder/volume/drivers/smbfs.py:258 +#: cinder/volume/drivers/smbfs.py:262 #, python-format msgid "File already exists at %s." msgstr "" -#: cinder/volume/drivers/smbfs.py:375 +#: cinder/volume/drivers/smbfs.py:379 msgid "This driver does not support snapshotting in-use volumes." msgstr "" -#: cinder/volume/drivers/smbfs.py:379 +#: cinder/volume/drivers/smbfs.py:383 msgid "This driver does not support deleting in-use snapshots." msgstr "" -#: cinder/volume/drivers/smbfs.py:391 +#: cinder/volume/drivers/smbfs.py:395 #, python-format msgid "Snapshots are not supported for this volume format: %s" msgstr "" -#: cinder/volume/drivers/smbfs.py:505 +#: cinder/volume/drivers/smbfs.py:510 msgid "" "Unsupported volume format: vhdx. qemu-img 1.7 or higher is required in " "order to properly support this format." msgstr "" -#: cinder/volume/drivers/smbfs.py:523 +#: cinder/volume/drivers/smbfs.py:530 #, python-format msgid " but size is now %d." msgstr "" @@ -8087,7 +8089,7 @@ msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:438 -msgid "validate_connector: The FC driver requires thewwpns in the connector." +msgid "validate_connector: The FC driver requires the wwpns in the connector." msgstr "" #: cinder/volume/drivers/huawei/huawei_t.py:582 @@ -8718,194 +8720,194 @@ msgid "" "limit of 2 copies." msgstr "" -#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:948 -#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:975 +#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:953 +#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:980 #, python-format msgid "No vdisk with the UID specified by source-id %s." msgstr "" -#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:968 +#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:973 msgid "Reference must contain source-id element." msgstr "" -#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:984 +#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:989 msgid "The specified vdisk is mapped to a host." msgstr "" -#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:1024 +#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:1029 msgid "Could not get pool data from the storage" msgstr "" -#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:1025 +#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:1030 msgid "_update_volume_stats: Could not get storage pool data" msgstr "" -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:50 +#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:56 #, python-format msgid "Could not find key in output of command %(cmd)s: %(out)s" msgstr "" -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:70 +#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:76 #, python-format msgid "Failed to get code level (%s)." msgstr "" -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:92 +#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:98 #, python-format msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" msgstr "" -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:149 +#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:155 #, python-format msgid "WWPN on node %(node)s: %(wwpn)s" msgstr "" -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:171 +#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:177 #, python-format msgid "Failed to find host %s" msgstr "" -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:244 +#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:250 msgid "create_host: Host name is not unicode or string" msgstr "" -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:255 +#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:261 msgid "create_host: No initiators or wwpns supplied." msgstr "" -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:338 +#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:344 #, 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:344 +#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:350 #, 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:356 +#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:362 #, 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:401 +#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:407 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:407 +#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:413 msgid "" "Illegal value specified for storwize_svc_vol_warning: set to a percentage" " (0-100)" msgstr "" -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:414 +#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:420 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:421 +#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:427 msgid "System does not support compression" msgstr "" -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:426 +#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:432 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:432 +#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:438 #, 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:441 +#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:447 #, 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:468 +#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:474 msgid "Protocol must be specified as ' iSCSI' or ' FC'." msgstr "" -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:483 +#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:489 msgid "Replication must be specified as ' True' or ' False'." msgstr "" -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:610 +#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:617 msgid "Failed to find a vdisk copy in the expected pool." msgstr "" -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:677 +#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:684 #, python-format msgid "" "Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " "%(attr)s" msgstr "" -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:687 +#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:694 #, 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:747 +#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:754 #, python-format msgid "Vdisk %(name)s not involved in mapping %(src)s -> %(tgt)s" msgstr "" -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:793 +#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:800 #, python-format msgid "Tried to delete non-existant vdisk %s." msgstr "" -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:807 +#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:814 #, python-format msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" msgstr "" -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:835 +#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:842 #, python-format msgid "" "add_vdisk_copy failed: A copy of volume %s exists. Adding another copy " "would exceed the limit of 2 copies." msgstr "" -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:842 +#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:849 msgid "add_vdisk_copy started without a vdisk copy in the expected pool." msgstr "" -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:915 +#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:953 msgid "" "Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." " %{count}s were returned." msgstr "" -#: cinder/volume/drivers/ibm/storwize_svc/replication.py:107 +#: cinder/volume/drivers/ibm/storwize_svc/replication.py:109 #, python-format msgid "Unable to create replica clone for volume %s" msgstr "" -#: cinder/volume/drivers/ibm/storwize_svc/replication.py:118 +#: cinder/volume/drivers/ibm/storwize_svc/replication.py:120 #, python-format msgid "" "Unable to promote replica to primary for volume %s. No secondary copy " "available." msgstr "" -#: cinder/volume/drivers/ibm/storwize_svc/replication.py:146 +#: cinder/volume/drivers/ibm/storwize_svc/replication.py:148 #, python-format msgid "Primary copy status: %(status)s and synchronized: %(sync)s" msgstr "" -#: cinder/volume/drivers/ibm/storwize_svc/replication.py:165 +#: cinder/volume/drivers/ibm/storwize_svc/replication.py:167 #, python-format msgid "" "Secondary copy status: %(status)s and synchronized: %(sync)s, sync " @@ -9033,176 +9035,176 @@ msgstr "" #: cinder/volume/drivers/netapp/iscsi.py:177 #: cinder/volume/drivers/netapp/nfs.py:808 -#: cinder/volume/drivers/netapp/nfs.py:1378 -#: cinder/volume/drivers/netapp/eseries/iscsi.py:312 +#: cinder/volume/drivers/netapp/nfs.py:1380 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:316 msgid "Pool is not available in the volume host field." msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:209 +#: cinder/volume/drivers/netapp/iscsi.py:212 #, python-format msgid "No entry in LUN table for volume/snapshot %(name)s." msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:261 +#: cinder/volume/drivers/netapp/iscsi.py:264 #, python-format msgid "Mapped LUN %(name)s to the initiator %(initiator_name)s" msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:266 +#: cinder/volume/drivers/netapp/iscsi.py:269 #, python-format msgid "" "Successfully fetched target details for LUN %(name)s and initiator " "%(initiator_name)s" msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:283 +#: cinder/volume/drivers/netapp/iscsi.py:286 #, python-format msgid "Failed to get target portal for the LUN %s" msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:286 +#: cinder/volume/drivers/netapp/iscsi.py:289 #, python-format msgid "Failed to get target IQN for the LUN %s" msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:344 -#: cinder/volume/drivers/netapp/iscsi.py:598 +#: cinder/volume/drivers/netapp/iscsi.py:347 +#: cinder/volume/drivers/netapp/iscsi.py:601 #: cinder/volume/drivers/netapp/nfs.py:111 #: cinder/volume/drivers/netapp/nfs.py:218 #, python-format msgid "Resizing %s failed. Cleaning volume." msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:359 +#: cinder/volume/drivers/netapp/iscsi.py:362 #, python-format msgid "Unmapped LUN %(name)s from the initiator %(initiator_name)s" msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:389 +#: cinder/volume/drivers/netapp/iscsi.py:392 #, python-format msgid "Error provisioning volume %(lun_name)s on %(volume_name)s. Details: %(ex)s" msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:455 +#: cinder/volume/drivers/netapp/iscsi.py:458 #, python-format msgid "Error mapping lun. Code :%(code)s, Message:%(message)s" msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:474 +#: cinder/volume/drivers/netapp/iscsi.py:477 #, python-format msgid "Error unmapping lun. Code :%(code)s, Message:%(message)s" msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:544 +#: cinder/volume/drivers/netapp/iscsi.py:547 msgid "Object is not a NetApp LUN." msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:576 +#: cinder/volume/drivers/netapp/iscsi.py:579 #, python-format msgid "Message: %s" msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:578 +#: cinder/volume/drivers/netapp/iscsi.py:581 #, python-format msgid "Error getting lun attribute. Exception: %s" msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:635 +#: cinder/volume/drivers/netapp/iscsi.py:638 #, python-format msgid "No need to extend volume %s as it is already the requested new size." msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:641 +#: cinder/volume/drivers/netapp/iscsi.py:644 #, python-format msgid "Resizing lun %s directly to new size." msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:668 +#: cinder/volume/drivers/netapp/iscsi.py:671 #, python-format msgid "Lun %(path)s geometry failed. Message - %(msg)s" msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:712 +#: cinder/volume/drivers/netapp/iscsi.py:715 #, python-format msgid "Resizing lun %s using sub clone to new size." msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:719 +#: cinder/volume/drivers/netapp/iscsi.py:722 #, python-format msgid "%s cannot be sub clone resized as it is hosted on compressed volume" msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:725 +#: cinder/volume/drivers/netapp/iscsi.py:728 #, python-format msgid "%s cannot be sub clone resized as it contains no blocks." msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:742 +#: cinder/volume/drivers/netapp/iscsi.py:745 #, python-format msgid "Post clone resize lun %s" msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:753 +#: cinder/volume/drivers/netapp/iscsi.py:756 #, python-format msgid "Failure staging lun %s to tmp." msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:758 +#: cinder/volume/drivers/netapp/iscsi.py:761 #, python-format msgid "Failure moving new cloned lun to %s." msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:762 +#: cinder/volume/drivers/netapp/iscsi.py:765 #, python-format msgid "Failure deleting staged tmp lun %s." msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:765 +#: cinder/volume/drivers/netapp/iscsi.py:768 #, python-format msgid "Unknown exception in post clone resize lun %s." msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:767 +#: cinder/volume/drivers/netapp/iscsi.py:770 #, python-format msgid "Exception details: %s" msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:776 +#: cinder/volume/drivers/netapp/iscsi.py:779 #, python-format msgid "Failure getting lun info for %s." msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:1022 +#: cinder/volume/drivers/netapp/iscsi.py:1025 #, python-format msgid "No cloned lun named %s found on the filer" msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:1193 -#: cinder/volume/drivers/netapp/nfs.py:1341 +#: cinder/volume/drivers/netapp/iscsi.py:1195 +#: cinder/volume/drivers/netapp/nfs.py:1343 msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:1197 -#: cinder/volume/drivers/netapp/nfs.py:1345 -#: cinder/volume/drivers/netapp/utils.py:328 +#: cinder/volume/drivers/netapp/iscsi.py:1199 +#: cinder/volume/drivers/netapp/nfs.py:1347 +#: cinder/volume/drivers/netapp/utils.py:336 msgid "Api version could not be determined." msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:1228 +#: cinder/volume/drivers/netapp/iscsi.py:1230 #, python-format msgid "Could not determine root volume name on %s." msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:1307 +#: cinder/volume/drivers/netapp/iscsi.py:1309 #, python-format msgid "Error finding luns for volume %s. Verify volume exists." msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:1568 +#: cinder/volume/drivers/netapp/iscsi.py:1570 msgid "Volume refresh job already running. Returning..." msgstr "" -#: cinder/volume/drivers/netapp/iscsi.py:1574 +#: cinder/volume/drivers/netapp/iscsi.py:1576 #, python-format msgid "Error refreshing volume info. Message: %s" msgstr "" @@ -9324,24 +9326,24 @@ msgstr "" msgid "No vserver set in config. SSC will be disabled." msgstr "" -#: cinder/volume/drivers/netapp/nfs.py:824 -#: cinder/volume/drivers/netapp/nfs.py:1388 +#: cinder/volume/drivers/netapp/nfs.py:827 +#: cinder/volume/drivers/netapp/nfs.py:1390 #, python-format msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" msgstr "" -#: cinder/volume/drivers/netapp/nfs.py:834 -#: cinder/volume/drivers/netapp/nfs.py:1393 +#: cinder/volume/drivers/netapp/nfs.py:837 +#: cinder/volume/drivers/netapp/nfs.py:1395 #, python-format msgid "Volume %s could not be created on shares." msgstr "" -#: cinder/volume/drivers/netapp/nfs.py:880 +#: cinder/volume/drivers/netapp/nfs.py:883 #, python-format msgid "No interface found on cluster for ip %s" msgstr "" -#: cinder/volume/drivers/netapp/nfs.py:921 +#: cinder/volume/drivers/netapp/nfs.py:924 #, python-format msgid "" "No volume on cluster with vserver\n" @@ -9350,52 +9352,52 @@ msgid "" " " msgstr "" -#: cinder/volume/drivers/netapp/nfs.py:928 +#: cinder/volume/drivers/netapp/nfs.py:931 #, 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:1037 +#: cinder/volume/drivers/netapp/nfs.py:1039 msgid "No shares found hence skipping ssc refresh." msgstr "" -#: cinder/volume/drivers/netapp/nfs.py:1167 +#: cinder/volume/drivers/netapp/nfs.py:1169 #, python-format msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." msgstr "" -#: cinder/volume/drivers/netapp/nfs.py:1174 +#: cinder/volume/drivers/netapp/nfs.py:1176 #, python-format msgid "Copy offload workflow unsuccessful. %s" msgstr "" -#: cinder/volume/drivers/netapp/nfs.py:1198 +#: cinder/volume/drivers/netapp/nfs.py:1200 #, python-format msgid "No vserver owning the ip %s." msgstr "" -#: cinder/volume/drivers/netapp/nfs.py:1234 +#: cinder/volume/drivers/netapp/nfs.py:1236 #, python-format msgid "Error in workflow copy from cache. %s." msgstr "" -#: cinder/volume/drivers/netapp/nfs.py:1254 +#: cinder/volume/drivers/netapp/nfs.py:1256 msgid "Source host details not found." msgstr "" -#: cinder/volume/drivers/netapp/nfs.py:1304 +#: cinder/volume/drivers/netapp/nfs.py:1306 #, python-format msgid "Converted to raw, but format is now %s." msgstr "" -#: cinder/volume/drivers/netapp/nfs.py:1382 +#: cinder/volume/drivers/netapp/nfs.py:1384 #, python-format msgid "Creating volume at location %s" msgstr "" -#: cinder/volume/drivers/netapp/nfs.py:1423 +#: cinder/volume/drivers/netapp/nfs.py:1425 #, python-format msgid "No storage path found for export path %s" msgstr "" @@ -9447,25 +9449,35 @@ msgid "" "apis. The following extra_specs will fail or be ignored: %s" msgstr "" -#: cinder/volume/drivers/netapp/utils.py:131 +#: cinder/volume/drivers/netapp/utils.py:139 #, python-format msgid "Failed to invoke ems. Message : %s" msgstr "" -#: cinder/volume/drivers/netapp/utils.py:144 +#: cinder/volume/drivers/netapp/utils.py:152 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:167 +#: cinder/volume/drivers/netapp/utils.py:175 msgid "Requires an NaServer instance." msgstr "" -#: cinder/volume/drivers/netapp/utils.py:325 +#: cinder/volume/drivers/netapp/utils.py:333 msgid "Unsupported Clustered Data ONTAP version." msgstr "" +#: cinder/volume/drivers/netapp/utils.py:380 +#, python-format +msgid "Extra spec %(old)s is obsolete. Use %(new)s instead." +msgstr "" + +#: cinder/volume/drivers/netapp/utils.py:385 +#, python-format +msgid "Extra spec %(old)s is deprecated. Use %(new)s instead." +msgstr "" + #: cinder/volume/drivers/netapp/eseries/client.py:46 msgid "One of the required inputs from host, port or scheme not found." msgstr "" @@ -9549,155 +9561,165 @@ msgstr "" msgid "Configured storage pools %s." msgstr "" -#: cinder/volume/drivers/netapp/eseries/iscsi.py:278 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:265 +#, python-format +msgid "Volume %s not found." +msgstr "" + +#: cinder/volume/drivers/netapp/eseries/iscsi.py:282 #, python-format msgid "No pit image found in snapshot group %s." msgstr "" -#: cinder/volume/drivers/netapp/eseries/iscsi.py:336 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:340 #, python-format msgid "Pools %s does not exist" msgstr "" -#: cinder/volume/drivers/netapp/eseries/iscsi.py:342 -#: cinder/volume/drivers/netapp/eseries/iscsi.py:357 -#: cinder/volume/drivers/netapp/eseries/iscsi.py:374 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:346 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:361 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:378 #, python-format msgid "Created volume with label %s." msgstr "" -#: cinder/volume/drivers/netapp/eseries/iscsi.py:345 -#: cinder/volume/drivers/netapp/eseries/iscsi.py:360 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:349 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:364 #, python-format msgid "Error creating volume. Msg - %s." msgstr "" -#: cinder/volume/drivers/netapp/eseries/iscsi.py:361 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:365 #, python-format msgid "Failure creating volume %s." msgstr "" -#: cinder/volume/drivers/netapp/eseries/iscsi.py:383 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:387 #, python-format msgid "Failure deleting snap vol. Error: %s." msgstr "" -#: cinder/volume/drivers/netapp/eseries/iscsi.py:385 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:389 msgid "Snapshot volume not found." msgstr "" -#: cinder/volume/drivers/netapp/eseries/iscsi.py:401 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:405 #, python-format msgid "Copying src vol %(src)s to dest vol %(dst)s." msgstr "" -#: cinder/volume/drivers/netapp/eseries/iscsi.py:414 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:418 #, python-format msgid "Vol copy job status %s." msgstr "" -#: cinder/volume/drivers/netapp/eseries/iscsi.py:415 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:419 #, python-format msgid "Vol copy job for dest %s failed." msgstr "" -#: cinder/volume/drivers/netapp/eseries/iscsi.py:418 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:422 #, python-format msgid "Vol copy job completed for dest %s." msgstr "" -#: cinder/volume/drivers/netapp/eseries/iscsi.py:426 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:430 #, python-format msgid "Failure deleting job %s." msgstr "" -#: cinder/volume/drivers/netapp/eseries/iscsi.py:428 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:432 #, python-format msgid "Volume copy job for src vol %s not found." msgstr "" -#: cinder/volume/drivers/netapp/eseries/iscsi.py:430 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:434 #, python-format msgid "Copy job to dest vol %s completed." msgstr "" -#: cinder/volume/drivers/netapp/eseries/iscsi.py:442 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:446 #, python-format msgid "Failure deleting temp snapshot %s." msgstr "" -#: cinder/volume/drivers/netapp/eseries/iscsi.py:451 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:455 #, python-format msgid "Volume %s already deleted." msgstr "" -#: cinder/volume/drivers/netapp/eseries/iscsi.py:475 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:479 #, python-format msgid "Created snap grp with label %s." msgstr "" -#: cinder/volume/drivers/netapp/eseries/iscsi.py:486 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:490 #, python-format msgid "Snapshot %s already deleted." msgstr "" -#: cinder/volume/drivers/netapp/eseries/iscsi.py:512 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:517 #, python-format msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." msgstr "" -#: cinder/volume/drivers/netapp/eseries/iscsi.py:515 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:520 #, python-format msgid "" "Successfully fetched target details for volume %(id)s and initiator " "%(initiator_name)s." msgstr "" -#: cinder/volume/drivers/netapp/eseries/iscsi.py:555 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:563 #, python-format -msgid "No good iscsi portal information found for %s." +msgid "No good iscsi portals found for %s." msgstr "" -#: cinder/volume/drivers/netapp/eseries/iscsi.py:580 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:575 #, python-format -msgid "Message - %s." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:595 -#, python-format -msgid "Host with port %(port)s and type %(type)s not found." +msgid "No good iscsi portal found in supplied list for %s." msgstr "" #: cinder/volume/drivers/netapp/eseries/iscsi.py:600 #, python-format +msgid "Message - %s." +msgstr "" + +#: cinder/volume/drivers/netapp/eseries/iscsi.py:615 +#, python-format +msgid "Host with port %(port)s and type %(type)s not found." +msgstr "" + +#: cinder/volume/drivers/netapp/eseries/iscsi.py:620 +#, python-format msgid "Creating host with port %s." msgstr "" -#: cinder/volume/drivers/netapp/eseries/iscsi.py:613 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:633 #, python-format msgid "Host type %s not supported." msgstr "" -#: cinder/volume/drivers/netapp/eseries/iscsi.py:623 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:643 msgid "No free luns. Host might exceeded max luns." msgstr "" -#: cinder/volume/drivers/netapp/eseries/iscsi.py:653 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:673 #, python-format msgid "Mapping not found for %(vol)s to host %(ht)s." msgstr "" -#: cinder/volume/drivers/netapp/eseries/iscsi.py:705 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:725 #, python-format msgid "No storage pool found with available capacity %s." msgstr "" -#: cinder/volume/drivers/netapp/eseries/iscsi.py:724 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:744 #, python-format msgid "Extended volume with label %s." msgstr "" -#: cinder/volume/drivers/netapp/eseries/iscsi.py:738 +#: cinder/volume/drivers/netapp/eseries/iscsi.py:758 msgid "Returning as clean tmp vol job already running." msgstr "" @@ -9931,7 +9953,6 @@ msgid "Flexvisor failed to unassign volume (get event) %(id)s." msgstr "" #: cinder/volume/drivers/prophetstor/dpl_fc.py:209 -#: cinder/volume/drivers/prophetstor/dpl_iscsi.py:138 #, python-format msgid "Flexvisor unassign volume failed:%(id)s:%(status)s." msgstr "" @@ -9999,7 +10020,17 @@ msgstr "" msgid "Flexvisor assign volume failed.:%(id)s:%(status)s." msgstr "" -#: cinder/volume/drivers/prophetstor/dpl_iscsi.py:155 +#: cinder/volume/drivers/prophetstor/dpl_iscsi.py:138 +#, python-format +msgid "Flexvisor already unassigned volume %(id)s." +msgstr "" + +#: cinder/volume/drivers/prophetstor/dpl_iscsi.py:142 +#, python-format +msgid "Flexvisor failed to unassign volume:%(id)s:%(status)s." +msgstr "" + +#: cinder/volume/drivers/prophetstor/dpl_iscsi.py:159 #, python-format msgid "Cannot get volume status %(exc)%s." msgstr "" @@ -10218,6 +10249,14 @@ msgstr "" msgid "Flexvisor failed to get pool info (failed to get event)%s." msgstr "" +#: cinder/volume/drivers/san/san.py:151 +#: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:417 +#: cinder/zonemanager/drivers/cisco/cisco_fc_san_lookup_service.py:271 +#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_client_cli.py:397 +#, python-format +msgid "Error running SSH command: %s" +msgstr "" + #: cinder/volume/drivers/san/san.py:171 msgid "Specify san_password or san_private_key" msgstr "" @@ -10752,6 +10791,20 @@ msgstr "" msgid "Error: unknown lease state %s." msgstr "" +#: cinder/volume/drivers/vmware/datastore.py:61 +#, python-format +msgid "Storage profile: %s cannot be found in vCenter." +msgstr "" + +#: cinder/volume/drivers/vmware/datastore.py:212 +msgid "Error occurred while selecting datastore." +msgstr "" + +#: cinder/volume/drivers/vmware/datastore.py:217 +#, python-format +msgid "Unable to fetch datastores connected to host %s." +msgstr "" + #: cinder/volume/drivers/vmware/error_util.py:64 msgid "VMware VMDK driver exception." msgstr "" @@ -10779,6 +10832,15 @@ msgstr "" msgid "There is no virtual disk device." msgstr "" +#: cinder/volume/drivers/vmware/error_util.py:95 +#, python-format +msgid "Storage profile: %(storage_profile)s not found." +msgstr "" + +#: cinder/volume/drivers/vmware/error_util.py:100 +msgid "There are no valid datastores." +msgstr "" + #: cinder/volume/drivers/vmware/io_util.py:130 #, python-format msgid "Glance image: %s is in killed state." @@ -10814,375 +10876,401 @@ msgstr "" msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." msgstr "" -#: cinder/volume/drivers/vmware/vim.py:184 +#: cinder/volume/drivers/vmware/vim.py:185 #, python-format msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." msgstr "" -#: cinder/volume/drivers/vmware/vim.py:193 +#: cinder/volume/drivers/vmware/vim.py:194 #, python-format msgid "httplib error in %(attr)s: %(excep)s." msgstr "" -#: cinder/volume/drivers/vmware/vim.py:201 +#: cinder/volume/drivers/vmware/vim.py:202 #, python-format msgid "urllib2 error in %(attr)s: %(excep)s." msgstr "" -#: cinder/volume/drivers/vmware/vim.py:210 +#: cinder/volume/drivers/vmware/vim.py:211 #, python-format msgid "Socket error in %(attr)s: %(excep)s." msgstr "" -#: cinder/volume/drivers/vmware/vim.py:219 +#: cinder/volume/drivers/vmware/vim.py:220 #, python-format msgid "Type error in %(attr)s: %(excep)s." msgstr "" -#: cinder/volume/drivers/vmware/vim.py:226 +#: cinder/volume/drivers/vmware/vim.py:227 #, python-format msgid "Error in %(attr)s. Detailed error: %(excep)s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:181 +#: cinder/volume/drivers/vmware/vmdk.py:182 #, python-format msgid "Invalid disk type: %s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:195 +#: cinder/volume/drivers/vmware/vmdk.py:196 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:247 +#: cinder/volume/drivers/vmware/vmdk.py:256 #, python-format msgid "%s not set." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:255 -#: cinder/volume/drivers/vmware/vmdk.py:1711 +#: cinder/volume/drivers/vmware/vmdk.py:264 +#: cinder/volume/drivers/vmware/vmdk.py:1900 #, python-format msgid "Successfully setup driver: %(driver)s for server: %(ip)s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:297 +#: cinder/volume/drivers/vmware/vmdk.py:306 #, python-format msgid "Not able to find a suitable datastore for the volume: %s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:320 +#: cinder/volume/drivers/vmware/vmdk.py:329 msgid "Backing not available, no operation to be performed." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:388 +#: cinder/volume/drivers/vmware/vmdk.py:397 #, python-format msgid "" "Unable to pick datastore to accommodate %(size)s bytes from the " "datastores: %(dss)s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:424 +#: cinder/volume/drivers/vmware/vmdk.py:437 #, python-format msgid "No such storage profile '%s; is defined in vCenter." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:451 +#: cinder/volume/drivers/vmware/vmdk.py:464 #, python-format msgid "Aborting since none of the datastores match the given storage profile %s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:456 +#: cinder/volume/drivers/vmware/vmdk.py:469 #, python-format msgid "" "Ignoring storage profile %s requirement for this volume since policy " "based placement is disabled." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:563 +#: cinder/volume/drivers/vmware/vmdk.py:585 #, 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:573 +#: cinder/volume/drivers/vmware/vmdk.py:595 #, python-format msgid "Unable to find host to accommodate a disk of size: %s in the inventory." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:604 +#: cinder/volume/drivers/vmware/vmdk.py:626 #, 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:614 +#: cinder/volume/drivers/vmware/vmdk.py:636 #, python-format msgid "Unable to create volume: %s in the inventory." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:640 +#: cinder/volume/drivers/vmware/vmdk.py:662 #, python-format msgid "There is no backing for the volume: %s. Need to create one." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:653 +#: cinder/volume/drivers/vmware/vmdk.py:675 #, python-format msgid "Trying to boot from an empty volume: %s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:662 +#: cinder/volume/drivers/vmware/vmdk.py:684 #, python-format msgid "" "Returning connection_info: %(info)s for volume: %(volume)s with " "connector: %(connector)s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:710 +#: cinder/volume/drivers/vmware/vmdk.py:732 #, python-format msgid "Snapshot of volume not supported in state: %s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:715 +#: cinder/volume/drivers/vmware/vmdk.py:737 #, python-format msgid "There is no backing, so will not create snapshot: %s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:720 +#: cinder/volume/drivers/vmware/vmdk.py:742 #, python-format msgid "Successfully created snapshot: %s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:741 +#: cinder/volume/drivers/vmware/vmdk.py:763 #, python-format msgid "Delete snapshot of volume not supported in state: %s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:746 +#: cinder/volume/drivers/vmware/vmdk.py:768 #, python-format msgid "There is no backing, and so there is no snapshot: %s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:750 +#: cinder/volume/drivers/vmware/vmdk.py:772 #, python-format msgid "Successfully deleted snapshot: %s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:791 +#: cinder/volume/drivers/vmware/vmdk.py:813 #, python-format msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:808 +#: cinder/volume/drivers/vmware/vmdk.py:830 #, 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:839 +#: cinder/volume/drivers/vmware/vmdk.py:861 #, 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:848 -#: cinder/volume/drivers/vmware/vmdk.py:1827 +#: cinder/volume/drivers/vmware/vmdk.py:870 +#: cinder/volume/drivers/vmware/vmdk.py:2030 #, 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:883 +#: cinder/volume/drivers/vmware/vmdk.py:905 #, python-format msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:922 +#: cinder/volume/drivers/vmware/vmdk.py:944 #, python-format msgid "Error occurred while deleting temporary disk: %s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:936 +#: cinder/volume/drivers/vmware/vmdk.py:958 #, python-format msgid "Error occurred while copying %(src)s to %(dst)s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:998 +#: cinder/volume/drivers/vmware/vmdk.py:1020 #, python-format msgid "Error occurred while copying image: %(image_id)s to %(path)s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:1008 +#: cinder/volume/drivers/vmware/vmdk.py:1030 #, python-format msgid "Error occurred while deleting descriptor: %s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:1037 +#: cinder/volume/drivers/vmware/vmdk.py:1059 #, python-format msgid "Error occurred while deleting backing: %s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:1122 +#: cinder/volume/drivers/vmware/vmdk.py:1144 #, python-format msgid "Error occured while creating volume: %(id)s from image: %(image_id)s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:1145 +#: cinder/volume/drivers/vmware/vmdk.py:1167 #, python-format msgid "Exception in _select_ds_for_volume: %s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:1189 +#: cinder/volume/drivers/vmware/vmdk.py:1211 #, python-format msgid "Exception in copy_image_to_volume: %s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:1193 +#: cinder/volume/drivers/vmware/vmdk.py:1215 #, python-format msgid "Deleting the backing: %s" msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:1197 +#: cinder/volume/drivers/vmware/vmdk.py:1219 #, python-format msgid "Done copying image: %(id)s to volume: %(vol)s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:1208 +#: cinder/volume/drivers/vmware/vmdk.py:1230 #, 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:1230 +#: cinder/volume/drivers/vmware/vmdk.py:1252 #, python-format msgid "Unable to extend the size of the vmdk virtual disk at the path %s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:1280 +#: cinder/volume/drivers/vmware/vmdk.py:1302 #, python-format msgid "Exception in copying the image to the volume: %s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:1317 +#: cinder/volume/drivers/vmware/vmdk.py:1339 msgid "Upload to glance of attached volume is not supported." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:1328 +#: cinder/volume/drivers/vmware/vmdk.py:1350 #, python-format msgid "Backing not found, creating for volume: %s" msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:1347 +#: cinder/volume/drivers/vmware/vmdk.py:1369 #, python-format msgid "Done copying volume %(vol)s to a new image %(img)s" msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:1364 -#: cinder/volume/drivers/vmware/vmdk.py:1393 +#: cinder/volume/drivers/vmware/vmdk.py:1398 +#, python-format +msgid "Volume: %s is in use, can't retype." +msgstr "" + +#: cinder/volume/drivers/vmware/vmdk.py:1471 +#, python-format +msgid "" +"There are no datastores matching new requirements; can't retype volume: " +"%s." +msgstr "" + +#: cinder/volume/drivers/vmware/vmdk.py:1507 +#, python-format +msgid "Error occurred while cloning backing: %s during retype." +msgstr "" + +#: cinder/volume/drivers/vmware/vmdk.py:1521 +#, python-format +msgid "" +"Changing backing: %(backing)s name from %(new_name)s to %(old_name)s " +"failed." +msgstr "" + +#: cinder/volume/drivers/vmware/vmdk.py:1553 +#: cinder/volume/drivers/vmware/vmdk.py:1582 #, python-format msgid "Done extending volume %(vol)s to size %(size)s GB." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:1368 +#: cinder/volume/drivers/vmware/vmdk.py:1557 #, 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:1376 +#: cinder/volume/drivers/vmware/vmdk.py:1565 #, python-format msgid "Not able to find a different datastore to place the extended volume %s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:1379 +#: cinder/volume/drivers/vmware/vmdk.py:1568 #, python-format msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:1391 +#: cinder/volume/drivers/vmware/vmdk.py:1580 #, python-format msgid "Not able to relocate volume %s for extending." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:1492 +#: cinder/volume/drivers/vmware/vmdk.py:1681 msgid "Error occurred while creating temporary backing." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:1557 +#: cinder/volume/drivers/vmware/vmdk.py:1746 #, python-format msgid "" "Cannot undo volume rename; old name was %(old_name)s and new name is " "%(new_name)s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:1580 +#: cinder/volume/drivers/vmware/vmdk.py:1769 msgid "Volume cannot be restored since it contains snapshots." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:1661 +#: cinder/volume/drivers/vmware/vmdk.py:1850 #, python-format msgid "PBM WSDL file %s is missing!" msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:1664 +#: cinder/volume/drivers/vmware/vmdk.py:1853 #, python-format msgid "Using PBM WSDL location: %s" msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:1675 +#: cinder/volume/drivers/vmware/vmdk.py:1864 #, python-format msgid "Using overridden vmware_host_version from config: %s" msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:1679 +#: cinder/volume/drivers/vmware/vmdk.py:1868 #, python-format msgid "Fetched VC server version: %s" msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:1686 +#: cinder/volume/drivers/vmware/vmdk.py:1875 #, python-format msgid "Version string '%s' is not parseable" msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:1700 +#: cinder/volume/drivers/vmware/vmdk.py:1889 #, python-format msgid "Not able to configure PBM for VC server: %s" msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:1759 +#: cinder/volume/drivers/vmware/vmdk.py:1956 #, python-format -msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." +msgid "" +"There are no datastores matching volume requirements; can't relocate " +"volume: %s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:1805 -#: cinder/volume/drivers/vmware/volumeops.py:1044 +#: cinder/volume/drivers/vmware/vmdk.py:2008 +#: cinder/volume/drivers/vmware/volumeops.py:1069 #, python-format msgid "Successfully created clone: %s." msgstr "" -#: cinder/volume/drivers/vmware/vmdk.py:1819 +#: cinder/volume/drivers/vmware/vmdk.py:2022 #, 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:1856 +#: cinder/volume/drivers/vmware/vmdk.py:2059 #, 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:1864 +#: cinder/volume/drivers/vmware/vmdk.py:2067 #, python-format msgid "Linked clone of source volume not supported in state: %s." msgstr "" @@ -11198,86 +11286,86 @@ msgstr "" msgid "Uploaded image: %s to the Glance image server." msgstr "" -#: cinder/volume/drivers/vmware/volumeops.py:304 +#: cinder/volume/drivers/vmware/volumeops.py:306 #, python-format msgid "Deleted the VM backing: %s." msgstr "" -#: cinder/volume/drivers/vmware/volumeops.py:460 +#: cinder/volume/drivers/vmware/volumeops.py:471 #, python-format msgid "There are no valid datastores attached to %s." msgstr "" -#: cinder/volume/drivers/vmware/volumeops.py:567 +#: cinder/volume/drivers/vmware/volumeops.py:579 #, python-format msgid "Successfully extended the volume %(name)s to %(size)s GB." msgstr "" -#: cinder/volume/drivers/vmware/volumeops.py:712 +#: cinder/volume/drivers/vmware/volumeops.py:724 #, python-format msgid "Successfully created volume backing: %s." msgstr "" -#: cinder/volume/drivers/vmware/volumeops.py:857 +#: cinder/volume/drivers/vmware/volumeops.py:882 #, 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:875 +#: cinder/volume/drivers/vmware/volumeops.py:900 #, python-format msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." msgstr "" -#: cinder/volume/drivers/vmware/volumeops.py:898 +#: cinder/volume/drivers/vmware/volumeops.py:923 #, python-format msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." msgstr "" -#: cinder/volume/drivers/vmware/volumeops.py:960 +#: cinder/volume/drivers/vmware/volumeops.py:985 #, 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:971 +#: cinder/volume/drivers/vmware/volumeops.py:996 #, python-format msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." msgstr "" -#: cinder/volume/drivers/vmware/volumeops.py:1083 +#: cinder/volume/drivers/vmware/volumeops.py:1119 #, python-format msgid "Renaming backing VM: %(backing)s to %(new_name)s." msgstr "" -#: cinder/volume/drivers/vmware/volumeops.py:1092 +#: cinder/volume/drivers/vmware/volumeops.py:1128 #, python-format msgid "Backing VM: %(backing)s renamed to %(new_name)s." msgstr "" -#: cinder/volume/drivers/vmware/volumeops.py:1111 +#: cinder/volume/drivers/vmware/volumeops.py:1173 #, python-format msgid "Successfully deleted file: %s." msgstr "" -#: cinder/volume/drivers/vmware/volumeops.py:1145 +#: cinder/volume/drivers/vmware/volumeops.py:1207 #, python-format msgid "Virtual disk device of backing: %s not found." msgstr "" -#: cinder/volume/drivers/vmware/volumeops.py:1160 +#: cinder/volume/drivers/vmware/volumeops.py:1222 #, python-format msgid "Invalid disk backing: %s." msgstr "" -#: cinder/volume/drivers/vmware/volumeops.py:1259 +#: cinder/volume/drivers/vmware/volumeops.py:1321 #, python-format msgid "Successfully copied disk at: %(src)s to: %(dest)s." msgstr "" -#: cinder/volume/drivers/vmware/volumeops.py:1277 +#: cinder/volume/drivers/vmware/volumeops.py:1339 #, python-format msgid "Deleted vmdk file: %s." msgstr "" @@ -11525,7 +11613,7 @@ msgid "" "onSnapshot: %(snapshot)s" msgstr "" -#: cinder/volume/drivers/zfssa/zfssaiscsi.py:362 +#: cinder/volume/drivers/zfssa/zfssaiscsi.py:363 #, python-format msgid "Clone Volume:%(volume)s failed from source volume:%(src_vref)s" msgstr "" @@ -11559,89 +11647,96 @@ msgstr "" #: cinder/volume/drivers/zfssa/zfssarest.py:152 #, python-format msgid "" -"Error Creating Initator: %(initiator)s on Alias: %(alias)s Return code: " +"Error Creating Initiator: %(initiator)s on Alias: %(alias)s Return code: " "%(ret.status)d Message: %(ret.data)s ." msgstr "" #: cinder/volume/drivers/zfssa/zfssarest.py:176 -#: cinder/volume/drivers/zfssa/zfssarest.py:194 +#: cinder/volume/drivers/zfssa/zfssarest.py:211 #, python-format msgid "" -"Error Adding Initator: %(initiator)s on groupInitiatorGroup: " +"Error Adding Initiator: %(initiator)s on groupInitiatorGroup: " "%(initiatorgroup)s Return code: %(ret.status)d Message: %(ret.data)s ." msgstr "" -#: cinder/volume/drivers/zfssa/zfssarest.py:232 +#: cinder/volume/drivers/zfssa/zfssarest.py:191 +#, python-format +msgid "" +"Error Getting Initiators: InitiatorGroup: %(initiatorgroup)s Return code:" +" %(ret.status)d Message: %(ret.data)s ." +msgstr "" + +#: cinder/volume/drivers/zfssa/zfssarest.py:249 #, python-format msgid "" "Error Creating Target: %(alias)sReturn code: %(ret.status)d Message: " "%(ret.data)s ." msgstr "" -#: cinder/volume/drivers/zfssa/zfssarest.py:250 +#: cinder/volume/drivers/zfssa/zfssarest.py:267 #, python-format msgid "" "Error Getting Target: %(alias)sReturn code: %(ret.status)d Message: " "%(ret.data)s ." msgstr "" -#: cinder/volume/drivers/zfssa/zfssarest.py:276 +#: cinder/volume/drivers/zfssa/zfssarest.py:293 #, python-format msgid "" "Error Creating TargetGroup: %(targetgroup)s withIQN: %(iqn)sReturn code: " "%(ret.status)d Message: %(ret.data)s ." msgstr "" -#: cinder/volume/drivers/zfssa/zfssarest.py:296 +#: cinder/volume/drivers/zfssa/zfssarest.py:313 #, python-format msgid "" "Error Adding to TargetGroup: %(targetgroup)s withIQN: %(iqn)sReturn code:" " %(ret.status)d Message: %(ret.data)s." msgstr "" -#: cinder/volume/drivers/zfssa/zfssarest.py:313 +#: cinder/volume/drivers/zfssa/zfssarest.py:330 #, python-format msgid "" "Error Verifying Pool: %(pool)s Return code: %(ret.status)d Message: " "%(ret.data)s." msgstr "" -#: cinder/volume/drivers/zfssa/zfssarest.py:328 +#: cinder/volume/drivers/zfssa/zfssarest.py:345 #, python-format msgid "" "Error Verifying Project: %(project)s on Pool: %(pool)s Return code: " "%(ret.status)d Message: %(ret.data)s." msgstr "" -#: cinder/volume/drivers/zfssa/zfssarest.py:345 +#: cinder/volume/drivers/zfssa/zfssarest.py:362 #, python-format msgid "" "Error Verifying Initiator: %(iqn)s Return code: %(ret.status)d Message: " "%(ret.data)s." msgstr "" -#: cinder/volume/drivers/zfssa/zfssarest.py:360 +#: cinder/volume/drivers/zfssa/zfssarest.py:377 #, python-format msgid "" "Error Verifying Target: %(alias)s Return code: %(ret.status)d Message: " "%(ret.data)s." msgstr "" -#: cinder/volume/drivers/zfssa/zfssarest.py:394 +#: cinder/volume/drivers/zfssa/zfssarest.py:411 #, python-format msgid "" "Error Creating Volume: %(lun)s Size: %(size)s Return code: %(ret.status)d" " Message: %(ret.data)s." msgstr "" -#: cinder/volume/drivers/zfssa/zfssarest.py:412 +#: cinder/volume/drivers/zfssa/zfssarest.py:429 #, python-format msgid "" "Error Getting Volume: %(lun)s on Pool: %(pool)s Project: %(project)s " "Return code: %(ret.status)d Message: %(ret.data)s." msgstr "" -#: cinder/volume/drivers/zfssa/zfssarest.py:452 +#: cinder/volume/drivers/zfssa/zfssarest.py:469 #, python-format msgid "" "Error Setting Volume: %(lun)s to InitiatorGroup: %(initiatorgroup)s Pool:" @@ -11649,21 +11744,21 @@ msgid "" "%(ret.data)s." msgstr "" -#: cinder/volume/drivers/zfssa/zfssarest.py:474 +#: cinder/volume/drivers/zfssa/zfssarest.py:491 #, python-format msgid "" "Error Deleting Volume: %(lun)s to Pool: %(pool)s Project: %(project)s " "Return code: %(ret.status)d Message: %(ret.data)s." msgstr "" -#: cinder/volume/drivers/zfssa/zfssarest.py:497 +#: cinder/volume/drivers/zfssa/zfssarest.py:514 #, python-format msgid "" "Error Creating Snapshot: %(snapshot)s onVolume: %(lun)s to Pool: %(pool)s" " Project: %(project)s Return code: %(ret.status)d Message: %(ret.data)s." msgstr "" -#: cinder/volume/drivers/zfssa/zfssarest.py:520 +#: cinder/volume/drivers/zfssa/zfssarest.py:537 #, python-format msgid "" "Error Deleting Snapshot: %(snapshot)s on Volume: %(lun)s to Pool: " @@ -11671,21 +11766,21 @@ msgid "" "%(ret.data)s." msgstr "" -#: cinder/volume/drivers/zfssa/zfssarest.py:548 +#: cinder/volume/drivers/zfssa/zfssarest.py:565 #, python-format msgid "" "Error Cloning Snapshot: %(snapshot)s on Volume: %(lun)s of Pool: %(pool)s" " Project: %(project)s Return code: %(ret.status)d Message: %(ret.data)s." msgstr "" -#: cinder/volume/drivers/zfssa/zfssarest.py:573 +#: cinder/volume/drivers/zfssa/zfssarest.py:590 #, python-format msgid "" "Error Setting props Props: %(props)s on Volume: %(lun)s of Pool: %(pool)s" " Project: %(project)s Return code: %(ret.status)d Message: %(ret.data)s." msgstr "" -#: cinder/volume/drivers/zfssa/zfssarest.py:596 +#: cinder/volume/drivers/zfssa/zfssarest.py:613 #, python-format msgid "" "Error Getting Snapshot: %(snapshot)s on Volume: %(lun)s to Pool: %(pool)s" diff --git a/cinder/locale/cs/LC_MESSAGES/cinder-log-error.po b/cinder/locale/cs/LC_MESSAGES/cinder-log-error.po deleted file mode 100644 index 14debba3429..00000000000 --- a/cinder/locale/cs/LC_MESSAGES/cinder-log-error.po +++ /dev/null @@ -1,67 +0,0 @@ -# Translations template for cinder. -# Copyright (C) 2014 ORGANIZATION -# This file is distributed under the same license as the cinder project. -# -# Translators: -# Zbyněk Schwarz , 2014 -msgid "" -msgstr "" -"Project-Id-Version: Cinder\n" -"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-09-24 06:03+0000\n" -"PO-Revision-Date: 2014-08-07 07:52+0000\n" -"Last-Translator: openstackjenkins \n" -"Language-Team: Czech (http://www.transifex.com/projects/p/cinder/language/" -"cs/)\n" -"Language: cs\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" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -#: cinder/openstack/common/excutils.py:76 -#, python-format -msgid "Original exception being dropped: %s" -msgstr "" - -#: cinder/openstack/common/excutils.py:105 -#, python-format -msgid "Unexpected exception occurred %d time(s)... retrying." -msgstr "" - -#: cinder/openstack/common/loopingcall.py:95 -msgid "in fixed duration looping call" -msgstr "" - -#: cinder/openstack/common/loopingcall.py:138 -msgid "in dynamic looping call" -msgstr "" - -#: cinder/openstack/common/periodic_task.py:202 -#, 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:508 -#, python-format -msgid "Failed to understand rule %s" -msgstr "" - -#: cinder/openstack/common/policy.py:518 -#, python-format -msgid "No handler for matches of kind %s" -msgstr "" - -#: cinder/openstack/common/policy.py:788 -#, python-format -msgid "Failed to understand rule %r" -msgstr "" - -#: cinder/openstack/common/service.py:188 -msgid "Exception during rpc cleanup." -msgstr "" - -#: cinder/openstack/common/service.py:277 -msgid "Unhandled exception" -msgstr "" diff --git a/cinder/locale/en_GB/LC_MESSAGES/cinder-log-critical.po b/cinder/locale/en_GB/LC_MESSAGES/cinder-log-critical.po deleted file mode 100644 index 87fc054679b..00000000000 --- a/cinder/locale/en_GB/LC_MESSAGES/cinder-log-critical.po +++ /dev/null @@ -1,20 +0,0 @@ -# Translations template 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-08-09 06:08+0000\n" -"PO-Revision-Date: 2014-05-30 06:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/" -"cinder/language/en_GB/)\n" -"Language: en_GB\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" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" diff --git a/cinder/locale/en_US/LC_MESSAGES/cinder.po b/cinder/locale/en_US/LC_MESSAGES/cinder.po deleted file mode 100644 index 47b120ee265..00000000000 --- a/cinder/locale/en_US/LC_MESSAGES/cinder.po +++ /dev/null @@ -1,12333 +0,0 @@ -# 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-09-24 06:03+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:105 -#, 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:67 cinder/brick/exception.py:31 -msgid "An unknown exception occurred." -msgstr "An unknown exception occurred." - -#: cinder/exception.py:93 -msgid "Exception in string format operation" -msgstr "Exception in string format operation" - -#: cinder/exception.py:114 -#, 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:119 -#, python-format -msgid "Volume driver reported an error: %(message)s" -msgstr "" - -#: cinder/exception.py:123 -#, python-format -msgid "Backup driver reported an error: %(message)s" -msgstr "" - -#: cinder/exception.py:127 -#, python-format -msgid "Connection to glance failed: %(reason)s" -msgstr "" - -#: cinder/exception.py:131 -msgid "Not authorized." -msgstr "Not authorized." - -#: cinder/exception.py:136 -msgid "User does not have admin privileges" -msgstr "User does not have admin privileges" - -#: cinder/exception.py:140 -#, 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:144 -#, python-format -msgid "Not authorized for image %(image_id)s." -msgstr "Not authorized for image %(image_id)s." - -#: cinder/exception.py:148 -msgid "Volume driver not ready." -msgstr "" - -#: cinder/exception.py:152 cinder/brick/exception.py:77 -msgid "Unacceptable parameters." -msgstr "Unacceptable parameters." - -#: cinder/exception.py:157 -#, python-format -msgid "Invalid snapshot: %(reason)s" -msgstr "" - -#: cinder/exception.py:161 -#, python-format -msgid "Invalid attaching mode '%(mode)s' for volume %(volume_id)s." -msgstr "" - -#: cinder/exception.py:166 -#, 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:170 -msgid "Failed to load data into json format" -msgstr "Failed to load data into json format" - -#: cinder/exception.py:174 -msgid "The results are invalid." -msgstr "The results are invalid." - -#: cinder/exception.py:178 -#, python-format -msgid "Invalid input received: %(reason)s" -msgstr "" - -#: cinder/exception.py:182 -#, python-format -msgid "Invalid volume type: %(reason)s" -msgstr "" - -#: cinder/exception.py:186 -#, python-format -msgid "Invalid volume: %(reason)s" -msgstr "" - -#: cinder/exception.py:190 -#, python-format -msgid "Invalid content type %(content_type)s." -msgstr "Invalid content type %(content_type)s." - -#: cinder/exception.py:194 -#, python-format -msgid "Invalid host: %(reason)s" -msgstr "" - -#: cinder/exception.py:200 cinder/brick/exception.py:84 -#, python-format -msgid "%(err)s" -msgstr "%(err)s" - -#: cinder/exception.py:204 -#, python-format -msgid "Invalid auth key: %(reason)s" -msgstr "" - -#: cinder/exception.py:208 -#, python-format -msgid "Value \"%(value)s\" is not valid for configuration option \"%(option)s\"" -msgstr "" - -#: cinder/exception.py:213 -msgid "Service is unavailable at this time." -msgstr "Service is unavailable at this time." - -#: cinder/exception.py:217 -#, python-format -msgid "Image %(image_id)s is unacceptable: %(reason)s" -msgstr "Image %(image_id)s is unacceptable: %(reason)s" - -#: cinder/exception.py:221 -#, python-format -msgid "The device in the path %(path)s is unavailable: %(reason)s" -msgstr "" - -#: cinder/exception.py:225 -#, fuzzy, python-format -msgid "Expected a uuid but received %(uuid)s." -msgstr "Expected a uuid but received %(uuid)s." - -#: cinder/exception.py:229 cinder/brick/exception.py:71 -msgid "Resource could not be found." -msgstr "Resource could not be found." - -#: cinder/exception.py:235 -#, python-format -msgid "Volume %(volume_id)s could not be found." -msgstr "Volume %(volume_id)s could not be found." - -#: cinder/exception.py:239 -#, 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:244 -#, python-format -msgid "" -"Volume %(volume_id)s has no administration metadata with key " -"%(metadata_key)s." -msgstr "" - -#: cinder/exception.py:249 -#, python-format -msgid "Invalid metadata: %(reason)s" -msgstr "" - -#: cinder/exception.py:253 -#, python-format -msgid "Invalid metadata size: %(reason)s" -msgstr "" - -#: cinder/exception.py:257 -#, 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:262 -#, 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:266 -#, 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:271 -#, 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:276 -#, python-format -msgid "" -"Volume Type %(volume_type_id)s deletion is not allowed with volumes " -"present with the type." -msgstr "" - -#: cinder/exception.py:281 -#, python-format -msgid "Snapshot %(snapshot_id)s could not be found." -msgstr "Snapshot %(snapshot_id)s could not be found." - -#: cinder/exception.py:285 -#, python-format -msgid "deleting volume %(volume_name)s that has snapshot" -msgstr "deleting volume %(volume_name)s that has snapshot" - -#: cinder/exception.py:289 -#, 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:294 -#, 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:298 -#, python-format -msgid "Invalid image href %(image_href)s." -msgstr "Invalid image href %(image_href)s." - -#: cinder/exception.py:302 -#, python-format -msgid "Image %(image_id)s could not be found." -msgstr "Image %(image_id)s could not be found." - -#: cinder/exception.py:306 -#, python-format -msgid "Service %(service_id)s could not be found." -msgstr "Service %(service_id)s could not be found." - -#: cinder/exception.py:310 -#, python-format -msgid "Host %(host)s could not be found." -msgstr "Host %(host)s could not be found." - -#: cinder/exception.py:314 -#, 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:318 -#, 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:322 -#, 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:326 -#, python-format -msgid "Invalid reservation expiration %(expire)s." -msgstr "Invalid reservation expiration %(expire)s." - -#: cinder/exception.py:330 -#, 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:335 -msgid "Quota could not be found" -msgstr "Quota could not be found" - -#: cinder/exception.py:339 -#, python-format -msgid "Unknown quota resources %(unknown)s." -msgstr "Unknown quota resources %(unknown)s." - -#: cinder/exception.py:343 -#, 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:347 -#, 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:351 -#, 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:355 -#, python-format -msgid "Quota reservation %(uuid)s could not be found." -msgstr "Quota reservation %(uuid)s could not be found." - -#: cinder/exception.py:359 -#, python-format -msgid "Quota exceeded for resources: %(overs)s" -msgstr "Quota exceeded for resources: %(overs)s" - -#: cinder/exception.py:363 -#, python-format -msgid "File %(file_path)s could not be found." -msgstr "File %(file_path)s could not be found." - -#: cinder/exception.py:372 -#, python-format -msgid "Volume Type %(id)s already exists." -msgstr "Volume Type %(id)s already exists." - -#: cinder/exception.py:376 -#, python-format -msgid "Volume type encryption for type %(type_id)s already exists." -msgstr "" - -#: cinder/exception.py:380 -#, python-format -msgid "Volume type encryption for type %(type_id)s does not exist." -msgstr "" - -#: cinder/exception.py:384 -#, python-format -msgid "Malformed message body: %(reason)s" -msgstr "Malformed message body: %(reason)s" - -#: cinder/exception.py:388 -#, python-format -msgid "Could not find config at %(path)s" -msgstr "Could not find config at %(path)s" - -#: cinder/exception.py:392 -#, fuzzy, python-format -msgid "Could not find parameter %(param)s" -msgstr "Could not find config at %(param)s" - -#: cinder/exception.py:396 -#, 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:400 -#, python-format -msgid "No valid host was found. %(reason)s" -msgstr "No valid host was found. %(reason)s" - -#: cinder/exception.py:409 -#, python-format -msgid "Quota exceeded: code=%(code)s" -msgstr "" - -#: cinder/exception.py:416 -#, 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:422 -#, python-format -msgid "" -"Requested backup exceeds allowed Backup Gigabytes quota. Requested " -"%(requested)sG, quota is %(quota)sG and %(consumed)sG has been consumed." -msgstr "" - -#: cinder/exception.py:428 -#, python-format -msgid "Maximum number of volumes allowed (%(allowed)d) exceeded" -msgstr "Maximum number of volumes allowed (%(allowed)d) exceeded" - -#: cinder/exception.py:432 -#, python-format -msgid "Maximum number of snapshots allowed (%(allowed)d) exceeded" -msgstr "Maximum number of snapshots allowed (%(allowed)d) exceeded" - -#: cinder/exception.py:436 -#, python-format -msgid "Maximum number of backups allowed (%(allowed)d) exceeded" -msgstr "" - -#: cinder/exception.py:440 -#, 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:444 -#, 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:449 -#, python-format -msgid "Unknown or unsupported command %(cmd)s" -msgstr "Unknown or unsupported command %(cmd)s" - -#: cinder/exception.py:453 -#, python-format -msgid "Malformed response to command %(cmd)s: %(reason)s" -msgstr "Malformed response to command %(cmd)s: %(reason)s" - -#: cinder/exception.py:457 -#, 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:461 -#, 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:466 -#, python-format -msgid "Glance metadata for volume/snapshot %(id)s cannot be found." -msgstr "" - -#: cinder/exception.py:470 -#, python-format -msgid "Failed to export for volume: %(reason)s" -msgstr "" - -#: cinder/exception.py:474 -#, python-format -msgid "Failed to remove export for volume %(volume)s: %(reason)s" -msgstr "" - -#: cinder/exception.py:478 -#, python-format -msgid "Failed to create metadata for volume: %(reason)s" -msgstr "" - -#: cinder/exception.py:482 -#, python-format -msgid "Failed to update metadata for volume: %(reason)s" -msgstr "" - -#: cinder/exception.py:486 -#, python-format -msgid "Failed to copy metadata to volume: %(reason)s" -msgstr "" - -#: cinder/exception.py:490 -#, fuzzy, python-format -msgid "Failed to copy image to volume: %(reason)s" -msgstr "Failed to copy image to volume: %(reason)s" - -#: cinder/exception.py:494 -msgid "Invalid Ceph args provided for backup rbd operation" -msgstr "" - -#: cinder/exception.py:498 -msgid "An error has occurred during backup operation" -msgstr "" - -#: cinder/exception.py:502 -msgid "Unsupported backup metadata version requested" -msgstr "" - -#: cinder/exception.py:506 -msgid "Unsupported backup verify driver" -msgstr "" - -#: cinder/exception.py:510 -msgid "Metadata backup already exists for this volume" -msgstr "" - -#: cinder/exception.py:514 -msgid "Backup RBD operation failed" -msgstr "" - -#: cinder/exception.py:518 -#, python-format -msgid "Backup %(backup_id)s could not be found." -msgstr "Backup %(backup_id)s could not be found." - -#: cinder/exception.py:522 -msgid "Failed to identify volume backend." -msgstr "" - -#: cinder/exception.py:526 -#, python-format -msgid "Invalid backup: %(reason)s" -msgstr "Invalid backup: %(reason)s" - -#: cinder/exception.py:530 -#, python-format -msgid "Connection to swift failed: %(reason)s" -msgstr "" - -#: cinder/exception.py:534 -#, fuzzy, python-format -msgid "Transfer %(transfer_id)s could not be found." -msgstr "Transfer %(transfer_id)s could not be found." - -#: cinder/exception.py:538 -#, python-format -msgid "Volume migration failed: %(reason)s" -msgstr "" - -#: cinder/exception.py:542 -#, python-format -msgid "SSH command injection detected: %(command)s" -msgstr "" - -#: cinder/exception.py:546 -#, python-format -msgid "QoS Specs %(specs_id)s already exists." -msgstr "" - -#: cinder/exception.py:550 -#, python-format -msgid "Failed to create qos_specs: %(name)s with specs %(qos_specs)s." -msgstr "" - -#: cinder/exception.py:555 -#, python-format -msgid "Failed to update qos_specs: %(specs_id)s with specs %(qos_specs)s." -msgstr "" - -#: cinder/exception.py:560 -#, python-format -msgid "No such QoS spec %(specs_id)s." -msgstr "" - -#: cinder/exception.py:564 -#, python-format -msgid "Failed to associate qos_specs: %(specs_id)s with type %(type_id)s." -msgstr "" - -#: cinder/exception.py:569 -#, python-format -msgid "Failed to disassociate qos_specs: %(specs_id)s with type %(type_id)s." -msgstr "" - -#: cinder/exception.py:574 -#, python-format -msgid "QoS spec %(specs_id)s has no spec with key %(specs_key)s." -msgstr "" - -#: cinder/exception.py:579 -#, python-format -msgid "Invalid qos specs: %(reason)s" -msgstr "" - -#: cinder/exception.py:583 -#, python-format -msgid "QoS Specs %(specs_id)s is still associated with entities." -msgstr "" - -#: cinder/exception.py:587 -#, python-format -msgid "key manager error: %(reason)s" -msgstr "" - -#: cinder/exception.py:591 -#, python-format -msgid "" -"Manage existing volume failed due to invalid backend reference " -"%(existing_ref)s: %(reason)s" -msgstr "" - -#: cinder/exception.py:596 -#, python-format -msgid "Volume %(volume_id)s replication error: %(reason)s" -msgstr "" - -#: cinder/exception.py:601 -#, python-format -msgid "Volume replication for %(volume_id)s could not be found." -msgstr "" - -#: cinder/exception.py:606 -#, python-format -msgid "Manage existing volume failed due to volume type mismatch: %(reason)s" -msgstr "" - -#: cinder/exception.py:611 -#, python-format -msgid "Error extending volume: %(reason)s" -msgstr "" - -#: cinder/exception.py:617 -msgid "Coraid Cinder Driver exception." -msgstr "" - -#: cinder/exception.py:621 -msgid "Failed to encode json data." -msgstr "" - -#: cinder/exception.py:625 -msgid "Login on ESM failed." -msgstr "" - -#: cinder/exception.py:629 -msgid "Relogin on ESM failed." -msgstr "" - -#: cinder/exception.py:633 -#, python-format -msgid "Group with name \"%(group_name)s\" not found." -msgstr "" - -#: cinder/exception.py:637 -#, python-format -msgid "ESM configure request failed: %(reason)s" -msgstr "" - -#: cinder/exception.py:641 -#, python-format -msgid "Coraid ESM not available with reason: %(reason)s" -msgstr "" - -#: cinder/exception.py:646 -#, python-format -msgid "Pure Storage Cinder driver failure: %(reason)s" -msgstr "" - -#: cinder/exception.py:650 -#, python-format -msgid "Bad response from Pure Storage REST API: %(reason)s" -msgstr "" - -#: cinder/exception.py:655 -msgid "Zadara Cinder Driver exception." -msgstr "" - -#: cinder/exception.py:659 -#, 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:663 -#, 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:667 -msgid "Unable to find any active VPSA controller" -msgstr "Unable to find any active VPSA controller" - -#: cinder/exception.py:671 -#, python-format -msgid "Failed to retrieve attachments for volume %(name)s" -msgstr "Failed to retrieve attachments for volume %(name)s" - -#: cinder/exception.py:675 -#, 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:679 -#, python-format -msgid "Bad HTTP response status %(status)s" -msgstr "Bad HTTP response status %(status)s" - -#: cinder/exception.py:684 -msgid "Bad response from SolidFire API" -msgstr "Bad response from SolidFire API" - -#: cinder/exception.py:688 -msgid "SolidFire Cinder Driver exception" -msgstr "" - -#: cinder/exception.py:692 -#, python-format -msgid "Error in SolidFire API response: data=%(data)s" -msgstr "Error in SolidFire API response: data=%(data)s" - -#: cinder/exception.py:696 -#, 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:702 -#, python-format -msgid "Invalid 3PAR Domain: %(err)s" -msgstr "Invalid 3PAR Domain: %(err)s" - -#: cinder/exception.py:707 -msgid "Unknown RemoteFS exception" -msgstr "" - -#: cinder/exception.py:711 -msgid "No mounted shares found" -msgstr "" - -#: cinder/exception.py:715 cinder/exception.py:728 cinder/exception.py:754 -#, 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:720 -msgid "Unknown NFS exception" -msgstr "Unknown NFS exception" - -#: cinder/exception.py:724 -msgid "No mounted NFS shares found" -msgstr "No mounted NFS shares found" - -#: cinder/exception.py:733 -msgid "Unknown SMBFS exception." -msgstr "" - -#: cinder/exception.py:737 -msgid "No mounted SMBFS shares found." -msgstr "" - -#: cinder/exception.py:741 -#, python-format -msgid "There is no share which can host %(volume_size)sG." -msgstr "" - -#: cinder/exception.py:746 -msgid "Unknown Gluster exception" -msgstr "Unknown Gluster exception" - -#: cinder/exception.py:750 -msgid "No mounted Gluster shares found" -msgstr "No mounted Gluster shares found" - -#: cinder/exception.py:759 -msgid "HP MSA Volume Driver exception" -msgstr "" - -#: cinder/exception.py:763 -#, python-format -msgid "VDisk doesn't exist (%(vdisk)s)" -msgstr "" - -#: cinder/exception.py:767 -msgid "Unable to connect to MSA array" -msgstr "" - -#: cinder/exception.py:771 -#, python-format -msgid "Not enough space on VDisk (%(vdisk)s)" -msgstr "" - -#: cinder/exception.py:776 -#, python-format -msgid "Fibre Channel connection control failure: %(reason)s" -msgstr "" - -#: cinder/exception.py:780 -#, python-format -msgid "Fibre Channel Zone operation failed: %(reason)s" -msgstr "" - -#: cinder/exception.py:784 -#, python-format -msgid "Fibre Channel SAN Lookup failure: %(reason)s" -msgstr "" - -#: cinder/exception.py:788 cinder/exception.py:792 -#, python-format -msgid "Fibre Channel Zoning CLI error: %(reason)s" -msgstr "" - -#: cinder/exception.py:796 -msgid "NetApp Cinder Driver exception." -msgstr "" - -#: cinder/exception.py:805 -#, python-format -msgid "EMCVnxCLICmdError : %(cmd)s (Return Code: %(rc)s) (Output: %(out)s) " -msgstr "" - -#: cinder/exception.py:821 -#, python-format -msgid "ConsistencyGroup %(consistencygroup_id)s could not be found." -msgstr "" - -#: cinder/exception.py:825 -#, python-format -msgid "Invalid ConsistencyGroup: %(reason)s" -msgstr "" - -#: cinder/exception.py:830 -#, python-format -msgid "CgSnapshot %(cgsnapshot_id)s could not be found." -msgstr "" - -#: cinder/exception.py:834 -#, python-format -msgid "Invalid CgSnapshot: %(reason)s" -msgstr "" - -#: cinder/exception.py:839 -msgid "HBSD error occurs." -msgstr "" - -#: cinder/exception.py:856 -msgid "Storage resource could not be found." -msgstr "" - -#: cinder/exception.py:861 -msgid "Bad response from Datera API" -msgstr "" - -#: cinder/flow_utils.py:77 -#, python-format -msgid "" -"Flow '%(flow_name)s' (%(flow_uuid)s) transitioned into state '%(state)s' " -"from state '%(old_state)s'" -msgstr "" - -#: cinder/flow_utils.py:92 cinder/flow_utils.py:116 cinder/flow_utils.py:127 -#, python-format -msgid "Task '%(task_name)s' (%(task_uuid)s) transitioned into state '%(state)s'" -msgstr "" - -#: cinder/flow_utils.py:108 -#, python-format -msgid "" -"Task '%(task_name)s' (%(task_uuid)s) transitioned into state '%(state)s' " -"with result '%(result)s'" -msgstr "" - -#: cinder/quota.py:118 -#, 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 default quota class " -"for default quota." -msgstr "" - -#: cinder/quota.py:783 -#, python-format -msgid "Failed to commit reservations %s" -msgstr "" - -#: cinder/quota.py:803 -#, python-format -msgid "Failed to roll back reservations %s" -msgstr "" - -#: cinder/quota.py:890 cinder/quota.py:914 -msgid "Cannot register resource" -msgstr "" - -#: cinder/quota.py:893 cinder/quota.py:917 -msgid "Cannot register resources" -msgstr "" - -#: cinder/quota_utils.py:47 -#, 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:57 cinder/transfer/api.py:173 -#: cinder/volume/flows/api/create_volume.py:593 -#, 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:72 -msgid "If False fully disable profiling feature." -msgstr "" - -#: cinder/service.py:74 -msgid "If False doesn't trace SQL requests." -msgstr "" - -#: cinder/service.py:138 -#, python-format -msgid "Starting %(topic)s node (version %(version_string)s)" -msgstr "Starting %(topic)s node (version %(version_string)s)" - -#: cinder/service.py:184 -#, 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:252 -msgid "Service killed that has no database entry" -msgstr "Service killed that has no database entry" - -#: cinder/service.py:305 -msgid "Recovered model server connection!" -msgstr "Recovered model server connection!" - -#: cinder/service.py:311 -msgid "model server went away" -msgstr "model server went away" - -#: cinder/service.py:336 -#, python-format -msgid "" -"Value of config option %(name)s_workers must be integer greater than 1. " -"Input value ignored." -msgstr "" - -#: cinder/service.py:419 -msgid "serve() can only be called once" -msgstr "" - -#: cinder/ssh_utils.py:76 -#, python-format -msgid "Unable to find ssh_hosts_key_file: %s" -msgstr "" - -#: cinder/ssh_utils.py:82 -#, python-format -msgid "" -"Secondary ssh hosts key file %(kwargs)s will be loaded along with " -"%(conf)s from /etc/cinder.conf." -msgstr "" - -#: cinder/ssh_utils.py:135 -msgid "Specify a password or private_key" -msgstr "Specify a password or private_key" - -#: cinder/ssh_utils.py:151 -#, python-format -msgid "Error connecting via ssh: %s" -msgstr "Error connecting via ssh: %s" - -#: cinder/utils.py:95 -#, python-format -msgid "Can not translate %s to integer." -msgstr "" - -#: cinder/utils.py:134 -#, python-format -msgid "May specify only one of %s" -msgstr "" - -#: cinder/utils.py:291 -#, python-format -msgid "Invalid backend: %s" -msgstr "Invalid backend: %s" - -#: cinder/utils.py:618 -#, python-format -msgid "Volume driver %s not initialized" -msgstr "" - -#: cinder/utils.py:675 -#, python-format -msgid "Unable to get a block device for file '%s'" -msgstr "" - -#: cinder/utils.py:687 -#, python-format -msgid "%s is not a string or unicode" -msgstr "" - -#: cinder/utils.py:691 -#, python-format -msgid "%(name)s has a minimum character requirement of %(min_length)s." -msgstr "" - -#: cinder/utils.py:696 -#, python-format -msgid "%(name)s has more than %(max_length)s characters." -msgstr "" - -#: cinder/wsgi.py:146 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:150 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:153 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:157 -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:173 -#, 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:178 -#, python-format -msgid "%(name)s listening on %(_host)s:%(_port)s" -msgstr "" - -#: cinder/wsgi.py:223 -#, python-format -msgid "Failed to start %(name)s on %(_host)s:%(_port)s with SSL support." -msgstr "" - -#: cinder/wsgi.py:254 -msgid "Stopping WSGI server." -msgstr "Stopping WSGI server." - -#: cinder/wsgi.py:272 -msgid "WSGI server has stopped." -msgstr "WSGI server has stopped." - -#: cinder/wsgi.py:349 -msgid "You must implement __call__" -msgstr "You must implement __call__" - -#: cinder/api/__init__.py:31 -msgid "" -"The v1 api is deprecated and will be removed after the Juno release. You " -"should set enable_v1_api=false and enable_v2_api=true in your cinder.conf" -" file." -msgstr "" - -#: cinder/api/auth.py:27 -msgid "" -"cinder.api.auth:CinderKeystoneContext is deprecated. Please use " -"cinder.api.middleware.auth:CinderKeystoneContext instead." -msgstr "" - -#: cinder/api/auth.py:35 -msgid "" -"cinder.api.auth:pipeline_factory is deprecated. Please use " -"cinder.api.middleware.auth:pipeline_factory instead." -msgstr "" - -#: cinder/api/common.py:94 cinder/api/common.py:128 -#: cinder/consistencygroup/api.py:312 cinder/volume/api.py:373 -msgid "limit param must be an integer" -msgstr "limit param must be an integer" - -#: cinder/api/common.py:97 cinder/api/common.py:132 -#: cinder/consistencygroup/api.py:309 cinder/volume/api.py:370 -msgid "limit param must be positive" -msgstr "limit param must be positive" - -#: cinder/api/common.py:122 -msgid "offset param must be an integer" -msgstr "offset param must be an integer" - -#: cinder/api/common.py:136 -msgid "offset param must be positive" -msgstr "offset param must be positive" - -#: cinder/api/common.py:164 -#, python-format -msgid "marker [%s] not found" -msgstr "marker [%s] not found" - -#: cinder/api/extensions.py:184 -msgid "Initializing extension manager." -msgstr "Initializing extension manager." - -#: cinder/api/extensions.py:199 -#, python-format -msgid "Loaded extension: %s" -msgstr "Loaded extension: %s" - -#: cinder/api/extensions.py:244 -#, python-format -msgid "Exception loading extension: %s" -msgstr "Exception loading extension: %s" - -#: cinder/api/extensions.py:278 -#, 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:280 -#, 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:289 -#, 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:358 -#, python-format -msgid "Failed to load extension %(classpath)s: %(exc)s" -msgstr "Failed to load extension %(classpath)s: %(exc)s" - -#: cinder/api/extensions.py:383 -#, 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:26 -msgid "" -"cinder.api.sizelimit:RequestBodySizeLimiter is deprecated. Please use " -"cinder.api.middleware.sizelimit:RequestBodySizeLimiter instead" -msgstr "" - -#: cinder/api/xmlutil.py:271 -msgid "element is not a child" -msgstr "element is not a child" - -#: cinder/api/xmlutil.py:473 -msgid "root element selecting a list" -msgstr "root element selecting a list" - -#: cinder/api/xmlutil.py:796 -#, 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:917 -msgid "subclasses must implement construct()!" -msgstr "subclasses must implement construct()!" - -#: cinder/api/contrib/admin_actions.py:67 -msgid "Must specify 'status'" -msgstr "" - -#: cinder/api/contrib/admin_actions.py:70 -msgid "Must specify a valid status" -msgstr "" - -#: cinder/api/contrib/admin_actions.py:84 -#, python-format -msgid "Updating %(resource)s '%(id)s' with '%(update)r'" -msgstr "Updating %(resource)s '%(id)s' with '%(update)r'" - -#: cinder/api/contrib/admin_actions.py:160 -msgid "Must specify a valid attach status" -msgstr "" - -#: cinder/api/contrib/admin_actions.py:167 -msgid "Must specify a valid migration status" -msgstr "" - -#: cinder/api/contrib/admin_actions.py:173 -msgid "Must specify 'status', 'attach_status' or 'migration_status' for update." -msgstr "" - -#: cinder/api/contrib/admin_actions.py:204 -msgid "Must specify 'host'" -msgstr "" - -#: cinder/api/contrib/admin_actions.py:212 -msgid "Bad value for 'force_host_copy'" -msgstr "" - -#: cinder/api/contrib/admin_actions.py:215 -msgid "'force_host_copy' not string or bool" -msgstr "" - -#: cinder/api/contrib/admin_actions.py:233 -msgid "Must specify 'new_volume'" -msgstr "" - -#: cinder/api/contrib/backups.py:177 -#, python-format -msgid "Delete backup with id: %s" -msgstr "Delete backup with id: %s" - -#: cinder/api/contrib/backups.py:244 cinder/api/contrib/backups.py:276 -#: cinder/api/contrib/cgsnapshots.py:168 -#: cinder/api/contrib/consistencygroups.py:173 -#: cinder/api/contrib/volume_transfer.py:158 -#: cinder/api/contrib/volume_transfer.py:194 -msgid "Incorrect request body format" -msgstr "Incorrect request body format" - -#: cinder/api/contrib/backups.py:250 -#, 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:283 -#, 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:338 cinder/api/contrib/backups.py:347 -msgid "Incorrect request body format." -msgstr "" - -#: cinder/api/contrib/cgsnapshots.py:113 -#, python-format -msgid "Delete cgsnapshot with id: %s" -msgstr "" - -#: cinder/api/contrib/cgsnapshots.py:121 -msgid "Cgsnapshot could not be found" -msgstr "" - -#: cinder/api/contrib/cgsnapshots.py:124 -msgid "Invalid cgsnapshot" -msgstr "" - -#: cinder/api/contrib/cgsnapshots.py:127 -msgid "Failed cgsnapshot" -msgstr "" - -#: cinder/api/contrib/cgsnapshots.py:174 -msgid "'consistencygroup_id' must be specified" -msgstr "" - -#: cinder/api/contrib/cgsnapshots.py:180 -msgid "Consistency group could not be found" -msgstr "" - -#: cinder/api/contrib/cgsnapshots.py:186 -#, python-format -msgid "Creating cgsnapshot %(name)s." -msgstr "" - -#: cinder/api/contrib/consistencygroups.py:121 -#, python-format -msgid "Delete consistency group with id: %s" -msgstr "" - -#: cinder/api/contrib/consistencygroups.py:128 -#, python-format -msgid "Consistency group %s could not be found." -msgstr "" - -#: cinder/api/contrib/consistencygroups.py:179 -#, python-format -msgid "volume_types must be provided to create consistency group %(name)s." -msgstr "" - -#: cinder/api/contrib/consistencygroups.py:184 -#, python-format -msgid "Creating consistency group %(name)s." -msgstr "" - -#: cinder/api/contrib/hosts.py:87 cinder/api/openstack/wsgi.py:239 -msgid "cannot understand XML" -msgstr "cannot understand XML" - -#: cinder/api/contrib/hosts.py:137 -#, python-format -msgid "Host '%s' could not be found." -msgstr "Host '%s' could not be found." - -#: cinder/api/contrib/hosts.py:166 -#, python-format -msgid "Invalid status: '%s'" -msgstr "Invalid status: '%s'" - -#: cinder/api/contrib/hosts.py:169 -#, python-format -msgid "Invalid update setting: '%s'" -msgstr "Invalid update setting: '%s'" - -#: cinder/api/contrib/hosts.py:181 -#, python-format -msgid "Setting host %(host)s to %(state)s." -msgstr "Setting host %(host)s to %(state)s." - -#: cinder/api/contrib/hosts.py:207 -msgid "Describe-resource is admin only functionality" -msgstr "Describe-resource is admin only functionality" - -#: cinder/api/contrib/hosts.py:215 -msgid "Host not found" -msgstr "Host not found" - -#: cinder/api/contrib/qos_specs_manage.py:79 -msgid "Unable to parse XML input." -msgstr "" - -#: cinder/api/contrib/qos_specs_manage.py:80 -msgid "Unable to parse XML request. Please provide XML in correct format." -msgstr "" - -#: cinder/api/contrib/qos_specs_manage.py:132 -msgid "Please specify a name for QoS specs." -msgstr "" - -#: cinder/api/contrib/qos_specs_manage.py:243 -msgid "Failed to disassociate qos specs." -msgstr "" - -#: cinder/api/contrib/qos_specs_manage.py:245 -msgid "Qos specs still in use." -msgstr "" - -#: cinder/api/contrib/qos_specs_manage.py:322 -#: cinder/api/contrib/qos_specs_manage.py:376 -msgid "Volume Type id must not be None." -msgstr "" - -#: cinder/api/contrib/quota_classes.py:73 -msgid "Missing required element quota_class_set in request body." -msgstr "" - -#: cinder/api/contrib/quota_classes.py:82 -msgid "Quota class limit must be specified as an integer value." -msgstr "" - -#: cinder/api/contrib/quota_classes.py:86 -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:37 -msgid "Malformed scheduler_hints attribute" -msgstr "" - -#: cinder/api/contrib/services.py:92 -msgid "" -"Query by service parameter is deprecated. Please use binary parameter " -"instead." -msgstr "" - -#: cinder/api/contrib/services.py:151 -msgid "Unknown action" -msgstr "" - -#: cinder/api/contrib/services.py:162 -msgid "Disabled reason contains invalid characters or is too long" -msgstr "" - -#: cinder/api/contrib/services.py:178 -msgid "Unknown service" -msgstr "" - -#: cinder/api/contrib/services.py:182 -msgid "service not found" -msgstr "" - -#: cinder/api/contrib/snapshot_actions.py:52 -msgid "'status' must be specified." -msgstr "" - -#: cinder/api/contrib/snapshot_actions.py:62 -#, python-format -msgid "Snapshot status %(cur)s not allowed for update_snapshot_status" -msgstr "" - -#: cinder/api/contrib/snapshot_actions.py:68 -#, python-format -msgid "" -"Provided snapshot status %(provided)s not allowed for snapshot with " -"status %(current)s." -msgstr "" - -#: cinder/api/contrib/snapshot_actions.py:80 -msgid "progress must be an integer percentage" -msgstr "" - -#: cinder/api/contrib/types_extra_specs.py:102 -msgid "Request body empty" -msgstr "Request body empty" - -#: cinder/api/contrib/types_extra_specs.py:106 -#: cinder/api/v1/snapshot_metadata.py:76 cinder/api/v1/volume_metadata.py:76 -#: cinder/api/v2/snapshot_metadata.py:76 cinder/api/v2/volume_metadata.py:75 -msgid "Request body and URI mismatch" -msgstr "Request body and URI mismatch" - -#: cinder/api/contrib/types_extra_specs.py:109 -#: cinder/api/v1/snapshot_metadata.py:80 cinder/api/v1/volume_metadata.py:80 -#: cinder/api/v2/snapshot_metadata.py:80 cinder/api/v2/volume_metadata.py:79 -msgid "Request body contains too many items" -msgstr "Request body contains too many items" - -#: cinder/api/contrib/types_extra_specs.py:153 -msgid "" -"Key names can only contain alphanumeric characters, underscores, periods," -" colons and hyphens." -msgstr "" - -#: cinder/api/contrib/types_manage.py:100 -msgid "Target volume type is still in use." -msgstr "" - -#: cinder/api/contrib/volume_actions.py:101 -#, 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:109 -msgid "Invalid request to attach volume to an invalid target" -msgstr "" - -#: cinder/api/contrib/volume_actions.py:113 -msgid "" -"Invalid request to attach volume with an invalid mode. Attaching mode " -"should be 'rw' or 'ro'" -msgstr "" - -#: cinder/api/contrib/volume_actions.py:193 -#: cinder/api/contrib/volume_actions.py:216 -msgid "Must specify 'connector'" -msgstr "" - -#: cinder/api/contrib/volume_actions.py:199 -msgid "Unable to fetch connection information from backend." -msgstr "" - -#: cinder/api/contrib/volume_actions.py:220 -msgid "Unable to terminate volume connection from backend." -msgstr "" - -#: cinder/api/contrib/volume_actions.py:233 -msgid "No image_name was specified in request." -msgstr "No image_name was specified in request." - -#: cinder/api/contrib/volume_actions.py:241 -msgid "Bad value for 'force' parameter." -msgstr "" - -#: cinder/api/contrib/volume_actions.py:244 -msgid "'force' is not string or bool." -msgstr "" - -#: cinder/api/contrib/volume_actions.py:286 -msgid "New volume size must be specified as an integer." -msgstr "" - -#: cinder/api/contrib/volume_actions.py:305 -msgid "Must specify readonly in request." -msgstr "" - -#: cinder/api/contrib/volume_actions.py:313 -msgid "Bad value for 'readonly'" -msgstr "" - -#: cinder/api/contrib/volume_actions.py:317 -msgid "'readonly' not string or bool" -msgstr "" - -#: cinder/api/contrib/volume_actions.py:331 -msgid "New volume type must be specified." -msgstr "" - -#: cinder/api/contrib/volume_actions.py:350 -msgid "Must specify bootable in request." -msgstr "" - -#: cinder/api/contrib/volume_actions.py:358 -msgid "Bad value for 'bootable'" -msgstr "" - -#: cinder/api/contrib/volume_actions.py:362 -msgid "'bootable' not string or bool" -msgstr "" - -#: cinder/api/contrib/volume_manage.py:100 cinder/api/v2/snapshots.py:176 -#: cinder/api/v2/snapshots.py:236 cinder/api/v2/volumes.py:273 -#: cinder/api/v2/volumes.py:409 -#, python-format -msgid "Missing required element '%s' in request body" -msgstr "" - -#: cinder/api/contrib/volume_manage.py:111 -#, python-format -msgid "The following elements are required: %s" -msgstr "" - -#: cinder/api/contrib/volume_manage.py:129 cinder/api/v2/volumes.py:304 -msgid "Volume type not found." -msgstr "" - -#: cinder/api/contrib/volume_manage.py:145 -msgid "Service not found." -msgstr "" - -#: cinder/api/contrib/volume_replication.py:70 -#, python-format -msgid "Attempting to promote secondary replica to primary for volume %s." -msgstr "" - -#: cinder/api/contrib/volume_replication.py:76 -#: cinder/api/contrib/volume_replication.py:94 -#: cinder/api/contrib/volume_unmanage.py:60 cinder/api/v2/snapshots.py:192 -#: cinder/api/v2/volumes.py:175 cinder/api/v2/volumes.py:192 -#: cinder/api/v2/volumes.py:443 -msgid "Volume could not be found" -msgstr "" - -#: cinder/api/contrib/volume_replication.py:88 -#, python-format -msgid "Attempting to sync secondary replica with primary for volume %s." -msgstr "" - -#: cinder/api/contrib/volume_transfer.py:163 -#, fuzzy, python-format -msgid "Creating transfer of volume %s" -msgstr "Creating transfer of volume %s" - -#: cinder/api/contrib/volume_transfer.py:197 -#, fuzzy, python-format -msgid "Accepting transfer %s" -msgstr "Accepting transfer %s" - -#: cinder/api/contrib/volume_transfer.py:218 -#, fuzzy, python-format -msgid "Delete transfer with id: %s" -msgstr "Delete transfer with id: %s" - -#: cinder/api/contrib/volume_type_encryption.py:65 -msgid "key_size must be non-negative" -msgstr "" - -#: cinder/api/contrib/volume_type_encryption.py:68 -msgid "key_size must be an integer" -msgstr "" - -#: cinder/api/contrib/volume_type_encryption.py:74 -msgid "provider must be defined" -msgstr "" - -#: cinder/api/contrib/volume_type_encryption.py:76 -msgid "control_location must be defined" -msgstr "" - -#: cinder/api/contrib/volume_type_encryption.py:84 -#, python-format -msgid "Valid control location are: %s" -msgstr "" - -#: cinder/api/contrib/volume_type_encryption.py:112 -msgid "Cannot create encryption specs. Volume type in use." -msgstr "" - -#: cinder/api/contrib/volume_type_encryption.py:116 -msgid "Create body is not valid." -msgstr "" - -#: cinder/api/contrib/volume_type_encryption.py:142 -msgid "Request body empty." -msgstr "" - -#: cinder/api/contrib/volume_type_encryption.py:145 -msgid "Update body is not valid. It must contain \"encryption.\"" -msgstr "" - -#: cinder/api/contrib/volume_type_encryption.py:148 -msgid "Request body contains too many items." -msgstr "" - -#: cinder/api/contrib/volume_type_encryption.py:154 -msgid "Cannot update encryption specs. Volume type in use." -msgstr "" - -#: cinder/api/contrib/volume_type_encryption.py:188 -msgid "Cannot delete encryption specs. Volume type in use." -msgstr "" - -#: cinder/api/contrib/volume_unmanage.py:54 -#, python-format -msgid "Unmanage volume with id: %s" -msgstr "" - -#: cinder/api/contrib/volume_unmanage.py:63 cinder/api/v2/volumes.py:195 -msgid "Volume cannot be deleted while in attached state" -msgstr "" - -#: cinder/api/middleware/auth.py:113 -msgid "Invalid service catalog json." -msgstr "" - -#: cinder/api/middleware/fault.py:46 -#, python-format -msgid "Caught error: %s" -msgstr "Caught error: %s" - -#: cinder/api/middleware/fault.py:54 cinder/api/openstack/wsgi.py:980 -#, python-format -msgid "%(url)s returned with HTTP %(status)d" -msgstr "%(url)s returned with HTTP %(status)d" - -#: cinder/api/middleware/fault.py:70 -#, python-format -msgid "%(exception)s: %(explanation)s" -msgstr "" - -#: cinder/api/middleware/sizelimit.py:56 cinder/api/middleware/sizelimit.py:65 -#: cinder/api/middleware/sizelimit.py:79 -msgid "Request is too large." -msgstr "Request is too large." - -#: cinder/api/openstack/__init__.py:79 -msgid "Must specify an ExtensionManager class" -msgstr "Must specify an ExtensionManager class" - -#: cinder/api/openstack/__init__.py:114 -#, 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:136 -msgid "" -"cinder.api.openstack:FaultWrapper is deprecated. Please use " -"cinder.api.middleware.fault:FaultWrapper instead." -msgstr "" - -#: cinder/api/openstack/urlmap.py:26 -msgid "" -"cinder.api.openstack.urlmap:urlmap_factory is deprecated. Please use " -"cinder.api.urlmap:urlmap_factory instead." -msgstr "" - -#: cinder/api/openstack/wsgi.py:214 cinder/api/openstack/wsgi.py:630 -msgid "cannot understand JSON" -msgstr "cannot understand JSON" - -#: cinder/api/openstack/wsgi.py:635 -msgid "too many body keys" -msgstr "too many body keys" - -#: cinder/api/openstack/wsgi.py:673 -#, python-format -msgid "Exception handling resource: %s" -msgstr "Exception handling resource: %s" - -#: cinder/api/openstack/wsgi.py:678 -#, python-format -msgid "Fault thrown: %s" -msgstr "Fault thrown: %s" - -#: cinder/api/openstack/wsgi.py:681 -#, python-format -msgid "HTTP exception thrown: %s" -msgstr "HTTP exception thrown: %s" - -#: cinder/api/openstack/wsgi.py:910 -#, python-format -msgid "There is no such action: %s" -msgstr "There is no such action: %s" - -#: cinder/api/openstack/wsgi.py:913 cinder/api/openstack/wsgi.py:926 -#: cinder/api/v1/snapshot_metadata.py:54 cinder/api/v1/snapshot_metadata.py:72 -#: cinder/api/v1/snapshot_metadata.py:97 cinder/api/v1/snapshot_metadata.py:122 -#: cinder/api/v1/volume_metadata.py:54 cinder/api/v1/volume_metadata.py:72 -#: cinder/api/v1/volume_metadata.py:97 cinder/api/v1/volume_metadata.py:122 -#: cinder/api/v2/snapshot_metadata.py:54 cinder/api/v2/snapshot_metadata.py:72 -#: cinder/api/v2/snapshot_metadata.py:97 cinder/api/v2/snapshot_metadata.py:122 -#: cinder/api/v2/volume_metadata.py:53 cinder/api/v2/volume_metadata.py:71 -#: cinder/api/v2/volume_metadata.py:96 cinder/api/v2/volume_metadata.py:121 -msgid "Malformed request body" -msgstr "Malformed request body" - -#: cinder/api/openstack/wsgi.py:923 -msgid "Unsupported Content-Type" -msgstr "Unsupported Content-Type" - -#: cinder/api/openstack/wsgi.py:935 -msgid "Malformed request url" -msgstr "Malformed request url" - -#: cinder/api/openstack/wsgi.py:983 -#, python-format -msgid "%(url)s returned a fault: %(e)s" -msgstr "%(url)s returned a fault: %(e)s" - -#: cinder/api/openstack/volume/__init__.py:26 -msgid "" -"cinder.api.openstack.volume:APIRouter is deprecated. Please use " -"cinder.api.v1.router:APIRouter instead." -msgstr "" - -#: cinder/api/openstack/volume/versions.py:27 -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:139 -#, 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:262 -msgid "This request was rate-limited." -msgstr "This request was rate-limited." - -#: cinder/api/v1/snapshot_metadata.py:38 cinder/api/v1/snapshot_metadata.py:118 -#: cinder/api/v1/snapshot_metadata.py:157 cinder/api/v2/snapshot_metadata.py:38 -#: cinder/api/v2/snapshot_metadata.py:118 -#: cinder/api/v2/snapshot_metadata.py:157 -msgid "snapshot does not exist" -msgstr "snapshot does not exist" - -#: cinder/api/v1/snapshot_metadata.py:140 -#: cinder/api/v1/snapshot_metadata.py:150 cinder/api/v1/volume_metadata.py:140 -#: cinder/api/v1/volume_metadata.py:150 cinder/api/v2/snapshot_metadata.py:140 -#: cinder/api/v2/snapshot_metadata.py:150 cinder/api/v2/volume_metadata.py:139 -#: cinder/api/v2/volume_metadata.py:149 -msgid "Metadata item was not found" -msgstr "Metadata item was not found" - -#: cinder/api/v1/snapshots.py:120 cinder/api/v2/snapshots.py:121 -#, python-format -msgid "Delete snapshot with id: %s" -msgstr "Delete snapshot with id: %s" - -#: cinder/api/v1/snapshots.py:175 cinder/api/v2/snapshots.py:186 -msgid "'volume_id' must be specified" -msgstr "" - -#: cinder/api/v1/snapshots.py:184 cinder/api/v2/snapshots.py:195 -#, python-format -msgid "Create snapshot from volume %s" -msgstr "Create snapshot from volume %s" - -#: cinder/api/v1/snapshots.py:188 cinder/api/v2/snapshots.py:204 -#, python-format -msgid "Invalid value '%s' for force. " -msgstr "Invalid value '%s' for force. " - -#: cinder/api/v1/volume_metadata.py:38 cinder/api/v1/volume_metadata.py:118 -#: cinder/api/v1/volume_metadata.py:157 cinder/api/v2/volume_metadata.py:37 -#: cinder/api/v2/volume_metadata.py:117 cinder/api/v2/volume_metadata.py:156 -msgid "volume does not exist" -msgstr "volume does not exist" - -#: cinder/api/v1/volumes.py:116 -#, python-format -msgid "vol=%s" -msgstr "vol=%s" - -#: cinder/api/v1/volumes.py:247 cinder/api/v2/volumes.py:186 -#, python-format -msgid "Delete volume with id: %s" -msgstr "Delete volume with id: %s" - -#: cinder/api/v1/volumes.py:303 cinder/api/v1/volumes.py:307 -#: cinder/api/v2/volumes.py:258 cinder/api/v2/volumes.py:262 -msgid "Invalid imageRef provided." -msgstr "Invalid imageRef provided." - -#: cinder/api/v1/volumes.py:347 cinder/api/v2/volumes.py:315 -#, python-format -msgid "snapshot id:%s not found" -msgstr "" - -#: cinder/api/v1/volumes.py:360 -#, python-format -msgid "source vol id:%s not found" -msgstr "" - -#: cinder/api/v1/volumes.py:371 cinder/api/v2/volumes.py:370 -#, python-format -msgid "Create volume of %s GB" -msgstr "Create volume of %s GB" - -#: cinder/api/v2/snapshots.py:112 cinder/api/v2/snapshots.py:127 -#: cinder/api/v2/snapshots.py:269 -msgid "Snapshot could not be found" -msgstr "" - -#: cinder/api/v2/snapshots.py:232 cinder/api/v2/volumes.py:405 -msgid "Missing request body" -msgstr "" - -#: cinder/api/v2/types.py:71 -msgid "Volume type not found" -msgstr "" - -#: cinder/api/v2/volumes.py:327 -#, python-format -msgid "source volume id:%s not found" -msgstr "" - -#: cinder/api/v2/volumes.py:338 -#, python-format -msgid "source volume id:%s is not replicated" -msgstr "" - -#: cinder/api/v2/volumes.py:343 -#, python-format -msgid "replica source volume id:%s not found" -msgstr "" - -#: cinder/api/v2/volumes.py:356 -#, python-format -msgid "Consistency group id:%s not found" -msgstr "" - -#: cinder/backup/api.py:69 -msgid "Backup status must be available or error" -msgstr "Backup status must be available or error" - -#: cinder/backup/api.py:120 -msgid "Volume to be backed up must be available" -msgstr "Volume to be backed up must be available" - -#: cinder/backup/api.py:142 -#, python-format -msgid "" -"Quota exceeded for %(s_pid)s, tried to create %(s_size)sG backup " -"(%(d_consumed)dG of %(d_quota)dG already consumed)" -msgstr "" - -#: cinder/backup/api.py:154 -#, python-format -msgid "" -"Quota exceeded for %(s_pid)s, tried to create backups (%(d_consumed)d " -"backups already consumed)" -msgstr "" - -#: cinder/backup/api.py:198 -msgid "Backup status must be available" -msgstr "Backup status must be available" - -#: cinder/backup/api.py:203 -msgid "Backup to be restored has invalid size" -msgstr "Backup to be restored has invalid size" - -#: cinder/backup/api.py:212 -#, 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:228 -msgid "Volume to be restored to must be available" -msgstr "Volume to be restored to must be available" - -#: cinder/backup/api.py:234 -#, 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:239 -#, 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:290 -#, python-format -msgid "Backup status must be available and not %s." -msgstr "" - -#: cinder/backup/driver.py:58 -#, python-format -msgid "Value with type=%s is not serializable" -msgstr "" - -#: cinder/backup/driver.py:78 cinder/backup/driver.py:101 -#: cinder/backup/driver.py:125 -#, python-format -msgid "Unable to serialize field '%s' - excluding from backup" -msgstr "" - -#: cinder/backup/driver.py:234 -#, python-format -msgid "Unsupported backup metadata version (%s)" -msgstr "" - -#: cinder/backup/manager.py:108 -msgid "NULL host not allowed for volume backend lookup." -msgstr "" - -#: cinder/backup/manager.py:118 -#, python-format -msgid "Backend not found in hostname (%s) so using default." -msgstr "" - -#: cinder/backup/manager.py:134 -#, python-format -msgid "Volume manager for backend '%s' does not exist." -msgstr "" - -#: cinder/backup/manager.py:169 -#, python-format -msgid "Starting volume driver %(driver_name)s (%(version)s)." -msgstr "" - -#: cinder/backup/manager.py:176 -#, python-format -msgid "Error encountered during initialization of driver: %(name)s." -msgstr "" - -#: cinder/backup/manager.py:195 -msgid "Cleaning up incomplete backup operations." -msgstr "" - -#: cinder/backup/manager.py:201 -#, python-format -msgid "Resetting volume %s to available (was backing-up)." -msgstr "" - -#: cinder/backup/manager.py:206 -#, python-format -msgid "Resetting volume %s to error_restoring (was restoring-backup)." -msgstr "" - -#: cinder/backup/manager.py:218 -#, python-format -msgid "Resetting backup %s to error (was creating)." -msgstr "" - -#: cinder/backup/manager.py:224 -#, python-format -msgid "Resetting backup %s to available (was restoring)." -msgstr "" - -#: cinder/backup/manager.py:229 -#, python-format -msgid "Resuming delete on backup: %s." -msgstr "" - -#: cinder/backup/manager.py:237 -#, python-format -msgid "Create backup started, backup: %(backup_id)s volume: %(volume_id)s." -msgstr "" - -#: cinder/backup/manager.py:250 -#, python-format -msgid "" -"Create backup aborted, expected volume status %(expected_status)s but got" -" %(actual_status)s." -msgstr "" - -#: cinder/backup/manager.py:262 -#, python-format -msgid "" -"Create backup aborted, expected backup status %(expected_status)s but got" -" %(actual_status)s." -msgstr "" - -#: cinder/backup/manager.py:295 -#, python-format -msgid "Create backup finished. backup: %s." -msgstr "" - -#: cinder/backup/manager.py:299 -#, python-format -msgid "Restore backup started, backup: %(backup_id)s volume: %(volume_id)s." -msgstr "" - -#: cinder/backup/manager.py:313 -#, python-format -msgid "" -"Restore backup aborted, expected volume status %(expected_status)s but " -"got %(actual_status)s." -msgstr "" - -#: cinder/backup/manager.py:323 -#, python-format -msgid "" -"Restore backup aborted: expected backup status %(expected_status)s but " -"got %(actual_status)s." -msgstr "" - -#: cinder/backup/manager.py:333 -#, python-format -msgid "" -"Volume: %(vol_id)s, size: %(vol_size)d is larger than backup: " -"%(backup_id)s, size: %(backup_size)d, continuing with restore." -msgstr "" - -#: cinder/backup/manager.py:344 -#, 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:375 -#, python-format -msgid "" -"Restore backup finished, backup %(backup_id)s restored to volume " -"%(volume_id)s." -msgstr "" - -#: cinder/backup/manager.py:394 -#, python-format -msgid "Delete backup started, backup: %s." -msgstr "" - -#: cinder/backup/manager.py:401 -#, python-format -msgid "" -"Delete_backup aborted, expected backup status %(expected_status)s but got" -" %(actual_status)s." -msgstr "" - -#: cinder/backup/manager.py:413 -#, 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:444 -msgid "Failed to update usages deleting backup" -msgstr "" - -#: cinder/backup/manager.py:454 -#, python-format -msgid "Delete backup finished, backup %s deleted." -msgstr "" - -#: cinder/backup/manager.py:469 -#, python-format -msgid "Export record started, backup: %s." -msgstr "" - -#: cinder/backup/manager.py:476 -#, python-format -msgid "" -"Export backup aborted, expected backup status %(expected_status)s but got" -" %(actual_status)s." -msgstr "" - -#: cinder/backup/manager.py:487 -#, 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:505 -#, python-format -msgid "Export record finished, backup %s exported." -msgstr "" - -#: cinder/backup/manager.py:524 -#, python-format -msgid "Import record started, backup_url: %s." -msgstr "" - -#: cinder/backup/manager.py:540 -#, python-format -msgid "" -"Import record failed, cannot find backup service to perform the import. " -"Request service %(service)s" -msgstr "" - -#: cinder/backup/manager.py:575 -#, python-format -msgid "Backup metadata received from driver for import is missing %s." -msgstr "" - -#: cinder/backup/manager.py:591 -#, 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:603 -#, python-format -msgid "Import record id %s metadata from driver finished." -msgstr "" - -#: cinder/backup/manager.py:616 -#, python-format -msgid "Reset backup status started, backup_id: %(backup_id)s, status: %(status)s." -msgstr "" - -#: cinder/backup/manager.py:628 -msgid "Backup driver has not been initialized" -msgstr "" - -#: cinder/backup/manager.py:632 -#, python-format -msgid "Backup service: %s." -msgstr "" - -#: cinder/backup/manager.py:636 -#, python-format -msgid "" -"Reset backup status 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:655 cinder/backup/manager.py:677 -#, python-format -msgid "" -"Backup service %(configured_service)s does not support verify. Backup id " -"%(id)s is not verified. Skipping verify." -msgstr "" - -#: cinder/backup/manager.py:672 -#, python-format -msgid "Backup id %(id)s is not invalid. Skipping reset." -msgstr "" - -#: cinder/backup/manager.py:685 -#, python-format -msgid "" -"Backup service %(service)s does not support verify. Backup id %(id)s is " -"not verified. Skipping reset." -msgstr "" - -#: cinder/backup/drivers/ceph.py:129 cinder/tests/test_backup_ceph.py:968 -#, python-format -msgid "Metadata backup object '%s' already exists" -msgstr "" - -#: cinder/backup/drivers/ceph.py:180 -msgid "" -"RBD striping not supported - ignoring configuration settings for rbd " -"striping" -msgstr "" - -#: cinder/backup/drivers/ceph.py:203 -#, python-format -msgid "invalid user '%s'" -msgstr "" - -#: cinder/backup/drivers/ceph.py:269 -msgid "Backup id required" -msgstr "" - -#: cinder/backup/drivers/ceph.py:326 -#, python-format -msgid "Transferred chunk %(chunk)s of %(chunks)s (%(rate)dK/s)" -msgstr "" - -#: cinder/backup/drivers/ceph.py:427 -#, python-format -msgid "image %s not found" -msgstr "" - -#: cinder/backup/drivers/ceph.py:435 -#, python-format -msgid "" -"Backup base image of volume %(volume)s still has %(snapshots)s snapshots " -"so skipping base image delete." -msgstr "" - -#: cinder/backup/drivers/ceph.py:442 -#, python-format -msgid "Deleting backup base image='%(basename)s' of volume %(volume)s." -msgstr "" - -#: cinder/backup/drivers/ceph.py:451 -#, python-format -msgid "" -"Backup image of volume %(volume)s is busy, retrying %(retries)s more " -"time(s) in %(delay)ss." -msgstr "" - -#: cinder/backup/drivers/ceph.py:459 -#, python-format -msgid "" -"Max retries reached deleting backup %(basename)s image of volume " -"%(volume)s." -msgstr "" - -#: cinder/backup/drivers/ceph.py:494 -#, python-format -msgid "Pipe1 failed - %s " -msgstr "" - -#: cinder/backup/drivers/ceph.py:508 -#, python-format -msgid "Pipe2 failed - %s " -msgstr "" - -#: cinder/backup/drivers/ceph.py:552 -#, python-format -msgid "RBD diff op failed - (ret=%(ret)s stderr=%(stderr)s)" -msgstr "" - -#: cinder/backup/drivers/ceph.py:632 -#, python-format -msgid "" -"Snapshot='%(snap)s' does not exist in base image='%(base)s' - aborting " -"incremental backup" -msgstr "" - -#: cinder/backup/drivers/ceph.py:788 -#, python-format -msgid "Backup should only have one snapshot but instead has %s" -msgstr "" - -#: cinder/backup/drivers/ceph.py:814 -msgid "Need non-zero volume size" -msgstr "" - -#: cinder/backup/drivers/ceph.py:840 -#, python-format -msgid "Failed to backup volume metadata - %s" -msgstr "" - -#: cinder/backup/drivers/ceph.py:972 -msgid "Differential restore failed, trying full restore" -msgstr "" - -#: cinder/backup/drivers/ceph.py:1085 -#, python-format -msgid "" -"No restore point found for backup='%(backup)s' of volume %(volume)s - " -"forcing full copy." -msgstr "" - -#: cinder/backup/drivers/ceph.py:1142 cinder/backup/drivers/swift.py:499 -#: cinder/tests/test_backup_ceph.py:957 -msgid "Metadata restore failed due to incompatible version" -msgstr "" - -#: cinder/backup/drivers/ceph.py:1173 -#, python-format -msgid "Restore to volume %(volume)s finished with error - %(error)s." -msgstr "" - -#: cinder/backup/drivers/ceph.py:1185 -#, python-format -msgid "" -"RBD image for backup %(backup)s of volume %(volume)s not found. Deleting " -"backup metadata." -msgstr "" - -#: cinder/backup/drivers/ceph.py:1195 -#, python-format -msgid "" -"Delete of backup '%(backup)s' for volume '%(volume)s' finished with " -"warning." -msgstr "" - -#: cinder/backup/drivers/swift.py:122 -#, python-format -msgid "unsupported compression algorithm: %s" -msgstr "unsupported compression algorithm: %s" - -#: cinder/backup/drivers/swift.py:133 -msgid "" -"Failed to parse the configuration option 'swift_catalog_info', must be in" -" the form ::" -msgstr "" - -#: cinder/backup/drivers/swift.py:145 -msgid "" -"Could not determine which Swift endpoint to use. This can either be set " -"in the service catalog or with the cinder.conf config option " -"'backup_swift_url'." -msgstr "" - -#: cinder/backup/drivers/swift.py:160 -#, python-format -msgid "single_user auth mode enabled, but %(param)s not set" -msgstr "" - -#: cinder/backup/drivers/swift.py:238 -#, 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:263 -#, python-format -msgid "volume size %d is invalid." -msgstr "volume size %d is invalid." - -#: cinder/backup/drivers/swift.py:334 -#, 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:395 -#, python-format -msgid "Backup volume metadata to swift failed: %s" -msgstr "" - -#: cinder/backup/drivers/swift.py:415 -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:487 -#, 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:517 -msgid "swift error while listing objects, continuing with delete" -msgstr "swift error while listing objects, continuing with delete" - -#: cinder/backup/drivers/swift.py:526 -#, 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/tsm.py:79 -#, 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:114 -#, 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:212 -#, 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:222 -#, python-format -msgid "backup: %(vol_id)s failed. Cannot obtain real path to volume at %(path)s." -msgstr "" - -#: cinder/backup/drivers/tsm.py:229 -#, python-format -msgid "backup: %(vol_id)s failed. %(path)s is not a file." -msgstr "" - -#: cinder/backup/drivers/tsm.py:252 -#, 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:299 -#, 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:340 -#, python-format -msgid "" -"restore: %(vol_id)s failed.\n" -"stdout: %(out)s\n" -" stderr: %(err)s." -msgstr "" - -#: cinder/backup/drivers/tsm.py:363 -msgid "" -"Volume metadata backup requested but this driver does not yet support " -"this feature." -msgstr "" - -#: cinder/backup/drivers/tsm.py:392 -#, 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:402 -#, 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:453 -#, 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:463 -#, 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:509 -#, 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:517 -#, 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:531 -#, python-format -msgid "" -"delete: %(vol_id)s failed with stdout: %(out)s\n" -" stderr: %(err)s" -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:317 -#, python-format -msgid "Could not find the iSCSI Initiator File %s" -msgstr "" - -#: cinder/brick/initiator/connector.py:610 -msgid "We are unable to locate any Fibre Channel devices" -msgstr "" - -#: cinder/brick/initiator/connector.py:630 -msgid "Fibre Channel volume device not found." -msgstr "" - -#: cinder/brick/initiator/connector.py:634 -#, python-format -msgid "Fibre volume not yet found. Will rescan & retry. Try number: %(tries)s" -msgstr "" - -#: cinder/brick/initiator/connector.py:778 -#, python-format -msgid "AoE volume not yet found at: %(path)s. Try number: %(tries)s" -msgstr "" - -#: cinder/brick/initiator/connector.py:860 -msgid "" -"Connection details not present. RemoteFsClient may not initialize " -"properly." -msgstr "" - -#: cinder/brick/initiator/connector.py:917 -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:104 -#, python-format -msgid "Failed to flush IO buffers prior to removingdevice: (%(code)s)" -msgstr "" - -#: cinder/brick/initiator/linuxscsi.py:114 -#: cinder/brick/initiator/linuxscsi.py:122 -#: cinder/brick/initiator/linuxscsi.py:139 -#, python-format -msgid "multipath call failed exit (%(code)s)" -msgstr "" - -#: cinder/brick/initiator/linuxscsi.py:160 -#, python-format -msgid "Couldn't find multipath device %(line)s" -msgstr "" - -#: cinder/brick/iscsi/iscsi.py:139 -msgid "Attempting recreate of backing lun..." -msgstr "" - -#: cinder/brick/iscsi/iscsi.py:157 -#, 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:178 -#, python-format -msgid "Creating iscsi_target for: %s" -msgstr "Creating iscsi_target for: %s" - -#: cinder/brick/iscsi/iscsi.py:217 cinder/brick/iscsi/iscsi.py:375 -#, 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:228 -#, 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:258 -#, python-format -msgid "Removing iscsi_target for: %s" -msgstr "Removing iscsi_target for: %s" - -#: cinder/brick/iscsi/iscsi.py:262 -#, python-format -msgid "Volume path %s does not exist, nothing to remove." -msgstr "" - -#: cinder/brick/iscsi/iscsi.py:280 cinder/brick/iscsi/iscsi.py:304 -#, 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:297 -msgid "Silent failure of target removal detected, retry...." -msgstr "" - -#: cinder/brick/iscsi/iscsi.py:322 cinder/brick/iscsi/iscsi.py:554 -msgid "valid iqn needed for show_target" -msgstr "valid iqn needed for show_target" - -#: cinder/brick/iscsi/iscsi.py:382 -#, python-format -msgid "Removing iscsi_target for volume: %s" -msgstr "Removing iscsi_target for volume: %s" - -#: cinder/brick/iscsi/iscsi.py:476 -msgid "cinder-rtstool is not installed correctly" -msgstr "" - -#: cinder/brick/iscsi/iscsi.py:496 -#, python-format -msgid "Creating iscsi_target for volume: %s" -msgstr "Creating iscsi_target for volume: %s" - -#: cinder/brick/iscsi/iscsi.py:520 cinder/brick/iscsi/iscsi.py:529 -#, python-format -msgid "Failed to create iscsi target for volume id:%s." -msgstr "" - -#: cinder/brick/iscsi/iscsi.py:536 -#, python-format -msgid "Removing iscsi_target: %s" -msgstr "Removing iscsi_target: %s" - -#: cinder/brick/iscsi/iscsi.py:546 -#, python-format -msgid "Failed to remove iscsi target for volume id:%s." -msgstr "" - -#: cinder/brick/iscsi/iscsi.py:575 -#, 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:74 -#, fuzzy -msgid "Error creating Volume Group" -msgstr "Error creating Volume Group" - -#: cinder/brick/local_dev/lvm.py:75 cinder/brick/local_dev/lvm.py:157 -#: cinder/brick/local_dev/lvm.py:477 cinder/brick/local_dev/lvm.py:507 -#: cinder/brick/local_dev/lvm.py:550 cinder/brick/local_dev/lvm.py:631 -#: cinder/brick/local_dev/lvm.py:669 -#, python-format -msgid "Cmd :%s" -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:632 -#: cinder/brick/local_dev/lvm.py:670 -#, fuzzy, python-format -msgid "StdOut :%s" -msgstr "StdOut :%s" - -#: 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:633 -#: cinder/brick/local_dev/lvm.py:671 -#, fuzzy, python-format -msgid "StdErr :%s" -msgstr "StdErr :%s" - -#: cinder/brick/local_dev/lvm.py:81 -#, fuzzy, python-format -msgid "Unable to locate Volume Group %s" -msgstr "Unable to locate Volume Group %s" - -#: cinder/brick/local_dev/lvm.py:156 -msgid "Error querying thin pool about data_percent" -msgstr "" - -#: cinder/brick/local_dev/lvm.py:369 -#, fuzzy, python-format -msgid "Unable to find VG: %s" -msgstr "Unable to find VG: %s" - -#: cinder/brick/local_dev/lvm.py:419 -msgid "" -"Requested to setup thin provisioning, however current LVM version does " -"not support it." -msgstr "" - -#: cinder/brick/local_dev/lvm.py:476 -msgid "Error creating Volume" -msgstr "" - -#: cinder/brick/local_dev/lvm.py:492 -#, python-format -msgid "Trying to create snapshot by non-existent LV: %s" -msgstr "" - -#: cinder/brick/local_dev/lvm.py:506 -msgid "Error creating snapshot" -msgstr "" - -#: cinder/brick/local_dev/lvm.py:549 -msgid "Error activating LV" -msgstr "" - -#: cinder/brick/local_dev/lvm.py:579 -#, python-format -msgid "Error reported running lvremove: CMD: %(command)s, RESPONSE: %(response)s" -msgstr "" - -#: cinder/brick/local_dev/lvm.py:630 -msgid "Error extending Volume" -msgstr "" - -#: cinder/brick/local_dev/lvm.py:668 -msgid "Error renaming logical volume" -msgstr "" - -#: cinder/brick/remotefs/remotefs.py:42 -msgid "nfs_mount_point_base required" -msgstr "" - -#: cinder/brick/remotefs/remotefs.py:49 -msgid "smbfs_mount_point_base required" -msgstr "" - -#: cinder/brick/remotefs/remotefs.py:55 -msgid "glusterfs_mount_point_base required" -msgstr "" - -#: cinder/brick/remotefs/remotefs.py:96 -#, python-format -msgid "Already mounted: %s" -msgstr "" - -#: cinder/brick/remotefs/remotefs.py:136 -#, python-format -msgid "NFS mount failed for share %(sh)s. Error - %(error)s" -msgstr "" - -#: cinder/common/config.py:122 -msgid "DEPRECATED: Deploy v1 of the Cinder API." -msgstr "" - -#: cinder/common/config.py:125 -msgid "Deploy v2 of the Cinder API." -msgstr "" - -#: cinder/common/sqlalchemyutils.py:67 -msgid "Id not in sort_keys; is sort_keys unique?" -msgstr "Id not in sort_keys; is sort_keys unique?" - -#: cinder/common/sqlalchemyutils.py:115 -msgid "Unknown sort direction, must be 'desc' or 'asc'" -msgstr "Unknown sort direction, must be 'desc' or 'asc'" - -#: cinder/consistencygroup/api.py:100 -#: cinder/volume/flows/api/create_volume.py:312 -#, python-format -msgid "Availability zone '%s' is invalid" -msgstr "" - -#: cinder/consistencygroup/api.py:139 -#, python-format -msgid "Error occurred when creating consistency group %s." -msgstr "" - -#: cinder/consistencygroup/api.py:202 -#, python-format -msgid "Error occurred when building request spec list for consistency group %s." -msgstr "" - -#: cinder/consistencygroup/api.py:229 -#, python-format -msgid "Failed to update quota for consistency group %s." -msgstr "" - -#: cinder/consistencygroup/api.py:245 -#, python-format -msgid "" -"Consistency group status must be available or error, but current status " -"is: %s" -msgstr "" - -#: cinder/consistencygroup/api.py:253 -#, python-format -msgid "Consistency group %s still has dependent cgsnapshots." -msgstr "" - -#: cinder/consistencygroup/api.py:262 -#, python-format -msgid "" -"Consistency group %s still contains volumes. The force flag is required " -"to delete it." -msgstr "" - -#: cinder/consistencygroup/api.py:269 -#, python-format -msgid "Volume in consistency group %s is attached. Need to detach first." -msgstr "" - -#: cinder/consistencygroup/api.py:277 -msgid "Volume in consistency group still has dependent snapshots." -msgstr "" - -#: cinder/consistencygroup/api.py:357 -msgid "Consistency group is empty. No cgsnapshot will be created." -msgstr "" - -#: cinder/consistencygroup/api.py:371 cinder/volume/manager.py:1814 -#, python-format -msgid "Error occurred when creating cgsnapshot %s." -msgstr "" - -#: cinder/consistencygroup/api.py:380 -msgid "Cgsnapshot status must be available or error" -msgstr "" - -#: cinder/db/sqlalchemy/api.py:100 -msgid "Use of empty request context is deprecated" -msgstr "Use of empty request context is deprecated" - -#: cinder/db/sqlalchemy/api.py:212 -#, python-format -msgid "Deadlock detected when running '%(func_name)s': Retrying..." -msgstr "" - -#: cinder/db/sqlalchemy/api.py:245 -#, python-format -msgid "Unrecognized read_deleted value '%s'" -msgstr "Unrecognized read_deleted value '%s'" - -#: cinder/db/sqlalchemy/api.py:892 -#, python-format -msgid "Change will make usage less than 0 for the following resources: %s" -msgstr "" - -#: cinder/db/sqlalchemy/api.py:1354 -msgid "'migration_status' column could not be found." -msgstr "" - -#: cinder/db/sqlalchemy/api.py:1364 -msgid "'metadata' filter value is not valid." -msgstr "" - -#: cinder/db/sqlalchemy/api.py:1374 -#, python-format -msgid "'%s' filter key is not valid, it maps to a relationship." -msgstr "" - -#: cinder/db/sqlalchemy/api.py:1379 -#, python-format -msgid "'%s' filter key is not valid." -msgstr "" - -#: cinder/db/sqlalchemy/api.py:2078 -#, python-format -msgid "VolumeType %s deletion failed, VolumeType in use." -msgstr "" - -#: cinder/db/sqlalchemy/api.py:2798 -#, python-format -msgid "No backup with id %s" -msgstr "" - -#: cinder/db/sqlalchemy/api.py:2882 -#, fuzzy -msgid "Volume must be available" -msgstr "Volume must be available" - -#: cinder/db/sqlalchemy/api.py:2908 -#, python-format -msgid "Volume in unexpected state %s, expected awaiting-transfer" -msgstr "" - -#: cinder/db/sqlalchemy/api.py:2930 -#, python-format -msgid "" -"Transfer %(transfer_id)s: Volume id %(volume_id)s in unexpected state " -"%(status)s, expected awaiting-transfer" -msgstr "" - -#: cinder/db/sqlalchemy/api.py:3035 -#, python-format -msgid "No consistency group with id %s" -msgstr "" - -#: cinder/db/sqlalchemy/api.py:3123 -#, python-format -msgid "No cgsnapshot with id %s" -msgstr "" - -#: cinder/db/sqlalchemy/migration.py:38 -msgid "version should be an integer" -msgstr "version should be an integer" - -#: cinder/db/sqlalchemy/migration.py:65 -msgid "Upgrade DB using Essex release first." -msgstr "Upgrade DB using Essex release first." - -#: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:241 -msgid "Exception while creating table." -msgstr "Exception while creating table." - -#: cinder/db/sqlalchemy/migrate_repo/versions/001_cinder_init.py:271 -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:50 -#: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:75 -#: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:106 -#: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:57 -#: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:46 -#: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:49 -#: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:81 -#: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:47 -#: cinder/db/sqlalchemy/migrate_repo/versions/025_add_consistencygroup.py:53 -#: cinder/db/sqlalchemy/migrate_repo/versions/025_add_consistencygroup.py:79 -#, python-format -msgid "Table |%s| not created!" -msgstr "Table |%s| not created!" - -#: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:128 -msgid "Dropping foreign key reservations_ibfk_1 failed." -msgstr "" - -#: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:134 -msgid "quota_classes table not dropped" -msgstr "quota_classes table not dropped" - -#: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:141 -msgid "quota_usages table not dropped" -msgstr "quota_usages table not dropped" - -#: cinder/db/sqlalchemy/migrate_repo/versions/002_quota_class.py:148 -msgid "reservations table not dropped" -msgstr "reservations table not dropped" - -#: cinder/db/sqlalchemy/migrate_repo/versions/003_glance_metadata.py:59 -#, 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:74 -msgid "volume_glance_metadata table not dropped" -msgstr "volume_glance_metadata table not dropped" - -#: cinder/db/sqlalchemy/migrate_repo/versions/008_add_backup.py:69 -msgid "backups table not dropped" -msgstr "backups table not dropped" - -#: cinder/db/sqlalchemy/migrate_repo/versions/009_add_snapshot_metadata_table.py:59 -msgid "snapshot_metadata table not dropped" -msgstr "snapshot_metadata table not dropped" - -#: cinder/db/sqlalchemy/migrate_repo/versions/010_add_transfers_table.py:62 -#, fuzzy -msgid "transfers table not dropped" -msgstr "transfers table not dropped" - -#: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:32 -msgid "migrations table not dropped" -msgstr "" - -#: cinder/db/sqlalchemy/migrate_repo/versions/015_drop_migrations_table.py:62 -#, python-format -msgid "Table |%s| not created" -msgstr "" - -#: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:38 -#, python-format -msgid "Exception while dropping table %s." -msgstr "" - -#: cinder/db/sqlalchemy/migrate_repo/versions/016_drop_sm_tables.py:101 -#, python-format -msgid "Exception while creating table %s." -msgstr "" - -#: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:35 -#: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:44 -#: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:50 -#, python-format -msgid "Column |%s| not created!" -msgstr "" - -#: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:93 -msgid "encryption_key_id column not dropped from volumes" -msgstr "" - -#: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:101 -msgid "encryption_key_id column not dropped from snapshots" -msgstr "" - -#: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:106 -msgid "volume_type_id column not dropped from snapshots" -msgstr "" - -#: cinder/db/sqlalchemy/migrate_repo/versions/017_add_encryption_information.py:114 -msgid "encryption table not dropped" -msgstr "" - -#: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:50 -msgid "Table quality_of_service_specs not created!" -msgstr "" - -#: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:61 -msgid "Added qos_specs_id column to volume type table failed." -msgstr "" - -#: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:86 -msgid "Dropping foreign key volume_types_ibfk_1 failed" -msgstr "" - -#: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:94 -msgid "Dropping qos_specs_id column failed." -msgstr "" - -#: cinder/db/sqlalchemy/migrate_repo/versions/018_add_qos_specs.py:101 -msgid "Dropping quality_of_service_specs table failed." -msgstr "" - -#: cinder/db/sqlalchemy/migrate_repo/versions/020_add_volume_admin_metadata_table.py:60 -msgid "volume_admin_metadata table not dropped" -msgstr "" - -#: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:50 -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:74 -msgid "Added default quota class data into the DB." -msgstr "" - -#: cinder/db/sqlalchemy/migrate_repo/versions/021_add_default_quota_class.py:76 -msgid "Default quota class data not inserted into the DB." -msgstr "" - -#: cinder/db/sqlalchemy/migrate_repo/versions/023_add_expire_reservations_index.py:36 -msgid "" -"Skipped adding reservations_deleted_expire_idx because an equivalent " -"index already exists." -msgstr "" - -#: cinder/db/sqlalchemy/migrate_repo/versions/023_add_expire_reservations_index.py:58 -msgid "" -"Skipped removing reservations_deleted_expire_idx because index does not " -"exist." -msgstr "" - -#: cinder/db/sqlalchemy/migrate_repo/versions/025_add_consistencygroup.py:90 -msgid "Adding consistencygroup_id column to volumes table failed." -msgstr "" - -#: cinder/db/sqlalchemy/migrate_repo/versions/025_add_consistencygroup.py:103 -msgid "Adding cgsnapshot_id column to snapshots table failed." -msgstr "" - -#: cinder/db/sqlalchemy/migrate_repo/versions/025_add_consistencygroup.py:127 -msgid "Dropping foreign key 'cgsnapshot_id' in the 'snapshots' table failed." -msgstr "" - -#: cinder/db/sqlalchemy/migrate_repo/versions/025_add_consistencygroup.py:149 -msgid "Dropping foreign key 'consistencygroup_id' in the 'volumes' table failed." -msgstr "" - -#: cinder/db/sqlalchemy/migrate_repo/versions/025_add_consistencygroup.py:161 -msgid "cgsnapshots table not dropped" -msgstr "" - -#: cinder/db/sqlalchemy/migrate_repo/versions/025_add_consistencygroup.py:169 -msgid "consistencygroups table not dropped" -msgstr "" - -#: cinder/db/sqlalchemy/migrate_repo/versions/026_add_consistencygroup_quota_class.py:48 -msgid "" -"Found existing 'consistencygroups' entries in thequota_classes table. " -"Skipping insertion." -msgstr "" - -#: cinder/db/sqlalchemy/migrate_repo/versions/026_add_consistencygroup_quota_class.py:60 -msgid "Added default consistencygroups quota class data into the DB." -msgstr "" - -#: cinder/db/sqlalchemy/migrate_repo/versions/026_add_consistencygroup_quota_class.py:63 -msgid "Default consistencygroups quota class data not inserted into the DB." -msgstr "" - -#: cinder/image/glance.py:172 cinder/image/glance.py:180 -#, 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:93 -#, python-format -msgid "Converted %(sz).2f MB image at %(mbps).2f MB/s" -msgstr "" - -#: cinder/image/image_utils.py:125 -#, python-format -msgid "Image download %(sz).2f MB at %(mbps).2f MB/s" -msgstr "" - -#: cinder/image/image_utils.py:139 cinder/image/image_utils.py:244 -msgid "'qemu-img info' parsing failed." -msgstr "'qemu-img info' parsing failed." - -#: cinder/image/image_utils.py:146 -#, python-format -msgid "fmt=%(fmt)s backed by: %(backing_file)s" -msgstr "" - -#: cinder/image/image_utils.py:154 cinder/image/image_utils.py:237 -#, 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:202 -#, 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:209 -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:251 -#, 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:270 -#, python-format -msgid "Converted to %(vol_format)s, but format is now %(file_format)s" -msgstr "" - -#: cinder/image/image_utils.py:307 -#, 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/barbican.py:55 -msgid "User is not authorized to use key manager." -msgstr "" - -#: cinder/keymgr/barbican.py:69 -#, python-format -msgid "Error creating Barbican client: %s" -msgstr "" - -#: cinder/keymgr/barbican.py:99 -#, python-format -msgid "Error creating key: %s" -msgstr "" - -#: cinder/keymgr/barbican.py:150 -#, python-format -msgid "Error storing key: %s" -msgstr "" - -#: cinder/keymgr/barbican.py:178 -#, python-format -msgid "Error copying key: %s" -msgstr "" - -#: cinder/keymgr/barbican.py:214 -#, python-format -msgid "Error getting secret data: %s" -msgstr "" - -#: cinder/keymgr/barbican.py:233 -#, python-format -msgid "Error getting secret metadata: %s" -msgstr "" - -#: cinder/keymgr/barbican.py:264 -#, python-format -msgid "Error getting key: %s" -msgstr "" - -#: cinder/keymgr/barbican.py:281 -#, python-format -msgid "Error deleting key: %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/gettextutils.py:301 -msgid "Message objects do not support addition." -msgstr "" - -#: cinder/openstack/common/gettextutils.py:311 -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:290 -#, python-format -msgid "Deprecated: %s" -msgstr "Deprecated: %s" - -#: cinder/openstack/common/log.py:398 -#, 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:459 -#, python-format -msgid "syslog facility must be one of: %s" -msgstr "syslog facility must be one of: %s" - -#: cinder/openstack/common/log.py:710 -#, python-format -msgid "Fatal call to deprecated config: %(msg)s" -msgstr "Fatal call to deprecated config: %(msg)s" - -#: cinder/openstack/common/periodic_task.py:40 -#, python-format -msgid "Unexpected argument for periodic task creation: %(arg)s." -msgstr "" - -#: cinder/openstack/common/policy.py:96 -msgid "The JSON file that defines policies." -msgstr "" - -#: cinder/openstack/common/policy.py:99 -msgid "Default rule. Enforced when a requested rule is not found." -msgstr "" - -#: cinder/openstack/common/policy.py:114 -#, python-format -msgid "Policy doesn't allow %s to be performed." -msgstr "" - -#: cinder/openstack/common/policy.py:208 -#, python-format -msgid "Rules must be an instance of dict or Rules, got %s instead" -msgstr "" - -#: cinder/openstack/common/processutils.py:59 -msgid "Unexpected error while running command." -msgstr "" - -#: cinder/openstack/common/processutils.py:62 -#, python-format -msgid "" -"%(description)s\n" -"Command: %(cmd)s\n" -"Exit code: %(exit_code)s\n" -"Stdout: %(stdout)r\n" -"Stderr: %(stderr)r" -msgstr "" - -#: cinder/openstack/common/processutils.py:143 -#, python-format -msgid "Got unknown keyword args: %r" -msgstr "" - -#: cinder/openstack/common/processutils.py:148 -msgid "Command requested root, but did not specify a root helper." -msgstr "" - -#: cinder/openstack/common/processutils.py:158 -#, python-format -msgid "Running cmd (subprocess): %s" -msgstr "" - -#: cinder/openstack/common/processutils.py:206 -#, python-format -msgid "%r failed. Retrying." -msgstr "" - -#: cinder/openstack/common/processutils.py:247 -msgid "Environment not supported over SSH" -msgstr "Environment not supported over SSH" - -#: cinder/openstack/common/processutils.py:251 -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/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/openstack/common/sslutils.py:98 -#, python-format -msgid "Invalid SSL version : %s" -msgstr "" - -#: cinder/openstack/common/strutils.py:125 -#, python-format -msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" -msgstr "" - -#: cinder/openstack/common/strutils.py:230 -#, python-format -msgid "Invalid unit system: \"%s\"" -msgstr "" - -#: cinder/openstack/common/strutils.py:239 -#, 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/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/replication/api.py:73 -msgid "Replication is not enabled for volume" -msgstr "" - -#: cinder/replication/api.py:78 -#, python-format -msgid "" -"Replication status for volume must be active or active-stopped, but " -"current status is: %s" -msgstr "" - -#: cinder/replication/api.py:86 -#, python-format -msgid "Volume status for volume must be available, but current status is: %s" -msgstr "" - -#: cinder/replication/api.py:99 -msgid "Replication is not enabled" -msgstr "" - -#: cinder/replication/api.py:104 -#, python-format -msgid "" -"Replication status for volume must be inactive, active-stopped, or error," -" but current status is: %s" -msgstr "" - -#: cinder/scheduler/driver.py:80 -msgid "Must implement host_passes_filters" -msgstr "" - -#: cinder/scheduler/driver.py:85 -msgid "Must implement find_retype_host" -msgstr "" - -#: cinder/scheduler/driver.py:89 -msgid "Must implement a fallback schedule" -msgstr "Must implement a fallback schedule" - -#: cinder/scheduler/driver.py:93 -msgid "Must implement schedule_create_volume" -msgstr "Must implement schedule_create_volume" - -#: cinder/scheduler/driver.py:99 -msgid "Must implement schedule_create_consistencygroup" -msgstr "" - -#: cinder/scheduler/driver.py:104 -msgid "Must implement schedule_get_pools" -msgstr "" - -#: cinder/scheduler/filter_scheduler.py:119 -#, python-format -msgid "Cannot place volume %(id)s on %(host)s" -msgstr "" - -#: cinder/scheduler/filter_scheduler.py:136 -#, python-format -msgid "No valid hosts for volume %(id)s with type %(type)s" -msgstr "" - -#: cinder/scheduler/filter_scheduler.py:162 -#, python-format -msgid "" -"Current host not valid for volume %(id)s with type %(type)s, migration " -"not allowed" -msgstr "" - -#: cinder/scheduler/filter_scheduler.py:197 -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:215 -#, 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:248 -#, 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:400 -#, python-format -msgid "No weighed hosts found for volume with properties: %s" -msgstr "" - -#: cinder/scheduler/host_manager.py:455 -#, python-format -msgid "volume service is down. (host: %s)" -msgstr "" - -#: cinder/scheduler/host_manager.py:474 -#, python-format -msgid "Removing non-active host: %(host)s from scheduler cache." -msgstr "" - -#: cinder/scheduler/manager.py:68 -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:100 cinder/tests/scheduler/test_scheduler.py:226 -#, python-format -msgid "Could not find a host for consistency group %(group_id)s." -msgstr "" - -#: cinder/scheduler/manager.py:108 cinder/tests/scheduler/test_scheduler.py:212 -#, python-format -msgid "Failed to create consistency group %(group_id)s." -msgstr "" - -#: cinder/scheduler/manager.py:127 cinder/scheduler/manager.py:129 -msgid "Failed to create scheduler manager volume flow" -msgstr "" - -#: cinder/scheduler/manager.py:190 -msgid "New volume type not specified in request_spec." -msgstr "" - -#: cinder/scheduler/manager.py:205 -#, python-format -msgid "Could not find a host for volume %(volume_id)s with type %(type_id)s." -msgstr "" - -#: cinder/scheduler/manager.py:251 -#, python-format -msgid "Failed to schedule_%(method)s: %(ex)s" -msgstr "Failed to schedule_%(method)s: %(ex)s" - -#: cinder/scheduler/scheduler_options.py:69 -#, 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:79 -#, python-format -msgid "Could not decode scheduler options: '%s'" -msgstr "" - -#: cinder/scheduler/filters/capacity_filter.py:44 -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:62 -#, python-format -msgid "" -"Insufficient free space for volume creation on host %(host)s (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:103 -#, python-format -msgid "Failed to run task %(name)s: %(cause)s" -msgstr "" - -#: cinder/scheduler/flows/create_volume.py:120 -#, python-format -msgid "Failed notifying on %(topic)s payload %(payload)s" -msgstr "" - -#: cinder/tests/fake_driver.py:135 -msgid "local_path not implemented" -msgstr "" - -#: cinder/tests/test_backup_ceph.py:500 cinder/tests/test_backup_ceph.py:512 -#: cinder/tests/test_backup_ceph.py:574 -msgid "mock" -msgstr "" - -#: cinder/tests/test_backup_ceph.py:981 -#, python-format -msgid "" -"Failed to backup volume metadata - Metadata backup object " -"'backup.%s.meta' already exists" -msgstr "" - -#: cinder/tests/test_backup_swift.py:182 cinder/tests/test_backup_swift.py:207 -msgid "fake" -msgstr "" - -#: cinder/tests/test_fujitsu.py:176 -msgid "method is not exist " -msgstr "" - -#: cinder/tests/test_glusterfs.py:758 -msgid "umount: : target is busy" -msgstr "" - -#: cinder/tests/test_glusterfs.py:773 -msgid "umount: : some other error" -msgstr "" - -#: cinder/tests/test_glusterfs.py:904 -#, python-format -msgid "umount: %s: not mounted" -msgstr "" - -#: cinder/tests/test_glusterfs.py:916 cinder/tests/test_glusterfs.py:928 -#, python-format -msgid "umount: %s: target is busy" -msgstr "" - -#: cinder/tests/test_ibm_xiv_ds8k.py:133 -#, 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:59 -#, 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:667 cinder/volume/drivers/netapp/iscsi.py:272 -#, python-format -msgid "No iscsi target details were found for LUN %s" -msgstr "" - -#: cinder/tests/test_netapp.py:673 -msgid "Expected exception message is missing" -msgstr "" - -#: cinder/tests/test_netapp.py:675 -msgid "VolumeBackendAPIException not raised" -msgstr "" - -#: cinder/tests/test_netapp.py:1333 -msgid "Error not a TypeError." -msgstr "" - -#: cinder/tests/test_netapp.py:1342 -msgid "Error not a KeyError." -msgstr "" - -#: cinder/tests/test_netapp_nfs.py:366 -#, python-format -msgid "Share %(share)s and file name %(file_name)s" -msgstr "" - -#: cinder/tests/test_rbd.py:928 cinder/volume/drivers/rbd.py:177 -msgid "flush() not supported in this version of librbd" -msgstr "" - -#: cinder/tests/test_storwize_svc.py:256 -#, python-format -msgid "unrecognized argument %s" -msgstr "unrecognized argument %s" - -#: cinder/tests/test_volume_types.py:63 -#, python-format -msgid "Given data: %s" -msgstr "Given data: %s" - -#: cinder/tests/test_volume_types.py:64 -#, python-format -msgid "Result data: %s" -msgstr "Result data: %s" - -#: cinder/tests/api/contrib/test_backups.py:777 -msgid "Invalid input" -msgstr "Invalid input" - -#: cinder/tests/api/contrib/test_consistencygroups.py:387 -msgid "" -"Invalid ConsistencyGroup: Consistency group status must be available or " -"error, but current status is: invalid" -msgstr "" - -#: cinder/tests/api/contrib/test_consistencygroups.py:456 -#, python-format -msgid "volume_types must be provided to create consistency group %s." -msgstr "" - -#: cinder/tests/api/middleware/test_faults.py:127 -#, python-format -msgid "String with params: %s" -msgstr "" - -#: cinder/tests/api/middleware/test_faults.py:147 -#, python-format -msgid "Invalid input: %(reason)s" -msgstr "" - -#: cinder/tests/api/middleware/test_faults.py:148 -msgid "Value is invalid" -msgstr "" - -#: cinder/tests/brick/test_brick_connector.py:462 -msgid "in fixed duration looping call" -msgstr "in fixed duration looping call" - -#: cinder/tests/brick/test_brick_remotefs.py:100 -msgid "Unexpected call to _execute." -msgstr "" - -#: cinder/tests/brick/test_brick_remotefs.py:133 -msgid "mount failed." -msgstr "" - -#: 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:158 -msgid "Unexpected status code" -msgstr "Unexpected status code" - -#: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:127 -#, python-format -msgid "In Add GlobalVars._is_normal_test: %s" -msgstr "" - -#: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:129 -#, python-format -msgid "In Add GlobalVars._zone_state: %s" -msgstr "" - -#: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:184 -#, python-format -msgid "User: %s" -msgstr "" - -#: cinder/tests/zonemanager/test_brcd_fc_zone_driver.py:185 -#, python-format -msgid "_zone_state: %s" -msgstr "" - -#: cinder/transfer/api.py:68 -#, fuzzy -msgid "Volume in unexpected state" -msgstr "Volume in unexpected state" - -#: cinder/transfer/api.py:107 -msgid "status must be available" -msgstr "status must be available" - -#: cinder/transfer/api.py:124 -#, fuzzy, python-format -msgid "Failed to create transfer record for %s" -msgstr "Failed to create transfer record for %s" - -#: cinder/transfer/api.py:141 -#, python-format -msgid "Attempt to transfer %s with invalid auth key." -msgstr "" - -#: cinder/transfer/api.py:161 cinder/volume/flows/api/create_volume.py:581 -#, 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:187 -#, 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:204 -#, python-format -msgid "Volume %s has been transferred." -msgstr "" - -#: cinder/volume/api.py:169 -msgid "" -"Invalid volume size provided for create request (size argument must be an" -" integer (or string represenation or an integer) and greater than zero)." -msgstr "" - -#: cinder/volume/api.py:177 -msgid "" -"volume_type must be provided when creating a volume in a consistency " -"group." -msgstr "" - -#: cinder/volume/api.py:182 -msgid "" -"Invalid volume_type provided (requested type must be supported by this " -"consistency group)." -msgstr "" - -#: cinder/volume/api.py:188 -msgid "" -"Invalid volume_type provided (requested type must match source volume, or" -" be omitted). You should omit the argument." -msgstr "" - -#: cinder/volume/api.py:195 -msgid "" -"No volume_type should be provided when creating test replica, type must " -"be omitted." -msgstr "" - -#: cinder/volume/api.py:201 -msgid "" -"Invalid volume_type provided (requested type must match source snapshot, " -"or be omitted). You should omit the argument." -msgstr "" - -#: cinder/volume/api.py:240 cinder/volume/api.py:242 -msgid "Failed to create api volume flow" -msgstr "" - -#: cinder/volume/api.py:274 -msgid "Failed to update quota for deleting volume" -msgstr "Failed to update quota for deleting volume" - -#: cinder/volume/api.py:286 -#, python-format -msgid "Volume status must be available or error, but current status is: %s" -msgstr "" - -#: cinder/volume/api.py:296 -msgid "Volume cannot be deleted while migrating" -msgstr "" - -#: cinder/volume/api.py:301 -#, python-format -msgid "Volume still has %d dependent snapshots" -msgstr "Volume still has %d dependent snapshots" - -#: cinder/volume/api.py:352 -msgid "all_tenants param must be 0 or 1" -msgstr "" - -#: cinder/volume/api.py:447 -msgid "Volume status must be available to reserve" -msgstr "Volume status must be available to reserve" - -#: cinder/volume/api.py:466 -#, python-format -msgid "" -"Unable to detach volume. Volume status must be 'in-use' and attach_status" -" must be 'attached' to detach. Currently: status: '%(status)s', " -"attach_status: '%(attach_status)s'" -msgstr "" - -#: cinder/volume/api.py:547 cinder/volume/api.py:665 -msgid "Snapshot cannot be created while volume is migrating" -msgstr "" - -#: cinder/volume/api.py:552 -msgid "Snapshot of secondary replica is not allowed." -msgstr "" - -#: cinder/volume/api.py:556 -msgid "must be available" -msgstr "must be available" - -#: cinder/volume/api.py:578 cinder/volume/api.py:706 -#, 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:590 cinder/volume/api.py:718 -#, 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:669 -#, python-format -msgid "Snapshot cannot be created because volume '%s' is not available." -msgstr "" - -#: cinder/volume/api.py:760 -msgid "Volume Snapshot status must be available or error" -msgstr "Volume Snapshot status must be available or error" - -#: cinder/volume/api.py:764 -#, python-format -msgid "" -"Snapshot %s is part of a cgsnapshot and has to be deleted together with " -"the cgsnapshot." -msgstr "" - -#: cinder/volume/api.py:794 cinder/volume/flows/api/create_volume.py:266 -msgid "Metadata property key blank" -msgstr "Metadata property key blank" - -#: cinder/volume/api.py:798 -msgid "Metadata property key greater than 255 characters" -msgstr "Metadata property key greater than 255 characters" - -#: cinder/volume/api.py:802 -msgid "Metadata property value greater than 255 characters" -msgstr "Metadata property value greater than 255 characters" - -#: cinder/volume/api.py:933 cinder/volume/api.py:1026 -msgid "Volume status must be available/in-use." -msgstr "Volume status must be available/in-use." - -#: cinder/volume/api.py:936 -msgid "Volume status is in-use." -msgstr "Volume status is in-use." - -#: cinder/volume/api.py:984 -msgid "Volume status must be available to extend." -msgstr "" - -#: cinder/volume/api.py:989 -#, 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:1004 -#, 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:1032 -msgid "Volume is already part of an active migration" -msgstr "" - -#: cinder/volume/api.py:1038 -msgid "volume must not have snapshots" -msgstr "" - -#: cinder/volume/api.py:1045 cinder/volume/manager.py:1450 -msgid "Volume must not be replicated." -msgstr "" - -#: cinder/volume/api.py:1051 cinder/volume/api.py:1151 -msgid "Volume must not be part of a consistency group." -msgstr "" - -#: cinder/volume/api.py:1067 -#, python-format -msgid "No available service named %s" -msgstr "" - -#: cinder/volume/api.py:1073 -msgid "Destination host must be different than current host" -msgstr "" - -#: cinder/volume/api.py:1103 -msgid "Source volume not mid-migration." -msgstr "" - -#: cinder/volume/api.py:1107 -msgid "Destination volume not mid-migration." -msgstr "" - -#: cinder/volume/api.py:1112 -#, python-format -msgid "Destination has migration_status %(stat)s, expected %(exp)s." -msgstr "" - -#: cinder/volume/api.py:1123 -msgid "Volume status must be available to update readonly flag." -msgstr "" - -#: cinder/volume/api.py:1132 -#, python-format -msgid "Unable to update type due to incorrect status on volume: %s" -msgstr "" - -#: cinder/volume/api.py:1138 -#, python-format -msgid "Volume %s is already part of an active migration." -msgstr "" - -#: cinder/volume/api.py:1144 -#, python-format -msgid "migration_policy must be 'on-demand' or 'never', passed: %s" -msgstr "" - -#: cinder/volume/api.py:1163 -#, python-format -msgid "Invalid volume_type passed: %s" -msgstr "" - -#: cinder/volume/api.py:1176 -#, python-format -msgid "New volume_type same as original: %s" -msgstr "" - -#: cinder/volume/api.py:1191 -msgid "Retype cannot change encryption requirements" -msgstr "" - -#: cinder/volume/api.py:1203 -msgid "Retype cannot change front-end qos specs for in-use volumes" -msgstr "" - -#: cinder/volume/api.py:1236 -msgid "Unable to find service for given host." -msgstr "" - -#: cinder/volume/driver.py:231 cinder/volume/drivers/hds/nfs.py:352 -#: cinder/volume/drivers/netapp/nfs.py:186 -#, python-format -msgid "Recovering from a failed execute. Try number %s" -msgstr "Recovering from a failed execute. Try number %s" - -#: cinder/volume/driver.py:256 cinder/volume/manager.py:946 -#, python-format -msgid "Unable to terminate volume connection: %(err)s" -msgstr "" - -#: cinder/volume/driver.py:265 cinder/volume/manager.py:755 -#, python-format -msgid "Error detaching volume %(volume)s, due to remove export failure." -msgstr "" - -#: cinder/volume/driver.py:380 cinder/volume/driver.py:394 -#, python-format -msgid "Failed to attach volume %(vol)s" -msgstr "" - -#: cinder/volume/driver.py:412 -#, python-format -msgid "Failed to copy volume %(src)s to %(dest)s." -msgstr "" - -#: cinder/volume/driver.py:474 cinder/volume/manager.py:887 -#, python-format -msgid "" -"Failed updating model of volume %(volume_id)s with driver provided model " -"%(model)s" -msgstr "" - -#: cinder/volume/driver.py:485 cinder/volume/manager.py:864 -#: cinder/volume/manager.py:895 -#, python-format -msgid "Unable to fetch connection information from backend: %(err)s" -msgstr "" - -#: cinder/volume/driver.py:491 -#, python-format -msgid "Error encountered during cleanup of a failed attach: %(ex)s" -msgstr "" - -#: cinder/volume/driver.py:511 -#, python-format -msgid "Unable to access the backend storage via the path %(path)s." -msgstr "" - -#: cinder/volume/driver.py:582 -msgid "Extend volume not implemented" -msgstr "" - -#: cinder/volume/driver.py:663 cinder/volume/driver.py:671 -msgid "Manage existing volume not implemented." -msgstr "" - -#: cinder/volume/driver.py:733 -msgid "sync_replica not implemented." -msgstr "" - -#: cinder/volume/driver.py:780 -msgid "promote_replica not implemented." -msgstr "" - -#: cinder/volume/driver.py:854 -#: cinder/volume/drivers/fujitsu_eternus_dx_iscsi.py:150 -msgid "ISCSI provider_location not stored, using discovery" -msgstr "ISCSI provider_location not stored, using discovery" - -#: cinder/volume/driver.py:867 -#, python-format -msgid "ISCSI discovery attempt failed for:%s" -msgstr "" - -#: cinder/volume/driver.py:916 -#, python-format -msgid "Could not find iSCSI export for volume %s" -msgstr "Could not find iSCSI export for volume %s" - -#: cinder/volume/driver.py:1018 -msgid "The volume driver requires the iSCSI initiator name in the connector." -msgstr "" - -#: cinder/volume/driver.py:1314 -msgid "Driver must implement initialize_connection" -msgstr "Driver must implement initialize_connection" - -#: cinder/volume/driver.py:1329 -#, python-format -msgid "" -"FibreChannelDriver validate_connector failed. No '%s'. Make sure HBA " -"state is Online." -msgstr "" - -#: cinder/volume/iscsi.py:69 cinder/volume/iscsi.py:95 -#: cinder/volume/iscsi.py:240 -#, 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:84 -#, 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:104 -msgid "Detected inconsistency in provider_location id" -msgstr "Detected inconsistency in provider_location id" - -#: cinder/volume/iscsi.py:258 -#, 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:176 -#, 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:209 -#, python-format -msgid "Failed to fetch pool name for volume: %s" -msgstr "" - -#: cinder/volume/manager.py:246 -#, python-format -msgid "Starting volume driver %(driver_name)s (%(version)s)" -msgstr "" - -#: cinder/volume/manager.py:253 -#, python-format -msgid "Error encountered during initialization of driver: %(name)s" -msgstr "" - -#: cinder/volume/manager.py:277 -#, python-format -msgid "Failed to re-export volume %s: setting to error state" -msgstr "" - -#: cinder/volume/manager.py:284 -#, python-format -msgid "volume %s stuck in a downloading state" -msgstr "volume %s stuck in a downloading state" - -#: cinder/volume/manager.py:291 -#, python-format -msgid "volume %s: skipping export" -msgstr "volume %s: skipping export" - -#: cinder/volume/manager.py:293 -#, python-format -msgid "" -"Error encountered during re-exporting phase of driver initialization: " -"%(name)s" -msgstr "" - -#: cinder/volume/manager.py:306 -#, python-format -msgid "Resuming delete on volume: %s" -msgstr "Resuming delete on volume: %s" - -#: cinder/volume/manager.py:351 -msgid "Failed to create manager volume flow" -msgstr "" - -#: cinder/volume/manager.py:353 -msgid "Failed to create manager volume flow." -msgstr "" - -#: cinder/volume/manager.py:413 -#, python-format -msgid "Tried to delete volume %s, but it no longer exists, moving on" -msgstr "" - -#: cinder/volume/manager.py:422 -#, python-format -msgid "volume %s: deleting" -msgstr "volume %s: deleting" - -#: cinder/volume/manager.py:428 -msgid "volume is not local to this node" -msgstr "volume is not local to this node" - -#: cinder/volume/manager.py:445 -#, python-format -msgid "Cannot delete volume %s: volume is busy" -msgstr "" - -#: cinder/volume/manager.py:472 -msgid "Failed to update usages deleting volume" -msgstr "Failed to update usages deleting volume" - -#: cinder/volume/manager.py:478 -#, python-format -msgid "volume %s: deleted successfully" -msgstr "volume %s: deleted successfully" - -#: cinder/volume/manager.py:508 -#, python-format -msgid "snapshot %s: creating" -msgstr "snapshot %s: creating" - -#: cinder/volume/manager.py:543 cinder/volume/manager.py:1834 -#, python-format -msgid "" -"Failed updating %(snapshot_id)s metadata using the provided volumes " -"%(volume_id)s metadata" -msgstr "" - -#: cinder/volume/manager.py:558 -#, python-format -msgid "snapshot %s: created successfully" -msgstr "snapshot %s: created successfully" - -#: cinder/volume/manager.py:570 -#, python-format -msgid "snapshot %s: deleting" -msgstr "snapshot %s: deleting" - -#: cinder/volume/manager.py:588 -#, python-format -msgid "Cannot delete snapshot %s: snapshot is busy" -msgstr "" - -#: cinder/volume/manager.py:618 cinder/volume/manager.py:1934 -msgid "Failed to update usages deleting snapshot" -msgstr "Failed to update usages deleting snapshot" - -#: cinder/volume/manager.py:621 -#, python-format -msgid "snapshot %s: deleted successfully" -msgstr "snapshot %s: deleted successfully" - -#: cinder/volume/manager.py:641 -msgid "being attached by another instance" -msgstr "being attached by another instance" - -#: cinder/volume/manager.py:645 -msgid "being attached by another host" -msgstr "" - -#: cinder/volume/manager.py:649 -msgid "being attached by different mode" -msgstr "" - -#: cinder/volume/manager.py:653 -msgid "status must be available or attaching" -msgstr "" - -#: cinder/volume/manager.py:751 -#, python-format -msgid "Error detaching volume %(volume)s, due to uninitialized driver." -msgstr "" - -#: cinder/volume/manager.py:787 -#, python-format -msgid "Error occurred while uploading volume %(volume_id)s to image %(image_id)s." -msgstr "" - -#: cinder/volume/manager.py:817 -#, python-format -msgid "Error occurred while deleting image %s." -msgstr "" - -#: cinder/volume/manager.py:876 -#, python-format -msgid "Unable to create export for volume %(volume_id)s" -msgstr "" - -#: cinder/volume/manager.py:975 -#, python-format -msgid "" -"Failed updating model of volume %(volume_id)s with drivers update " -"%(model)s during xfr." -msgstr "" - -#: cinder/volume/manager.py:1018 -msgid "failed to create new_volume on destination host" -msgstr "" - -#: cinder/volume/manager.py:1021 -msgid "timeout creating new_volume on destination host" -msgstr "" - -#: cinder/volume/manager.py:1044 -#, python-format -msgid "Failed to copy volume %(vol1)s to %(vol2)s" -msgstr "" - -#: cinder/volume/manager.py:1073 -#, python-format -msgid "" -"migrate_volume_completion: completing migration for volume %(vol1)s " -"(temporary volume %(vol2)s" -msgstr "" - -#: cinder/volume/manager.py:1085 -#, python-format -msgid "" -"migrate_volume_completion is cleaning up an error for volume %(vol1)s " -"(temporary volume %(vol2)s" -msgstr "" - -#: cinder/volume/manager.py:1106 -#, python-format -msgid "Failed to delete migration source vol %(vol)s: %(err)s" -msgstr "" - -#: cinder/volume/manager.py:1192 -msgid "Updating volume status" -msgstr "Updating volume status" - -#: cinder/volume/manager.py:1200 -#, python-format -msgid "" -"Unable to update stats, %(driver_name)s -%(driver_version)s " -"%(config_group)s driver is uninitialized." -msgstr "" - -#: cinder/volume/manager.py:1236 -#, python-format -msgid "Notification {%s} received" -msgstr "Notification {%s} received" - -#: cinder/volume/manager.py:1304 -#, python-format -msgid "volume %s: extending" -msgstr "" - -#: cinder/volume/manager.py:1306 -#, python-format -msgid "volume %s: extended successfully" -msgstr "" - -#: cinder/volume/manager.py:1308 -#, python-format -msgid "volume %s: Error trying to extend volume" -msgstr "" - -#: cinder/volume/manager.py:1313 -#, python-format -msgid "Volume %s: Error trying to extend volume" -msgstr "" - -#: cinder/volume/manager.py:1387 -msgid "Failed to update usages while retyping volume." -msgstr "" - -#: cinder/volume/manager.py:1388 -msgid "Failed to get old volume type quota reservations" -msgstr "" - -#: cinder/volume/manager.py:1419 -#, python-format -msgid "Volume %s: retyped successfully" -msgstr "" - -#: cinder/volume/manager.py:1422 -#, python-format -msgid "" -"Volume %s: driver error when trying to retype, falling back to generic " -"mechanism." -msgstr "" - -#: cinder/volume/manager.py:1433 -msgid "Retype requires migration but is not allowed." -msgstr "" - -#: cinder/volume/manager.py:1441 -msgid "Volume must not have snapshots." -msgstr "" - -#: cinder/volume/manager.py:1489 -msgid "Failed to create manage_existing flow." -msgstr "" - -#: cinder/volume/manager.py:1491 -msgid "Failed to create manage existing flow." -msgstr "" - -#: cinder/volume/manager.py:1521 -#, python-format -msgid "Failed to promote replica for volume %(id)s." -msgstr "" - -#: cinder/volume/manager.py:1530 -msgid "Error promoting secondary volume to primary" -msgstr "" - -#: cinder/volume/manager.py:1540 cinder/volume/manager.py:1571 -#, python-format -msgid "Failed updating model with driver provided model %(model)s" -msgstr "" - -#: cinder/volume/manager.py:1552 -#, python-format -msgid "Failed to sync replica for volume %(id)s." -msgstr "" - -#: cinder/volume/manager.py:1561 -msgid "Error synchronizing secondary volume to primary" -msgstr "" - -#: cinder/volume/manager.py:1579 -msgid "Updating volume replication status." -msgstr "" - -#: cinder/volume/manager.py:1587 -#, python-format -msgid "" -"Unable to update volume replication status, %(driver_name)s " -"-%(driver_version)s %(config_group)s driver is uninitialized." -msgstr "" - -#: cinder/volume/manager.py:1605 -#, python-format -msgid "Error checking replication status for volume %s" -msgstr "" - -#: cinder/volume/manager.py:1623 -#, python-format -msgid "Consistency group %s: creating" -msgstr "" - -#: cinder/volume/manager.py:1637 -#, python-format -msgid "Consistency group %s: create failed" -msgstr "" - -#: cinder/volume/manager.py:1645 -#, python-format -msgid "Consistency group %s: created successfully" -msgstr "" - -#: cinder/volume/manager.py:1664 -#, python-format -msgid "Consistency group %s: deleting" -msgstr "" - -#: cinder/volume/manager.py:1678 -msgid "Volume is not local to this node" -msgstr "" - -#: cinder/volume/manager.py:1706 -#, python-format -msgid "Error occurred when deleting consistency group %s." -msgstr "" - -#: cinder/volume/manager.py:1729 -msgid "Failed to update usages deleting consistency groups." -msgstr "" - -#: cinder/volume/manager.py:1746 -msgid "Failed to update usages deleting volume." -msgstr "" - -#: cinder/volume/manager.py:1764 -#, python-format -msgid "Consistency group %s: deleted successfully." -msgstr "" - -#: cinder/volume/manager.py:1777 -#, python-format -msgid "Cgsnapshot %s: creating." -msgstr "" - -#: cinder/volume/manager.py:1852 -#, python-format -msgid "cgsnapshot %s: created successfully" -msgstr "" - -#: cinder/volume/manager.py:1865 -#, python-format -msgid "cgsnapshot %s: deleting" -msgstr "" - -#: cinder/volume/manager.py:1900 -#, python-format -msgid "Error occurred when deleting cgsnapshot %s." -msgstr "" - -#: cinder/volume/manager.py:1945 -#, python-format -msgid "cgsnapshot %s: deleted successfully" -msgstr "" - -#: cinder/volume/qos_specs.py:58 -#, python-format -msgid "Valid consumer of QoS specs are: %s" -msgstr "" - -#: cinder/volume/qos_specs.py:85 cinder/volume/qos_specs.py:106 -#: cinder/volume/qos_specs.py:156 cinder/volume/qos_specs.py:198 -#: cinder/volume/qos_specs.py:212 cinder/volume/qos_specs.py:226 -#: cinder/volume/volume_types.py:45 -#, python-format -msgid "DB error: %s" -msgstr "DB error: %s" - -#: cinder/volume/qos_specs.py:124 cinder/volume/qos_specs.py:141 -#: cinder/volume/qos_specs.py:274 cinder/volume/volume_types.py:54 -#: cinder/volume/volume_types.py:102 -msgid "id cannot be None" -msgstr "id cannot be None" - -#: cinder/volume/qos_specs.py:157 -#, python-format -msgid "Failed to get all associations of qos specs %s" -msgstr "" - -#: cinder/volume/qos_specs.py:190 -#, python-format -msgid "" -"Type %(type_id)s is already associated with another qos specs: " -"%(qos_specs_id)s" -msgstr "" - -#: cinder/volume/qos_specs.py:199 -#, python-format -msgid "Failed to associate qos specs %(id)s with type: %(vol_type_id)s" -msgstr "" - -#: cinder/volume/qos_specs.py:213 -#, python-format -msgid "Failed to disassociate qos specs %(id)s with type: %(vol_type_id)s" -msgstr "" - -#: cinder/volume/qos_specs.py:227 -#, python-format -msgid "Failed to disassociate qos specs %s." -msgstr "" - -#: cinder/volume/qos_specs.py:286 cinder/volume/volume_types.py:114 -msgid "name cannot be None" -msgstr "name cannot be None" - -#: cinder/volume/utils.py:221 -#, python-format -msgid "Failed to get device number for read throttling: %(error)s" -msgstr "" - -#: cinder/volume/utils.py:229 -#, python-format -msgid "Failed to get device number for write throttling: %(error)s" -msgstr "" - -#: cinder/volume/utils.py:243 -msgid "Failed to create blkio cgroup" -msgstr "" - -#: cinder/volume/utils.py:254 -#, python-format -msgid "Failed to setup blkio cgroup to throttle the devices: '%(src)s','%(dst)s'" -msgstr "" - -#: cinder/volume/utils.py:273 -#, 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:336 -#, python-format -msgid "Volume copy %(size_in_m).2f MB at %(mbps).2f MB/s" -msgstr "" - -#: cinder/volume/utils.py:355 -#, python-format -msgid "Performing secure delete on volume: %s" -msgstr "Performing secure delete on volume: %s" - -#: cinder/volume/utils.py:380 -#, python-format -msgid "Elapsed time for clear volume: %.2f sec" -msgstr "" - -#: cinder/volume/volume_types.py:133 -#, 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:142 cinder/volume/drivers/lvm.py:285 -#: cinder/volume/drivers/nexenta/nfs.py:191 -#, python-format -msgid "Creating clone of volume: %s" -msgstr "Creating clone of volume: %s" - -#: cinder/volume/drivers/block_device.py:210 -msgid "No free disk" -msgstr "" - -#: cinder/volume/drivers/block_device.py:223 -msgid "No big enough free disk" -msgstr "" - -#: cinder/volume/drivers/coraid.py:85 -#, python-format -msgid "Invalid ESM url scheme \"%s\". Supported https only." -msgstr "" - -#: cinder/volume/drivers/coraid.py:112 -msgid "Invalid REST handle name. Expected path." -msgstr "" - -#: cinder/volume/drivers/coraid.py:135 -#, python-format -msgid "Call to json.loads() failed: %(ex)s. Response: %(resp)s" -msgstr "" - -#: cinder/volume/drivers/coraid.py:245 -msgid "Reply is empty." -msgstr "" - -#: cinder/volume/drivers/coraid.py:247 -msgid "Error message is empty." -msgstr "" - -#: cinder/volume/drivers/coraid.py:391 -msgid "Cannot create clone volume in different repository." -msgstr "" - -#: cinder/volume/drivers/datera.py:88 -#, python-format -msgid "" -"Tried to delete volume %s, but it was not found in the Datera cluster. " -"Continuing with delete." -msgstr "" - -#: cinder/volume/drivers/datera.py:122 -#, python-format -msgid "" -"Tried to delete export for volume %s, but it was not found in the Datera " -"cluster. Continuing with volume detach" -msgstr "" - -#: cinder/volume/drivers/datera.py:131 -#, python-format -msgid "" -"Tried to delete snapshot %s, but was not found in Datera cluster. " -"Continuing with delete." -msgstr "" - -#: cinder/volume/drivers/datera.py:181 -msgid "Failed to get updated stats from Datera Cluster." -msgstr "" - -#: cinder/volume/drivers/datera.py:244 -#, python-format -msgid "" -"Failed to make a request to Datera cluster endpoint due to the following " -"reason: %s" -msgstr "" - -#: cinder/volume/drivers/datera.py:255 -#, python-format -msgid "Request to Datera cluster returned bad status: %(status)s | %(reason)s" -msgstr "" - -#: cinder/volume/drivers/eqlx.py:171 -msgid "Error executing EQL command" -msgstr "" - -#: cinder/volume/drivers/eqlx.py:202 -#, python-format -msgid "EQL-driver: executing \"%s\"" -msgstr "" - -#: cinder/volume/drivers/eqlx.py:211 -#, python-format -msgid "SSH Command failed after '%(total_attempts)r' attempts : '%(command)s'" -msgstr "" - -#: cinder/volume/drivers/eqlx.py:218 cinder/volume/drivers/san/san.py:151 -#: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:417 -#: cinder/zonemanager/drivers/cisco/cisco_fc_san_lookup_service.py:271 -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_client_cli.py:397 -#, python-format -msgid "Error running SSH command: %s" -msgstr "Error running SSH command: %s" - -#: cinder/volume/drivers/eqlx.py:325 -#, python-format -msgid "EQL-driver: Setup is complete, group IP is %s" -msgstr "" - -#: cinder/volume/drivers/eqlx.py:329 -msgid "Failed to setup the Dell EqualLogic driver" -msgstr "" - -#: cinder/volume/drivers/eqlx.py:346 -#, python-format -msgid "Failed to create volume %s" -msgstr "" - -#: cinder/volume/drivers/eqlx.py:356 -#, python-format -msgid "Failed to add multi-host access for volume %s" -msgstr "" - -#: cinder/volume/drivers/eqlx.py:366 -#, python-format -msgid "Volume %s was not found while trying to delete it" -msgstr "" - -#: cinder/volume/drivers/eqlx.py:370 -#, python-format -msgid "Failed to delete volume %s" -msgstr "" - -#: cinder/volume/drivers/eqlx.py:385 -#, python-format -msgid "Failed to create snapshot of volume %s" -msgstr "" - -#: cinder/volume/drivers/eqlx.py:399 -#, python-format -msgid "Failed to create volume from snapshot %s" -msgstr "" - -#: cinder/volume/drivers/eqlx.py:413 -#, python-format -msgid "Failed to create clone of volume %s" -msgstr "" - -#: cinder/volume/drivers/eqlx.py:423 -#, python-format -msgid "Failed to delete snapshot %(snap)s of volume %(vol)s" -msgstr "" - -#: cinder/volume/drivers/eqlx.py:444 -#, python-format -msgid "Failed to initialize connection to volume %s" -msgstr "" - -#: cinder/volume/drivers/eqlx.py:458 -#, python-format -msgid "Failed to terminate connection to volume %s" -msgstr "" - -#: cinder/volume/drivers/eqlx.py:479 -#, python-format -msgid "Volume %s is not found!, it may have been deleted" -msgstr "" - -#: cinder/volume/drivers/eqlx.py:483 -#, python-format -msgid "Failed to ensure export of volume %s" -msgstr "" - -#: cinder/volume/drivers/eqlx.py:502 -#, python-format -msgid "Failed to extend_volume %(name)s from %(current_size)sGB to %(new_size)sGB" -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:160 -#, python-format -msgid "Create Volume: %(volume)s Size: %(size)lu" -msgstr "Create Volume: %(volume)s Size: %(size)lu" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:184 -#, 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/fujitsu_eternus_dx_common.py:247 -#: cinder/volume/drivers/emc/emc_vmax_provision.py:381 -#, 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/fujitsu_eternus_dx_common.py:290 -#, 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/fujitsu_eternus_dx_common.py:310 -#, 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/fujitsu_eternus_dx_common.py:350 -#, 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/fujitsu_eternus_dx_common.py:399 -#, 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/fujitsu_eternus_dx_common.py:419 -#, 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/fujitsu_eternus_dx_common.py:459 -#, 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/fujitsu_eternus_dx_common.py:503 -#, python-format -msgid "Delete Volume: %(volume)s" -msgstr "Delete Volume: %(volume)s" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:519 -#: cinder/volume/drivers/emc/emc_vmax_common.py:1989 -#, 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/fujitsu_eternus_dx_common.py:527 -#, 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/fujitsu_eternus_dx_common.py:556 -#, 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/fujitsu_eternus_dx_common.py:577 -#: cinder/volume/drivers/emc/emc_vnx_cli.py:1863 -#, python-format -msgid "Create snapshot: %(snapshot)s: volume: %(volume)s" -msgstr "Create snapshot: %(snapshot)s: volume: %(volume)s" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:596 -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:598 -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:727 -#, 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/fujitsu_eternus_dx_common.py:642 -#, python-format -msgid "Create Snapshot: %(snapshotname)s. Storage Configuration Service not found" -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:665 -#, 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/fujitsu_eternus_dx_common.py:705 -#, python-format -msgid "Delete Snapshot: %(snapshot)s: volume: %(volume)s" -msgstr "Delete Snapshot: %(snapshot)s: volume: %(volume)s" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:719 -#, 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/fujitsu_eternus_dx_common.py:759 -#, python-format -msgid "" -"Error Delete Snapshot: Volume: %(volumename)s Snapshot: " -"%(snapshotname)s. Return code: %(rc)lu. Error: %(error)s" -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:786 -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:800 -#, python-format -msgid "Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot is deleted." -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:792 -#, python-format -msgid "" -"Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but cleanup " -"timed out." -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:805 -#, python-format -msgid "" -"Snapshot: %(snapshot)s: volume: %(volume)s. Snapshot deleted but error " -"during cleanup. Error: %(error)s" -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:862 -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:881 -#, python-format -msgid "Error mapping volume %(volumename)s.rc:%(rc)lu" -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:886 -#, python-format -msgid "Error mapping volume %(volumename)s:%(results)s." -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:923 -#, python-format -msgid "Error unmapping volume %(volumename)s.rc:%(rc)lu" -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:934 -#, python-format -msgid "Map volume: %(volume)s" -msgstr "Map volume: %(volume)s" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:943 -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:969 -#, 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/fujitsu_eternus_dx_common.py:953 -#: cinder/volume/drivers/emc/emc_vmax_common.py:299 -#, python-format -msgid "Unmap volume: %(volume)s" -msgstr "Unmap volume: %(volume)s" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:959 -#: cinder/volume/drivers/emc/emc_vmax_common.py:305 -#, 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/fujitsu_eternus_dx_common.py:978 -#: cinder/volume/drivers/emc/emc_vmax_common.py:352 -#, python-format -msgid "Initialize connection: %(volume)s" -msgstr "Initialize connection: %(volume)s" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:984 -#, python-format -msgid "Volume %s is already mapped." -msgstr "Volume %s is already mapped." - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:996 -#: cinder/volume/drivers/emc/emc_vmax_common.py:412 -#, python-format -msgid "Terminate connection: %(volume)s" -msgstr "Terminate connection: %(volume)s" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:1013 -#, python-format -msgid "Extend Volume: %(volume)s New size: %(size)lu" -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:1033 -#, python-format -msgid "" -"Error Extend Volume: %(volumename)s. Storage Configuration Service not " -"found." -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:1069 -#, python-format -msgid "" -"Error Extend Volume: %(volumename)s. Return code: %(rc)lu. Error: " -"%(error)s" -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:1124 -msgid "Storage type not found." -msgstr "Storage type not found." - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:1147 -msgid "Snap pool not found." -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:1219 -#: cinder/volume/drivers/emc/emc_vmax_common.py:1181 -msgid "Cannot connect to ECOM server" -msgstr "Cannot connect to ECOM server" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:1301 -#, python-format -msgid "Pool %(storage_type)s is not found." -msgstr "Pool %(storage_type)s is not found." - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:1307 -#, 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/fujitsu_eternus_dx_common.py:1356 -#, python-format -msgid "" -"Snapshot Volume %(snapshotname)s, Source Volume %(volumename)s not found " -"on the array." -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:1397 -#: cinder/volume/drivers/emc/emc_vmax_common.py:1338 -#: cinder/volume/drivers/emc/emc_vmax_masking.py:448 -#, python-format -msgid "Error finding %s." -msgstr "Error finding %s." - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:1418 -#: cinder/volume/drivers/emc/emc_vmax_utils.py:293 -#, python-format -msgid "_wait_for_job_complete failed after %(retries)d tries" -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:1427 -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:1491 -#: cinder/volume/drivers/emc/emc_vmax_common.py:975 -#: cinder/volume/drivers/emc/emc_vmax_common.py:1033 -#: cinder/volume/drivers/emc/emc_vmax_common.py:1421 -#: cinder/volume/drivers/emc/emc_vmax_common.py:1728 -#: cinder/volume/drivers/emc/emc_vmax_common.py:2060 -#: cinder/volume/drivers/emc/emc_vmax_fast.py:512 -#: cinder/volume/drivers/emc/emc_vmax_fast.py:654 -#: cinder/volume/drivers/emc/emc_vmax_masking.py:208 -#: cinder/volume/drivers/emc/emc_vmax_masking.py:847 -#: cinder/volume/drivers/emc/emc_vmax_provision.py:493 -#: cinder/volume/drivers/emc/emc_vmax_provision.py:504 -#: cinder/volume/drivers/emc/emc_vmax_provision.py:512 -#: cinder/volume/drivers/emc/emc_vmax_utils.py:303 -#: cinder/volume/drivers/emc/emc_vmax_utils.py:361 -#: cinder/volume/drivers/emc/xtremio.py:96 -#: cinder/zonemanager/drivers/cisco/cisco_fc_san_lookup_service.py:253 -#: cinder/zonemanager/drivers/cisco/cisco_fc_san_lookup_service.py:325 -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_client_cli.py:127 -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_client_cli.py:248 -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_client_cli.py:379 -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_client_cli.py:451 -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_driver.py:217 -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_driver.py:220 -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_driver.py:370 -#, python-format -msgid "Exception: %s" -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:1428 -#: cinder/volume/drivers/emc/emc_vmax_utils.py:304 -msgid "Issue encountered waiting for job." -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:1482 -#: cinder/volume/drivers/emc/emc_vmax_utils.py:352 -#, python-format -msgid "_wait_for_sync failed after %(retries)d tries" -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:1492 -#: cinder/volume/drivers/emc/emc_vmax_utils.py:362 -msgid "Issue encountered waiting for synchronization." -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:1600 -#, 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/fujitsu_eternus_dx_common.py:1671 -#, 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/fujitsu_eternus_dx_common.py:1768 -msgid "_create_volume_name,id_code is None." -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:1803 -#, python-format -msgid "" -"_get_pool_instance_id,poolname:%(poolname)s,EnumerateInstances,cannot " -"connect to ETERNUS." -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:1826 -#, python-format -msgid "_get_pool_instance_id,poolname:%(poolname)s,poolinstanceid is None." -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:1852 -#, python-format -msgid "" -"get_target_portid,connector:%(connector)s,EnumerateInstances,cannot " -"connect to ETERNUS." -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:1875 -#, python-format -msgid "" -"get_target_portid,protcol:%(protocol)s,connector:%(connector)s,target_portid" -" does not found." -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:1914 -msgid "_find_copysession,Cannot find Replication Service to find copysession" -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:1935 -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:2024 -#, python-format -msgid "" -"_find_copysession,source_volumename:%(volumename)s,Return " -"code:%(rc)lu,Error:%(errordesc)s" -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:1955 -#, python-format -msgid "" -"_find_copysession,source_volumename:%(volumename)s,GetInstance,cannot " -"connect to ETERNUS." -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:1978 -#, python-format -msgid "" -"_find_copy_session,source_volumename:%(volumename)s,wait for end of " -"copysession" -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:1995 -#, python-format -msgid "" -"_find_copysession,source_volumename:%(volumename)s,copysession state is " -"BROKEN" -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:2046 -#, python-format -msgid "" -"_find_copysession,target_volumename:%(volumename)s,GetInstance,cannot " -"connect to ETERNUS." -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:2078 -#, python-format -msgid "_find_copysession,volumename:%(volumename)s,not found." -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:2102 -#, python-format -msgid "" -"_delete_copysession, copysession:%(cpsession)s,GetInstance,cannot connect" -" to ETERNUS." -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:2117 -msgid "_delete_copysession,Cannot find Replication Service to delete copysession" -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_common.py:2146 -#, python-format -msgid "" -"_delete_copysession,copysession:%(cpsession)s,operation:%(operation)s,Return" -" code:%(rc)lu,Error:%(errordesc)s" -msgstr "" - -#: cinder/volume/drivers/fujitsu_eternus_dx_iscsi.py:190 -#, python-format -msgid "Could not find iSCSI export for volume %s" -msgstr "Could not find iSCSI export for volume %s" - -#: cinder/volume/drivers/fujitsu_eternus_dx_iscsi.py:199 -#, python-format -msgid "Cannot find device number for volume %s" -msgstr "Cannot find device number for volume %s" - -#: cinder/volume/drivers/glusterfs.py:100 -#, 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:105 -#, 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:117 -msgid "mount.glusterfs is not installed" -msgstr "mount.glusterfs is not installed" - -#: cinder/volume/drivers/glusterfs.py:129 -#, python-format -msgid "Exception during unmounting %s" -msgstr "" - -#: cinder/volume/drivers/glusterfs.py:138 -#, python-format -msgid "%s is already umounted" -msgstr "" - -#: cinder/volume/drivers/glusterfs.py:140 -#, python-format -msgid "Failed to umount %(share)s, reason=%(stderr)s" -msgstr "" - -#: cinder/volume/drivers/glusterfs.py:149 -#, python-format -msgid "Failed to refresh mounts, reason=%s" -msgstr "" - -#: cinder/volume/drivers/glusterfs.py:179 cinder/volume/drivers/remotefs.py:115 -#: cinder/volume/drivers/netapp/nfs.py:817 -#, python-format -msgid "casted to %s" -msgstr "casted to %s" - -#: cinder/volume/drivers/glusterfs.py:233 cinder/volume/drivers/remotefs.py:167 -#, 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:312 -msgid "Call to Nova delete snapshot failed" -msgstr "" - -#: cinder/volume/drivers/glusterfs.py:336 -#, python-format -msgid "Unable to delete snapshot %(id)s, status: %(status)s." -msgstr "" - -#: cinder/volume/drivers/glusterfs.py:349 -#, python-format -msgid "Timed out while waiting for Nova update for deletion of snapshot %(id)s." -msgstr "" - -#: cinder/volume/drivers/glusterfs.py:398 -#, python-format -msgid "%s must be a valid raw or qcow2 image." -msgstr "" - -#: cinder/volume/drivers/glusterfs.py:424 cinder/volume/drivers/smbfs.py:442 -msgid "Extend volume is only supported for this driver when no snapshots exist." -msgstr "" - -#: cinder/volume/drivers/glusterfs.py:432 -#, python-format -msgid "Unrecognized backing format: %s" -msgstr "" - -#: cinder/volume/drivers/glusterfs.py:450 -#, python-format -msgid "file already exists at %s" -msgstr "" - -#: cinder/volume/drivers/glusterfs.py:476 cinder/volume/drivers/remotefs.py:152 -#, python-format -msgid "Exception during mounting %s" -msgstr "Exception during mounting %s" - -#: cinder/volume/drivers/glusterfs.py:548 -msgid "Backup is not supported for GlusterFS volumes with snapshots." -msgstr "" - -#: cinder/volume/drivers/glusterfs.py:563 -#, python-format -msgid "" -"No snapshots found in database, but %(path)s has backing file " -"%(backing_file)s!" -msgstr "" - -#: cinder/volume/drivers/glusterfs.py:571 -msgid "Backup is only supported for raw-formatted GlusterFS volumes." -msgstr "" - -#: cinder/volume/drivers/glusterfs.py:600 -msgid "Call to Nova to create snapshot failed" -msgstr "" - -#: cinder/volume/drivers/glusterfs.py:622 -msgid "Nova returned \"error\" status while creating snapshot." -msgstr "" - -#: cinder/volume/drivers/glusterfs.py:639 -#, python-format -msgid "Timed out while waiting for Nova update for creation of snapshot %s." -msgstr "" - -#: cinder/volume/drivers/lvm.py:153 -#, python-format -msgid "Volume device file path %s does not exist." -msgstr "" - -#: cinder/volume/drivers/lvm.py:160 -#, python-format -msgid "Size for volume: %s not found, cannot secure delete." -msgstr "" - -#: cinder/volume/drivers/lvm.py:230 -#, python-format -msgid "Unabled to delete due to existing snapshot for volume: %s" -msgstr "" - -#: cinder/volume/drivers/lvm.py:247 -#, python-format -msgid "snapshot: %s not found, skipping delete operations" -msgstr "snapshot: %s not found, skipping delete operations" - -#: cinder/volume/drivers/lvm.py:349 -#, python-format -msgid "Unable to update stats on non-initialized Volume Group: %s" -msgstr "" - -#: cinder/volume/drivers/lvm.py:420 -#, python-format -msgid "Failed to rename logical volume %(name)s, error message was: %(err_msg)s" -msgstr "" - -#: cinder/volume/drivers/lvm.py:436 cinder/volume/drivers/rbd.py:907 -#: cinder/volume/drivers/san/hp/hp_3par_common.py:403 -msgid "Reference must contain source-name element." -msgstr "" - -#: cinder/volume/drivers/lvm.py:453 cinder/volume/drivers/rbd.py:931 -#, 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:526 -#, python-format -msgid "Error creating iSCSI target, retrying creation for target: %s" -msgstr "" - -#: cinder/volume/drivers/lvm.py:597 -#, python-format -msgid "Destination Volume Group %s does not exist" -msgstr "" - -#: cinder/volume/drivers/nfs.py:105 -#, 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:110 -#, 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:115 -#, python-format -msgid "NFS config 'nfs_oversub_ratio' invalid. Must be > 0: %s" -msgstr "" - -#: cinder/volume/drivers/nfs.py:123 -#, python-format -msgid "NFS config 'nfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" -msgstr "" - -#: cinder/volume/drivers/nfs.py:249 cinder/volume/drivers/smbfs.py:403 -#: cinder/volume/drivers/netapp/nfs.py:620 -#, python-format -msgid "Extending volume %s." -msgstr "" - -#: cinder/volume/drivers/nfs.py:257 cinder/volume/drivers/smbfs.py:410 -#, python-format -msgid "Resizing file to %sG..." -msgstr "" - -#: cinder/volume/drivers/nimble.py:63 -msgid "Nimble Cinder Driver exception" -msgstr "" - -#: cinder/volume/drivers/nimble.py:67 -msgid "Unexpected response from Nimble API" -msgstr "" - -#: cinder/volume/drivers/nimble.py:90 -#: cinder/volume/drivers/netapp/eseries/iscsi.py:90 -#, python-format -msgid "%s is not set." -msgstr "" - -#: cinder/volume/drivers/nimble.py:100 -#, python-format -msgid "Exploring array subnet label %s" -msgstr "" - -#: cinder/volume/drivers/nimble.py:104 -#, python-format -msgid "Discovery ip %(disc_ip)s is used on data subnet %(net_label)s" -msgstr "" - -#: cinder/volume/drivers/nimble.py:111 -#, python-format -msgid "Discovery ip %(disc_ip)s is found on mgmt+data subnet %(net_label)s" -msgstr "" - -#: cinder/volume/drivers/nimble.py:118 -#, python-format -msgid "Discovery ip %(disc_ip)s is used on subnet %(net_label)s" -msgstr "" - -#: cinder/volume/drivers/nimble.py:124 -#, python-format -msgid "Discovery ip %s is used on mgmt+data subnet" -msgstr "" - -#: cinder/volume/drivers/nimble.py:128 -msgid "No suitable discovery ip found" -msgstr "" - -#: cinder/volume/drivers/nimble.py:140 -msgid "" -"Failed to create SOAP client.Check san_ip, username, password and make " -"sure the array version is compatible" -msgstr "" - -#: cinder/volume/drivers/nimble.py:153 -#, python-format -msgid "vol_name=%(name)s provider_location=%(loc)s" -msgstr "" - -#: cinder/volume/drivers/nimble.py:248 -msgid "SpaceInfo returned byarray is invalid" -msgstr "" - -#: cinder/volume/drivers/nimble.py:277 -#, python-format -msgid "Entering extend_volume volume=%(vol)s new_size=%(size)s" -msgstr "" - -#: cinder/volume/drivers/nimble.py:294 -#, python-format -msgid "Creating initiator group %(grp)s with initiator %(iname)s" -msgstr "" - -#: cinder/volume/drivers/nimble.py:306 -#, python-format -msgid "igroup %(grp)s found for initiator %(iname)s" -msgstr "" - -#: cinder/volume/drivers/nimble.py:310 -#, python-format -msgid "No igroup found for initiator %s" -msgstr "" - -#: cinder/volume/drivers/nimble.py:315 -#, python-format -msgid "" -"Entering initialize_connection volume=%(vol)s connector=%(conn)s " -"location=%(loc)s" -msgstr "" - -#: cinder/volume/drivers/nimble.py:326 -#, python-format -msgid "Initiator group name is %(grp)s for initiator %(iname)s" -msgstr "" - -#: cinder/volume/drivers/nimble.py:343 -#, python-format -msgid "" -"Entering terminate_connection volume=%(vol)s connector=%(conn)s " -"location=%(loc)s." -msgstr "" - -#: cinder/volume/drivers/nimble.py:353 -#, python-format -msgid "No initiator group found for initiator %s" -msgstr "" - -#: cinder/volume/drivers/nimble.py:370 -#, python-format -msgid "API %(name)s failed with error string %(err)s" -msgstr "" - -#: cinder/volume/drivers/nimble.py:389 -msgid "Session might have expired. Trying to relogin" -msgstr "" - -#: cinder/volume/drivers/nimble.py:394 -#, python-format -msgid "Re-throwing Exception %s" -msgstr "" - -#: cinder/volume/drivers/nimble.py:450 -#, python-format -msgid "Successful login by user %s" -msgstr "" - -#: cinder/volume/drivers/nimble.py:478 -#, python-format -msgid "" -"Creating a new volume=%(vol)s size=%(size)s reserve=%(reserve)s in " -"pool=%(pool)s" -msgstr "" - -#: cinder/volume/drivers/nimble.py:500 -#, python-format -msgid "Successfully create volume %s" -msgstr "" - -#: cinder/volume/drivers/nimble.py:519 -#, python-format -msgid "Adding ACL to volume=%(vol)s with initiator group name %(igrp)s" -msgstr "" - -#: cinder/volume/drivers/nimble.py:534 -#, python-format -msgid "Removing ACL from volume=%(vol)s for initiator group %(igrp)s" -msgstr "" - -#: cinder/volume/drivers/nimble.py:548 -#, python-format -msgid "Getting volume information for vol_name=%s" -msgstr "" - -#: cinder/volume/drivers/nimble.py:555 -#, python-format -msgid "Successfully got volume information for volume %s" -msgstr "" - -#: cinder/volume/drivers/nimble.py:563 -#, python-format -msgid "Setting volume %(vol)s to online_flag %(flag)s" -msgstr "" - -#: cinder/volume/drivers/nimble.py:573 -#, python-format -msgid "Setting snapshot %(snap)s to online_flag %(flag)s" -msgstr "" - -#: cinder/volume/drivers/nimble.py:584 -#, python-format -msgid "Dissociating volume %s " -msgstr "" - -#: cinder/volume/drivers/nimble.py:593 -#, python-format -msgid "Deleting volume %s " -msgstr "" - -#: cinder/volume/drivers/nimble.py:612 -#, python-format -msgid "" -"Creating snapshot for volume_name=%(vol)s snap_name=%(name)s " -"snap_description=%(desc)s" -msgstr "" - -#: cinder/volume/drivers/nimble.py:627 -#, python-format -msgid "Deleting snapshot %s " -msgstr "" - -#: cinder/volume/drivers/nimble.py:641 -#, python-format -msgid "" -"Cloning volume from snapshot volume=%(vol)s snapshot=%(snap)s " -"clone=%(clone)s snap_size=%(size)sreserve=%(reserve)s" -msgstr "" - -#: cinder/volume/drivers/nimble.py:666 -#, python-format -msgid "Editing Volume %(vol)s with mask %(mask)s" -msgstr "" - -#: cinder/volume/drivers/nimble.py:676 -msgid "Getting getInitiatorGrpList" -msgstr "" - -#: cinder/volume/drivers/nimble.py:683 -msgid "Successfully retrieved InitiatorGrpList" -msgstr "" - -#: cinder/volume/drivers/nimble.py:691 -#, python-format -msgid "Creating initiator group %(igrp)s with one initiator %(iname)s" -msgstr "" - -#: cinder/volume/drivers/nimble.py:704 -#, python-format -msgid "Deleting deleteInitiatorGrp %s " -msgstr "" - -#: cinder/volume/drivers/pure.py:130 -msgid "Volume deletion failed with message: {0}" -msgstr "" - -#: cinder/volume/drivers/pure.py:152 -msgid "Snapshot deletion failed with message: {0}" -msgstr "" - -#: cinder/volume/drivers/pure.py:181 -msgid "iSCSI discovery of port {0[name]} at {0[portal]} failed with error: {1}" -msgstr "" - -#: cinder/volume/drivers/pure.py:200 -msgid "Using port {0[name]} on the array at {0[portal]} for iSCSI connectivity." -msgstr "" - -#: cinder/volume/drivers/pure.py:204 -msgid "No reachable iSCSI-enabled ports on target array." -msgstr "" - -#: cinder/volume/drivers/pure.py:219 -msgid "No host object on target array with IQN: " -msgstr "" - -#: cinder/volume/drivers/pure.py:226 -msgid "Disconnection failed with message: {0}" -msgstr "" - -#: cinder/volume/drivers/pure.py:314 -msgid "" -"Unable to find usable REST API version. Response from Pure Storage REST " -"API: " -msgstr "" - -#: cinder/volume/drivers/pure.py:329 -msgid "Unable to connect to {0!r}. Check san_ip." -msgstr "" - -#: cinder/volume/drivers/pure.py:336 -msgid "Response not in JSON: " -msgstr "" - -#: cinder/volume/drivers/pure.py:348 -msgid "" -"All REST API versions supported by this version of the Pure Storage iSCSI" -" driver are unavailable on array." -msgstr "" - -#: cinder/volume/drivers/rbd.py:76 -msgid "Volumes will be chunked into objects of this size (in megabytes)." -msgstr "" - -#: cinder/volume/drivers/rbd.py:79 -msgid "" -"Timeout value (in seconds) used when connecting to ceph cluster. If value" -" < 0, no timeout is set and default librados value is used." -msgstr "" - -#: cinder/volume/drivers/rbd.py:162 -#, python-format -msgid "Invalid argument - whence=%s not supported" -msgstr "" - -#: cinder/volume/drivers/rbd.py:166 -msgid "Invalid argument" -msgstr "" - -#: cinder/volume/drivers/rbd.py:185 -msgid "fileno() not supported by RBD()" -msgstr "" - -#: cinder/volume/drivers/rbd.py:215 -#, fuzzy, python-format -msgid "error opening rbd image %s" -msgstr "error opening rbd image %s" - -#: cinder/volume/drivers/rbd.py:271 -msgid "rados and rbd python libraries not found" -msgstr "" - -#: cinder/volume/drivers/rbd.py:277 -#, fuzzy -msgid "error connecting to ceph cluster" -msgstr "error connecting to ceph cluster" - -#: cinder/volume/drivers/rbd.py:369 cinder/volume/drivers/sheepdog.py:179 -msgid "error refreshing volume stats" -msgstr "error refreshing volume stats" - -#: cinder/volume/drivers/rbd.py:400 -#, python-format -msgid "clone depth exceeds limit of %s" -msgstr "" - -#: cinder/volume/drivers/rbd.py:617 -#, python-format -msgid "volume %s no longer exists in backend" -msgstr "" - -#: cinder/volume/drivers/rbd.py:653 -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:732 -msgid "Not stored in rbd" -msgstr "Not stored in rbd" - -#: cinder/volume/drivers/rbd.py:736 -msgid "Blank components" -msgstr "Blank components" - -#: cinder/volume/drivers/rbd.py:739 -msgid "Not an rbd snapshot" -msgstr "Not an rbd snapshot" - -#: cinder/volume/drivers/rbd.py:869 cinder/volume/drivers/sheepdog.py:196 -#, python-format -msgid "Failed to Extend Volume %(volname)s" -msgstr "" - -#: cinder/volume/drivers/remotefs.py:267 cinder/volume/drivers/smbfs.py:522 -#, python-format -msgid "Expected volume size was %d" -msgstr "" - -#: cinder/volume/drivers/remotefs.py:268 -#, python-format -msgid " but size is now %d" -msgstr "" - -#: cinder/volume/drivers/remotefs.py:304 -#, python-format -msgid "Share %s ignored due to invalid format. Must be of form address:/export." -msgstr "" - -#: cinder/volume/drivers/remotefs.py:365 -#, python-format -msgid "%s is already mounted" -msgstr "%s is already mounted" - -#: cinder/volume/drivers/remotefs.py:422 -msgid "'active' must be present when writing snap_info." -msgstr "" - -#: cinder/volume/drivers/remotefs.py:548 -#, python-format -msgid "" -"Share at %(dir)s is not writable by the Cinder volume service. Snapshot " -"operations will not be supported." -msgstr "" - -#: cinder/volume/drivers/remotefs.py:601 -#, python-format -msgid "Cloning volume %(src)s to volume %(dst)s" -msgstr "" - -#: cinder/volume/drivers/remotefs.py:606 -msgid "Volume status must be 'available'." -msgstr "" - -#: cinder/volume/drivers/remotefs.py:645 -#, python-format -msgid "Deleting stale snapshot: %s" -msgstr "" - -#: cinder/volume/drivers/remotefs.py:669 -msgid "Volume status must be \"available\" or \"in-use\"." -msgstr "" - -#: cinder/volume/drivers/remotefs.py:685 -#, python-format -msgid "" -"Snapshot record for %s is not present, allowing snapshot_delete to " -"proceed." -msgstr "" - -#: cinder/volume/drivers/remotefs.py:711 -#, python-format -msgid "No backing file found for %s, allowing snapshot to be deleted." -msgstr "" - -#: cinder/volume/drivers/remotefs.py:782 -#, python-format -msgid "No file found with %s as backing file." -msgstr "" - -#: cinder/volume/drivers/remotefs.py:791 -#, python-format -msgid "No snap found with %s as backing file." -msgstr "" - -#: cinder/volume/drivers/remotefs.py:820 -#, python-format -msgid "Check condition failed: %s expected to be None." -msgstr "" - -#: cinder/volume/drivers/remotefs.py:835 -msgid "Snapshot status must be \"available\" to clone." -msgstr "" - -#: cinder/volume/drivers/remotefs.py:964 -#, python-format -msgid "Volume status must be \"available\" or \"in-use\" for snapshot. (is %s)" -msgstr "" - -#: cinder/volume/drivers/scality.py:68 -msgid "Value required for 'scality_sofs_config'" -msgstr "Value required for 'scality_sofs_config'" - -#: cinder/volume/drivers/scality.py:79 -#, python-format -msgid "Cannot access 'scality_sofs_config': %s" -msgstr "Cannot access 'scality_sofs_config': %s" - -#: cinder/volume/drivers/scality.py:85 -msgid "Cannot execute /sbin/mount.sofs" -msgstr "Cannot execute /sbin/mount.sofs" - -#: cinder/volume/drivers/scality.py:106 -msgid "Cannot mount Scality SOFS, check syslog for errors" -msgstr "Cannot mount Scality SOFS, check syslog for errors" - -#: cinder/volume/drivers/scality.py:140 -#, 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:60 -#, python-format -msgid "Sheepdog is not working: %s" -msgstr "Sheepdog is not working: %s" - -#: cinder/volume/drivers/sheepdog.py:65 -msgid "Sheepdog is not working" -msgstr "Sheepdog is not working" - -#: cinder/volume/drivers/smbfs.py:131 -msgid "SMBFS config file not set (smbfs_shares_config)." -msgstr "" - -#: cinder/volume/drivers/smbfs.py:135 -#, python-format -msgid "SMBFS config file at %(config)s doesn't exist." -msgstr "" - -#: cinder/volume/drivers/smbfs.py:140 -#, python-format -msgid "Invalid mount point base: %s" -msgstr "" - -#: cinder/volume/drivers/smbfs.py:144 -#, python-format -msgid "SMBFS config 'smbfs_oversub_ratio' invalid. Must be > 0: %s" -msgstr "" - -#: cinder/volume/drivers/smbfs.py:153 -#, python-format -msgid "SMBFS config 'smbfs_used_ratio' invalid. Must be > 0 and <= 1.0: %s" -msgstr "" - -#: cinder/volume/drivers/smbfs.py:204 cinder/volume/drivers/ibm/ibmnas.py:287 -#, python-format -msgid "Volume %s does not have provider_location specified, skipping." -msgstr "" - -#: cinder/volume/drivers/smbfs.py:226 -msgid "qemu-img is not installed." -msgstr "" - -#: cinder/volume/drivers/smbfs.py:238 -msgid "" -"This version of qemu-img does not support vhdx images. Please upgrade to " -"1.7 or greater." -msgstr "" - -#: cinder/volume/drivers/smbfs.py:258 -#, python-format -msgid "File already exists at %s." -msgstr "" - -#: cinder/volume/drivers/smbfs.py:375 -msgid "This driver does not support snapshotting in-use volumes." -msgstr "" - -#: cinder/volume/drivers/smbfs.py:379 -msgid "This driver does not support deleting in-use snapshots." -msgstr "" - -#: cinder/volume/drivers/smbfs.py:391 -#, python-format -msgid "Snapshots are not supported for this volume format: %s" -msgstr "" - -#: cinder/volume/drivers/smbfs.py:505 -msgid "" -"Unsupported volume format: vhdx. qemu-img 1.7 or higher is required in " -"order to properly support this format." -msgstr "" - -#: cinder/volume/drivers/smbfs.py:523 -#, python-format -msgid " but size is now %d." -msgstr "" - -#: cinder/volume/drivers/solidfire.py:153 -#, python-format -msgid "" -"Failed to make httplib connection SolidFire Cluster: %s (verify san_ip " -"settings)" -msgstr "" - -#: cinder/volume/drivers/solidfire.py:156 -#, python-format -msgid "Failed to make httplib connection: %s" -msgstr "" - -#: cinder/volume/drivers/solidfire.py:163 -#, 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:168 -#, python-format -msgid "HTTP request failed, with status: %(status)s and reason: %(reason)s" -msgstr "" - -#: cinder/volume/drivers/solidfire.py:179 -#, 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:189 -#, python-format -msgid "Clone operation encountered: %s" -msgstr "Clone operation encountered: %s" - -#: cinder/volume/drivers/solidfire.py:191 -#, 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:197 -#, python-format -msgid "Detected xDBVersionMismatch, retry %s of 5" -msgstr "Detected xDBVersionMismatch, retry %s of 5" - -#: cinder/volume/drivers/solidfire.py:204 -#: cinder/volume/drivers/solidfire.py:273 -#: cinder/volume/drivers/solidfire.py:368 -#, python-format -msgid "API response: %s" -msgstr "API response: %s" - -#: cinder/volume/drivers/solidfire.py:317 -#, 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:400 -msgid "Failed to get model update from clone" -msgstr "Failed to get model update from clone" - -#: cinder/volume/drivers/solidfire.py:412 -#, python-format -msgid "Failed volume create: %s" -msgstr "" - -#: cinder/volume/drivers/solidfire.py:427 -#: cinder/volume/drivers/fusionio/ioControl.py:254 -#, 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:465 -#, python-format -msgid "Failed to get SolidFire Volume: %s" -msgstr "" - -#: cinder/volume/drivers/solidfire.py:489 -#, python-format -msgid "Volume %s, not found on SF Cluster." -msgstr "Volume %s, not found on SF Cluster." - -#: cinder/volume/drivers/solidfire.py:492 -#, 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:565 -#, python-format -msgid "" -"Account for Volume ID %s was not found on the SolidFire Cluster while " -"attempting delete_volume operation!" -msgstr "" - -#: cinder/volume/drivers/solidfire.py:568 -msgid "This usually means the volume was never successfully created." -msgstr "" - -#: cinder/volume/drivers/solidfire.py:581 -#, python-format -msgid "Failed to delete SolidFire Volume: %s" -msgstr "" - -#: cinder/volume/drivers/solidfire.py:584 -#, python-format -msgid "" -"Volume ID %s was not found on the SolidFire Cluster while attempting " -"delete_volume operation!" -msgstr "" - -#: cinder/volume/drivers/solidfire.py:659 -#, python-format -msgid "" -"Volume ID %s was not found on the SolidFire Cluster while attempting " -"extend_volume operation!" -msgstr "" - -#: cinder/volume/drivers/solidfire.py:687 -msgid "Failed to get updated stats" -msgstr "Failed to get updated stats" - -#: cinder/volume/drivers/solidfire.py:724 -#, python-format -msgid "" -"Volume ID %s was not found on the SolidFire Cluster while attempting " -"attach_volume operation!" -msgstr "" - -#: cinder/volume/drivers/solidfire.py:750 -#, python-format -msgid "" -"Volume ID %s was not found on the SolidFire Cluster while attempting " -"detach_volume operation!" -msgstr "" - -#: cinder/volume/drivers/solidfire.py:775 -#, python-format -msgid "" -"Volume ID %s was not found on the SolidFire Cluster while attempting " -"accept_transfer operation!" -msgstr "" - -#: cinder/volume/drivers/solidfire.py:921 -#, python-format -msgid "" -"Account for Volume ID %s was not found on the SolidFire Cluster while " -"attempting unmanage operation!" -msgstr "" - -#: cinder/volume/drivers/zadara.py:409 cinder/volume/drivers/zadara.py:532 -#, 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:446 cinder/volume/drivers/zadara.py:491 -#: cinder/volume/drivers/zadara.py:517 -#, python-format -msgid "Volume %(name)s not found" -msgstr "" - -#: cinder/volume/drivers/zadara.py:465 -#, python-format -msgid "snapshot: original volume %s not found, skipping delete operation" -msgstr "" - -#: cinder/volume/drivers/zadara.py:473 -#, python-format -msgid "snapshot: snapshot %s not found, skipping delete operation" -msgstr "" - -#: cinder/volume/drivers/zadara.py:497 -#, python-format -msgid "Snapshot %(name)s not found" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:82 -#: cinder/volume/drivers/emc/emc_vmax_utils.py:60 -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_vmax_common.py:122 -#, python-format -msgid "" -"The striped meta count of %(memberCount)s is too small for volume: " -"%(volumeName)s. with size %(volumeSize)s " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:158 -#, python-format -msgid "" -"Pool: %(poolName)s. is not associated to storage tier for fast policy " -"%(fastPolicy)s." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:179 -#: cinder/volume/drivers/emc/emc_vmax_common.py:894 -#, python-format -msgid "" -"Adding volume: %(volumeName)s to default storage group for FAST policy: " -"%(fastPolicyName)s " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:188 -#: cinder/volume/drivers/emc/emc_vmax_common.py:908 -#: cinder/volume/drivers/emc/emc_vmax_common.py:1952 -#, python-format -msgid "" -"Unable to create or get default storage group for FAST policy: " -"%(fastPolicyName)s. " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:200 -#, python-format -msgid "" -"Leaving create_volume: %(volumeName)s Return code: %(rc)lu volume dict: " -"%(name)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:234 -#, python-format -msgid "Deleting Volume: %(volume)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:238 -#, python-format -msgid "Leaving delete_volume: %(volumename)s Return code: %(rc)lu" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:260 -#, python-format -msgid "Delete Snapshot: %(snapshotName)s " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:315 -#, python-format -msgid "" -"Cannot find Controller Configuration Service for storage system " -"%(storage_system)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:360 -#, python-format -msgid "" -"Volume %(volume)s is already mapped. The device number is " -"%(deviceNumber)s " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:375 -#, python-format -msgid "Error Attaching volume %(vol)s " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:436 -#, python-format -msgid "Cannot find Volume: %(volumename)s. Extend operation. Exiting...." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:443 -#, python-format -msgid "" -"Your original size: %(originalVolumeSize)s GB is greater than: " -"%(newSize)s GB. Only Extend is supported. Exiting..." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:460 -#, python-format -msgid "" -"Volume: %(volumeName)s is not a concatenated volume. You can only perform" -" extend on concatenated volume. Exiting..." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:495 -msgid "Error Creating unbound volume on an Extend operation" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:506 -#, python-format -msgid "" -"On an Extend Operation, error adding volume to composite volume: " -"%(volumename)s. " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:530 -#, python-format -msgid "" -"The requested size : %(requestedSize)s is not the same as resulting size:" -" %(resultSize)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:566 -#, python-format -msgid "PoolName %(poolName)s must be in the file %(emcConfigFileName)s " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:573 -#, python-format -msgid "" -"Array Serial Number %(arrayName)s must be in the file " -"%(emcConfigFileName)s " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:668 -#, python-format -msgid "Migrating using retype Volume: %(volume)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:676 -#, python-format -msgid "Volume %(name)s not found on the array. No volume to migrate using retype." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:688 -#, python-format -msgid "" -"Volume %(name)s is not suitable for storage assisted migration using " -"retype" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:716 -msgid "" -"The VMAX plugin only supports Retype. If a pool based migration is " -"necessary this will happen on a Retype From the command line: cinder " -"--os-volume-api-version 2 retype --migration-" -"policy on-demand" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:750 -#, python-format -msgid "" -"Failed to migrate: %(volumeName)s from default source storage group for " -"FAST policy: %(sourceFastPolicyName)s Attempting cleanup... " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:776 -#, python-format -msgid "" -"Attempting a rollback of: %(volumeName)s to original pool " -"%(sourcePoolInstanceName)s " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:807 -#, python-format -msgid "_migrate_rollback on : %(volumeName)s from " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:818 -#, python-format -msgid "" -"Failed to return volume %(volumeName)s to original storage pool. Please " -"contact your system administrator to return it to the correct location " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:845 -#, python-format -msgid "_migrate_cleanup on : %(volumeName)s from " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:921 -#, python-format -msgid "" -"Failed to verify that volume was added to storage group for FAST policy: " -"%(fastPolicyName)s. " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:962 -#, python-format -msgid "Error finding targe pool instance name for pool: %(targetPoolName)s. " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:976 -#, python-format -msgid "" -"Error migrating volume: %(volumename)s. to target pool " -"%(targetPoolName)s. " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:991 -#, python-format -msgid "" -"Volume : %(volumeName)s. was not successfully migrated to target pool " -"%(targetPoolName)s." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:1034 -#, python-format -msgid "" -"Failed to remove: %(volumename)s. from the default storage group for FAST" -" policy %(fastPolicyName)s. " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:1044 -#: cinder/volume/drivers/emc/emc_vmax_common.py:2011 -#, python-format -msgid "" -"The volume: %(volumename)s. was not first part of the default storage " -"group for FAST policy %(fastPolicyName)s." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:1074 -#, python-format -msgid "" -"Failed to add %(volumeName)s to default storage group for fast policy " -"%(fastPolicyName)s " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:1099 -msgid "Error getting target pool name and array" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:1111 -msgid "Error parsing target pool name, array, and fast policy" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:1115 -#, python-format -msgid "" -"The source array : %(sourceArraySerialNumber)s does not match the target " -"array: %(targetArraySerialNumber)sskipping storage-assisted migration" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:1131 -#, python-format -msgid "" -"No action required. Volume : %(volumeName)s is already part of pool : " -"%(pool)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:1141 -msgid "Only available volumes can be migrated between different protocols" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:1202 -#, python-format -msgid "StorageSystem %(array)s is not found." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:1239 -#, python-format -msgid "Pool %(poolNameInStr)s is not found." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:1245 -#, python-format -msgid "Storage system not found for pool %(poolNameInStr)s." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:1422 -#, python-format -msgid "Unable to get target endpoints for hardwareId %(hardwareIdInstance)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:1440 -#, python-format -msgid "Target end points do not exist for hardware Id : %(hardwareIdInstance)s " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:1516 -#, python-format -msgid "Configuration file %(configurationFile)s does not exist " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:1565 -msgid "" -"The pool cannot be null. The pool must be configured either in the extra " -"specs or in the EMC configuration file corresponding to the Volume Type. " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:1576 -msgid "" -"The array cannot be null. The pool must be configured either as a cinder " -"extra spec for multi-backend or in the EMC configuration file for the " -"default case " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:1608 -msgid "" -"Unable to get configuration information necessary to create a volume. " -"Please check that there is a configuration file for each config group, if" -" multi-backend is enabled. The should be in the following format " -"/etc/cinder/cinder_emc_config_.xml" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:1631 -msgid "You must supply an array in your EMC configuration file " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:1637 -msgid "Cannot get necessary pool or storage system information " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:1717 -#, python-format -msgid "" -"Error adding Volume: %(volumeName)s. with instance path: " -"%(volumeInstancePath)s. " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:1729 -#, python-format -msgid "Rolling back %(volumeName)s by deleting it. " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:1835 -#, python-format -msgid "Unable to determine whether %(volumeName)s is composite or not " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:1884 -#, python-format -msgid "" -"Create a Clone from Volume: Clone Volume: %(cloneName)s Source Volume: " -"%(sourceName)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:2051 -#, python-format -msgid "" -"Failed to Roll back to re-add volume %(volumeName)s to default storage " -"group for fast policy %(fastPolicyName)s: Please contact your sysadmin to" -" get the volume returned to the default storage group" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:2061 -#, python-format -msgid "Failed to delete volume %(volumeName)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_common.py:2083 -#, python-format -msgid "" -"Pre check for deletion Volume: %(volumeName)s is part of a storage group " -"Attempting removal from %(storageGroupInstanceName)s " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_fast.py:52 -msgid "Cannot determine whether Tiering Policy is support on this array." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_fast.py:57 -msgid "Tiering Policy is not supported on this array." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_fast.py:91 -msgid "Cannot determine if Tiering Policies are supported" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_fast.py:118 -#: cinder/volume/drivers/emc/emc_vmax_fast.py:609 -msgid "FAST is not supported on this array " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_fast.py:132 -#, python-format -msgid "Unable to find default storage group for FAST policy : %(fastPolicyName)s " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_fast.py:143 -#, python-format -msgid "" -"Volume: %(volumeName)s Does not belong to storage storage group " -"%(defaultSgGroupName)s. " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_fast.py:173 -#, python-format -msgid "" -"Unable to create default storage group for FAST policy : " -"%(fastPolicyName)s " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_fast.py:210 -#, python-format -msgid "Failed to create a first volume for storage group : %(storageGroupName)s " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_fast.py:222 -#, python-format -msgid "" -"Failed to create default storage group for FAST policy : " -"%(fastPolicyName)s " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_fast.py:238 -#, python-format -msgid "Unable to get policy rule for fast policy: %(fastPolicyName)s " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_fast.py:277 -msgid "Unable to get associated pool of volume" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_fast.py:314 -#, python-format -msgid "" -"Error associating storage group : %(storageGroupName)s. To fast Policy: " -"%(fastPolicyName)s with error description: %(errordesc)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_fast.py:404 -msgid "Unable to get storage tiers from tier policy rule " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_fast.py:492 -#, python-format -msgid "Cannot find the fast policy %(fastPolicyName)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_fast.py:513 -#, python-format -msgid "" -"Failed to add storage group %(storageGroupInstanceName)s to tier policy " -"rule %(tierPolicyRuleInstanceName)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_fast.py:579 -#, python-format -msgid "Error disassociating storage group from policy: %s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_fast.py:586 -#, python-format -msgid "Storage group not associated with the policy %s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_iscsi.py:53 -msgid "iscsi_ip_address is not set." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_iscsi.py:148 -#, python-format -msgid "Leaving initialize_connection: %s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_iscsi.py:156 -msgid "ISCSI provider_location not stored, using discovery." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_iscsi.py:163 -#, python-format -msgid "smis_do_iscsi_discovery is: %(out)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_iscsi.py:192 -#, python-format -msgid "Could not find iSCSI export for volume %(volumeName)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_iscsi.py:202 -#, python-format -msgid "Cannot find device number for volume %(volumeName)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_iscsi.py:209 -#, python-format -msgid "location is: %(location)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_iscsi.py:221 -#, python-format -msgid "ISCSI properties: %(properties)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_iscsi.py:223 -#, python-format -msgid "ISCSI volume is: %(volume)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_iscsi.py:228 -#, python-format -msgid "AUTH properties: %(authProps)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_iscsi.py:238 -#, python-format -msgid "AUTH properties: %s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:83 -#, python-format -msgid "Cannot get the default storage group for FAST policy: %(fastPolicyName)s. " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:96 -#, python-format -msgid "Failed to remove volume %(volumeName)s from default SG: %(volumeName)s. " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:114 -#, python-format -msgid "" -"Cannot get or create a storage group: %(sgGroupName)s for volume " -"%(volumeName)s " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:125 -#, python-format -msgid "Cannot get port group: %(pgGroupName)s. " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:136 -#, python-format -msgid "Cannot get or create initiator group: %(igGroupName)s. " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:149 -#, python-format -msgid "Cannot create masking view: %(maskingViewName)s. " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:160 -#, python-format -msgid "" -"Unable to verify initiator group: %(igGroupName)sin masking view " -"%(maskingViewName)s " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:175 -#, python-format -msgid "Cannot get storage group from masking view: %(maskingViewName)s. " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:185 -#: cinder/volume/drivers/emc/emc_vmax_masking.py:692 -#, python-format -msgid "Volume: %(volumeName)s is already part of storage group %(sgGroupName)s " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:209 -#, python-format -msgid "Failed to get or create masking view %(maskingViewName)s " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:256 -#, python-format -msgid "" -"The volume is already part of storage group: " -"%(storageGroupInstanceName)s. " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:285 -#, python-format -msgid "Found existing masking view: %(maskingViewName)s " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:321 -#, python-format -msgid "Cannot get storage Group from job : %(storageGroupName)s. " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:326 -#, python-format -msgid "Created new storage group: %(storageGroupName)s " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:338 -#, python-format -msgid "" -"Cannot add and verify tier policy association for storage group : " -"%(storageGroupName)s to FAST policy : %(fastPolicyName)s. " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:368 -#, python-format -msgid "" -"Could not find port group : %(portGroupName)s. Check that the EMC " -"configuration file has the correct port group name. " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:412 -#: cinder/volume/drivers/emc/emc_vmax_masking.py:943 -#, python-format -msgid "" -"Initiator Name(s) %(initiatorNames)s are not on array " -"%(storageSystemName)s " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:585 -#, python-format -msgid "" -"Error Create Masking View: %(groupName)s. Return code: %(rc)lu. Error: " -"%(error)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:595 -#, python-format -msgid "Created new masking view : %(maskingViewName)s " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:683 -#, python-format -msgid "Cannot create or find an storage group with name %(sgGroupName)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:719 -#, python-format -msgid "" -"Cannot find a portGroup with name %(pgGroupName)s. The port group for a " -"masking view must be pre-defined" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:726 -#, python-format -msgid "Port group instance name is %(foundPortGroupInstanceName)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:748 -#, python-format -msgid "Cannot create or find an initiator group with name %(igGroupName)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:776 -#, python-format -msgid "" -"Cannot find the new masking view just created with name " -"%(maskingViewName)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:809 -#, python-format -msgid "" -"Performing rollback on Volume: %(volumeName)s To return it to the default" -" storage group for FAST policy %(fastPolicyName)s. " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:822 -#, python-format -msgid "" -"Failed to Roll back to re-add volume %(volumeName)s to default storage " -"group for fast policy %(fastPolicyName)s: Please contact your sys admin " -"to get the volume re-added manually " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:831 -#, python-format -msgid "The storage group found is %(foundStorageGroupInstanceName)s: " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:848 -#, python-format -msgid "" -"Rollback for Volume: %(volumeName)s has failed. Please contact your " -"system administrator to manually return your volume to the default " -"storage group for fast policy %(fastPolicyName)s failed " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:976 -#, python-format -msgid "" -"One of the components of the original masking view %(maskingViewName)s " -"cannot be retrieved so please contact your system administrator to check " -"that the correct initiator(s) are part of masking " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:1006 -#: cinder/volume/drivers/emc/emc_vmax_provision.py:134 -#: cinder/volume/drivers/emc/emc_vmax_provision.py:166 -#, python-format -msgid "" -"Error Create Group: %(groupName)s. Return code: %(rc)lu. Error: " -"%(error)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:1029 -#, python-format -msgid "" -"Error adding initiator to group : %(groupName)s. Return code: %(rc)lu. " -"Error: %(error)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:1092 -#, python-format -msgid "" -"Error Modifying masking view : %(groupName)s. Return code: %(rc)lu. " -"Error: %(error)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:1144 -#, python-format -msgid "Added volume: %(volumeName)s to existing storage group %(sgGroupName)s. " -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:1173 -#, python-format -msgid "" -"Volume %(volumeName)s was not first part of the default storage group for" -" the FAST Policy" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:1206 -#, python-format -msgid "" -"Failed to remove %(volumeName)s from the default storage group for the " -"FAST Policy" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_masking.py:1317 -#, python-format -msgid "" -"policy:%(policy)s, policy service:%(service)s, masking " -"group=%(maskingGroup)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_provision.py:60 -#, python-format -msgid "" -"Error Delete Volume: %(volumeName)s. Return code: %(rc)lu. Error: " -"%(error)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_provision.py:100 -#, python-format -msgid "" -"Error Create Volume: %(volumeName)s. Return code: %(rc)lu. Error: " -"%(error)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_provision.py:236 -#, python-format -msgid "Error removing volume %(vol)s. %(error)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_provision.py:263 -#, python-format -msgid "Error mapping volume %(vol)s. %(error)s" -msgstr "Error mapping volume %(vol)s. %(error)s" - -#: cinder/volume/drivers/emc/emc_vmax_provision.py:292 -#, python-format -msgid "Error unbinding volume %(vol)s from pool. %(error)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_provision.py:324 -#, python-format -msgid "Error adding volume to composite volume. Error is: %(error)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_provision.py:423 -#, python-format -msgid "Error Creating new composite Volume Return code: %(rc)lu.Error: %(error)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_provision.py:454 -#, python-format -msgid "" -"Error Migrating volume from one pool to another. Return code: %(rc)lu. " -"Error: %(error)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_provision.py:494 -msgid "Failed to terminate migrate session" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_provision.py:505 -msgid "Failed to migrate volume for the second time" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_provision.py:513 -msgid "Failed to migrate volume for the first time" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_provision.py:534 -#, python-format -msgid "Error Terminating migrate session. Return code: %(rc)lu. Error: %(error)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_provision.py:566 -#, python-format -msgid "" -"Error Create Cloned Volume: Volume: %(cloneName)s Source " -"Volume:%(sourceName)s. Return code: %(rc)lu. Error: %(error)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_provision.py:617 -#, python-format -msgid "" -"Error break clone relationship: Clone Volume: %(cloneName)s Source " -"Volume: %(sourceName)s. Return code: %(rc)lu. Error: %(error)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_provision.py:645 -msgid "Error finding Target WWNs." -msgstr "Error finding Target WWNs." - -#: cinder/volume/drivers/emc/emc_vmax_utils.py:84 -#, python-format -msgid "Storage Configuration Service not found on %(storageSystemName)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_utils.py:114 -#, python-format -msgid "Controller Configuration Service not found on %(storageSystemName)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_utils.py:141 -#, python-format -msgid "Element Composition Service not found on %(storageSystemName)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_utils.py:169 -#, python-format -msgid "Storage Relocation Service not found on %(storageSystemName)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_utils.py:196 -#, python-format -msgid "Storage HardwareId mgmt Service not found on %(storageSystemName)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_utils.py:222 -#, python-format -msgid "Replication Service not found on %(storageSystemName)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_utils.py:250 -#, python-format -msgid "Tier Policy Service not found for %(storageSystemName)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_utils.py:427 -msgid "Cannot get storage system" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_utils.py:622 -msgid "Port Group name not found." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vmax_utils.py:664 -msgid "Fast Policy not found." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:203 -#, python-format -msgid "naviseccli_path: Could not find NAVISECCLI tool %(path)s." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:213 -msgid "san_secondary_ip is configured as the same value as san_ip." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:217 -msgid "san_ip: Mandatory field configuration. san_ip is not set." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:231 -#, python-format -msgid "Invalid VNX authentication type: %s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:238 -#, python-format -msgid "Using security file in %s for authentication" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:246 -msgid "Plain text credentials are being used for authentication" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:249 -msgid "" -"Neither security file nor plain text credentials are specified. Security " -"file under home directory will be used for authentication if present." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:258 -#, python-format -msgid "iscsi_initiators: %s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:313 -#, python-format -msgid "Error on enable compression on lun %s." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:324 -#, python-format -msgid "Error on adding lun to consistency group. %s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:334 -#, python-format -msgid "LUN already exists, LUN name %(name)s. Message: %(msg)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:362 -#, python-format -msgid "LUN is already deleted, LUN name %(name)s. Message: %(msg)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:388 -#, python-format -msgid "CommandLineHelper._wait_for_condition: %s timeout" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:409 -#, python-format -msgid "LUN %(name)s is already expanded. Message: %(msg)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:466 -#, python-format -msgid "Consistency group %(name)s already exists. Message: %(msg)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:505 -#, python-format -msgid "Can not add the lun %(lun)s to consistency group %(cg_name)s." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:535 -#, python-format -msgid "CG %(cg_name)s does not exist. Message: %(msg)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:539 -#, python-format -msgid "CG %(cg_name)s is deleting. Message: %(msg)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:545 -#, python-format -msgid "Consistency group %s was deleted successfully." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:565 -#, python-format -msgid "Cgsnapshot name %(name)s already exists. Message: %(msg)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:583 -#, python-format -msgid "Snapshot %(name)s for consistency group does not exist. Message: %(msg)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:604 -#, python-format -msgid "Snapshot %(name)s already exists. Message: %(msg)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:610 -#, python-format -msgid "Failed to get LUN ID for volume %s." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:624 -#, python-format -msgid "Snapshot %(name)s may deleted already. Message: %(msg)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:631 -#, python-format -msgid "Snapshot %(name)s is in use, retry. Message: %(msg)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:638 -#, python-format -msgid "Snapshot %s was deleted successfully." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:658 -#, python-format -msgid "Mount point %(name)s already exists. Message: %(msg)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:677 -#, python-format -msgid "" -"Snapshot %(snapname)s is attached to snapshot mount point %(mpname)s " -"already. Message: %(msg)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:731 -#, python-format -msgid "" -"Migration command may get network timeout. Double check whether migration" -" in fact started successfully. Message: %(msg)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:742 -#, python-format -msgid "Start migration failed. Message: %s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:768 -msgid "Querying migrating status error." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:825 -#, python-format -msgid "Storage group %(name)s already exists. Message: %(msg)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:842 -#, python-format -msgid "" -"Storage group %(name)s doesn't exist, may have already been deleted. " -"Message: %(msg)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:874 -#, python-format -msgid "" -"Host %(host)s has already disconnected from storage group %(sgname)s. " -"Message: %(msg)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:894 -#, python-format -msgid "" -"LUN %(lun)s has already added to Storage Group %(sgname)s. Message: " -"%(msg)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:914 -#, python-format -msgid "HLU %(hlu)s has already been removed from %(sgname)s. Message: %(msg)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:1005 -#, python-format -msgid "Invalid value for %(key)s, value is %(value)s." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:1048 -#, python-format -msgid "Error happened during storage pool querying, %s." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:1069 -msgid "No array serial number returned, set as unknown." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:1248 -#, python-format -msgid "See unavailable iSCSI target: %s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:1375 -#, python-format -msgid "Toggle storage_vnx_ip_address from %(old)s to %(new)s." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:1454 -msgid "" -"destroy_empty_storage_group: True. Empty storage group will be deleted " -"after volume is detached." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:1458 -msgid "" -"initiator_auto_registration: False. Initiator auto registration is not " -"enabled. Please register initiator manually." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:1491 -#, python-format -msgid "" -"Create Volume: %(volume)s Size: %(size)s pool: %(pool)s provisioning: " -"%(provisioning)s tiering: %(tiering)s." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:1539 -msgid "The given extra_spec or valid_values is None." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:1541 -#, python-format -msgid "The extra_spec: %s is invalid." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:1567 -msgid "deduplicated and auto tiering can't be both enabled." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:1571 -msgid "Compression Enabler is not installed. Can not create compressed volume." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:1577 -msgid "Deduplication Enabler is not installed. Can not create deduplicated volume" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:1583 -msgid "ThinProvisioning Enabler is not installed. Can not create thin volume" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:1588 -msgid "FAST VP Enabler is not installed. Can't set tiering policy for the volume" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:1617 -msgid "" -"Failed to get target_pool_name and target_array_serial. 'location_info' " -"is not in host['capabilities']." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:1630 -msgid "Error on parsing target_pool_name/target_array_serial." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:1748 -msgid "Storage-assisted migration failed during retype." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:1875 -#, python-format -msgid "Delete Snapshot: %(snapshot)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:1909 -#, python-format -msgid "Command to create the temporary Volume %s failed" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:1968 -#, python-format -msgid "Start to create consistency group: %(group_name)s id: %(id)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:1977 -#, python-format -msgid "Create consistency group %s failed." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:1991 -#, python-format -msgid "Start to delete consistency group: %(cg_name)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:1997 -#, python-format -msgid "Delete consistency group %s failed." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:2019 -#, python-format -msgid "Start to create cgsnapshot for consistency group: %(group_name)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:2029 -#, python-format -msgid "Create cg snapshot %s failed." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:2046 -#, python-format -msgid "Delete cgsnapshot %(snap_name)s for consistency group: %(group_name)s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:2056 -#, python-format -msgid "Delete cgsnapshot %s failed." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:2105 -#, python-format -msgid "Storage Group %s is not found. Create it." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:2147 -#, python-format -msgid "Host %s has no iSCSI initiator" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:2158 -#, python-format -msgid "Host %s has no FC initiators" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:2195 -#, python-format -msgid "Get ISCSI targets %(tg)s to register initiator %(in)s." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:2220 -#, python-format -msgid "Get FC targets %(tg)s to register initiator %(in)s." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:2311 -#, python-format -msgid "" -"Reach limitation set by configuration option max_luns_per_storage_group. " -"Operation to add %(vol)s into Storage Group %(sg)s is rejected." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:2335 -#, python-format -msgid "Failed to add %(vol)s into %(sg)s after %(retries)s tries." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:2371 -#, python-format -msgid "Failed to find an available iSCSI targets for %s." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:2435 -#, python-format -msgid "Storage Group %s is not found. terminate_connection() is unnecessary." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:2443 -#, python-format -msgid "Volume %s is not found. It has probably been removed in VNX." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:2451 -#, python-format -msgid "Volume %(vol)s was not in Storage Group %(sg)s." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:2459 -#, python-format -msgid "Storage Group %s was empty, destroy it." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:2469 -#, python-format -msgid "Failed to destroy Storage Group %s." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:2495 -msgid "Reference must contain lun_id element." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:2503 -msgid "Find no lun with the specified lun_id." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:2564 -#, python-format -msgid "Storage pool %s is not supported by this Cinder Volume" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:2588 -msgid "Error parsing output for FastCache Command." -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:2628 -msgid "The input lun is not in a manageable pool backend by cinder" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:2656 -#, python-format -msgid "Failed to find storage pool for source volume %s" -msgstr "" - -#: cinder/volume/drivers/emc/emc_vnx_cli.py:2668 -#, python-format -msgid "Failed to find storage pool to create volume %s." -msgstr "" - -#: cinder/volume/drivers/emc/xtremio.py:88 -#, python-format -msgid "object %(key)s of type %(typ)s not found" -msgstr "" - -#: cinder/volume/drivers/emc/xtremio.py:92 -msgid "can't create 2 volumes with the same name" -msgstr "" - -#: cinder/volume/drivers/emc/xtremio.py:93 -msgid "Volume by this name already exists" -msgstr "" - -#: cinder/volume/drivers/emc/xtremio.py:95 -#, python-format -msgid "Bad response from XMS, %s" -msgstr "" - -#: cinder/volume/drivers/emc/xtremio.py:99 -#, python-format -msgid "bad API response, %s" -msgstr "" - -#: cinder/volume/drivers/emc/xtremio.py:100 -#, python-format -msgid "bad response from XMS got http code %(code)d, %(msg)s" -msgstr "" - -#: cinder/volume/drivers/emc/xtremio.py:108 -msgid "can't handle both name and index in req" -msgstr "" - -#: cinder/volume/drivers/emc/xtremio.py:127 -#, python-format -msgid "querying %(typ)s, %(req)s failed to parse result, return value = %(res)s" -msgstr "" - -#: cinder/volume/drivers/emc/xtremio.py:141 -#: cinder/volume/drivers/emc/xtremio.py:323 -msgid "XtremIO not initialized correctly, no clusters found" -msgstr "" - -#: cinder/volume/drivers/emc/xtremio.py:146 -#, python-format -msgid "Invalid XtremIO version %s, version 2.4 or up is required" -msgstr "" - -#: cinder/volume/drivers/emc/xtremio.py:151 -#, python-format -msgid "XtremIO SW version %s" -msgstr "" - -#: cinder/volume/drivers/emc/xtremio.py:180 -#, python-format -msgid "volume %s doesn't exist" -msgstr "" - -#: cinder/volume/drivers/emc/xtremio.py:194 -#, python-format -msgid "snapshot %s doesn't exist" -msgstr "" - -#: cinder/volume/drivers/emc/xtremio.py:220 -msgid "can't find the volume to extend" -msgstr "" - -#: cinder/volume/drivers/emc/xtremio.py:238 -#, python-format -msgid "removing lun map %s" -msgstr "" - -#: cinder/volume/drivers/emc/xtremio.py:241 -msgid "terminate_connection: lun map not found" -msgstr "" - -#: cinder/volume/drivers/emc/xtremio.py:252 -#, python-format -msgid "can't find lunmap, ig:%(ig)s vol:%(vol)s" -msgstr "" - -#: cinder/volume/drivers/emc/xtremio.py:274 -#, python-format -msgid "" -"created lunmap\n" -"%s" -msgstr "" - -#: cinder/volume/drivers/emc/xtremio.py:279 -#, python-format -msgid "volume already mapped, trying to retrieve it %(ig)s, %(vol)d" -msgstr "" - -#: cinder/volume/drivers/emc/xtremio.py:284 -#, python-format -msgid "Can't find volume to map %s" -msgstr "" - -#: cinder/volume/drivers/emc/xtremio.py:343 -#: cinder/volume/drivers/emc/xtremio.py:466 -#, python-format -msgid "Failed to create IG, %s" -msgstr "" - -#: cinder/volume/drivers/emc/xtremio.py:353 -msgid "initiator has no password while using chap,removing it" -msgstr "" - -#: cinder/volume/drivers/emc/xtremio.py:411 -#, python-format -msgid "iscsi portal, %s, not found" -msgstr "" - -#: cinder/volume/drivers/emc/xtremio.py:446 -msgid "Failed to get targets" -msgstr "" - -#: cinder/volume/drivers/fusionio/ioControl.py:89 -msgid "FIO ioControl API version not supported" -msgstr "" - -#: cinder/volume/drivers/fusionio/ioControl.py:120 -#, python-format -msgid "FIO ioControl Authentication Error: %s" -msgstr "" - -#: cinder/volume/drivers/fusionio/ioControl.py:148 -msgid "FIO ioControl persistent json Error." -msgstr "" - -#: cinder/volume/drivers/fusionio/ioControl.py:214 -#, python-format -msgid "FIO _get_volume_by_name Error: %(name)s, %(len)s" -msgstr "" - -#: cinder/volume/drivers/fusionio/ioControl.py:228 -#, python-format -msgid "FIO _get_acl_by_name Error: %(name)s, %(len)s" -msgstr "" - -#: cinder/volume/drivers/fusionio/ioControl.py:242 -#, python-format -msgid "FIO _get_snapshot_by_name Error: %(name)s, %(len)s" -msgstr "" - -#: cinder/volume/drivers/fusionio/ioControl.py:284 -#: cinder/volume/drivers/ibm/ibmnas.py:110 -#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:260 -#: cinder/volume/drivers/netapp/iscsi.py:127 -#: cinder/volume/drivers/netapp/nfs.py:678 -#: cinder/volume/drivers/san/hp/hp_3par_common.py:202 -#, python-format -msgid "%s is not set" -msgstr "%s is not set" - -#: cinder/volume/drivers/fusionio/ioControl.py:289 -msgid "All of san_ip san_login san_password must be set" -msgstr "" - -#: cinder/volume/drivers/fusionio/ioControl.py:370 -#: cinder/volume/drivers/fusionio/ioControl.py:486 -msgid "FIO: ACL does not exist!" -msgstr "" - -#: cinder/volume/drivers/fusionio/ioControl.py:412 -#, python-format -msgid "No usable Networks found: %s" -msgstr "" - -#: cinder/volume/drivers/hds/hds.py:95 cinder/volume/drivers/hds/iscsi.py:73 -#: cinder/volume/drivers/hds/nfs.py:62 -#, python-format -msgid "%(element)s: %(val)s" -msgstr "" - -#: cinder/volume/drivers/hds/hds.py:106 cinder/volume/drivers/hds/hds.py:108 -#: cinder/volume/drivers/hds/iscsi.py:84 cinder/volume/drivers/hds/iscsi.py:86 -#: cinder/volume/drivers/hds/nfs.py:73 cinder/volume/drivers/hds/nfs.py:75 -#, fuzzy, python-format -msgid "XML exception reading parameter: %s" -msgstr "XML exception reading parameter: %s" - -#: cinder/volume/drivers/hds/hds.py:181 -#, python-format -msgid "portal: %(ip)s:%(ipp)s, CTL: %(ctl)s, port: %(port)s" -msgstr "" - -#: cinder/volume/drivers/hds/hds.py:200 cinder/volume/drivers/hds/iscsi.py:271 -#: cinder/volume/drivers/hds/nfs.py:192 -#, fuzzy, python-format -msgid "No configuration found for service: %s" -msgstr "No configuration found for service: %s" - -#: cinder/volume/drivers/hds/hds.py:253 cinder/volume/drivers/hds/iscsi.py:349 -#, fuzzy, python-format -msgid "HDP not found: %s" -msgstr "HDP not found: %s" - -#: cinder/volume/drivers/hds/hds.py:292 cinder/volume/drivers/hds/iscsi.py:396 -#, fuzzy, python-format -msgid "iSCSI portal not found for service: %s" -msgstr "iSCSI portal not found for service: %s" - -#: cinder/volume/drivers/hds/iscsi.py:147 -#, python-format -msgid "Backend type: %s" -msgstr "" - -#: cinder/volume/drivers/hds/iscsi.py:205 -#, python-format -msgid "Using default: instead of %s" -msgstr "" - -#: cinder/volume/drivers/hds/iscsi.py:206 -#: cinder/volume/drivers/hds/iscsi.py:269 cinder/volume/drivers/hds/nfs.py:190 -#, python-format -msgid "Available services: %s" -msgstr "" - -#: cinder/volume/drivers/hds/iscsi.py:218 -#, python-format -msgid "Retrieving secret for service: %s" -msgstr "" - -#: cinder/volume/drivers/hds/iscsi.py:252 -#, python-format -msgid "Retrieving target for service: %s" -msgstr "" - -#: cinder/volume/drivers/hds/iscsi.py:311 -#, python-format -msgid "stats: stats: %s" -msgstr "" - -#: cinder/volume/drivers/hds/iscsi.py:334 -#, python-format -msgid "HDP list: %s" -msgstr "" - -#: cinder/volume/drivers/hds/iscsi.py:385 -#, python-format -msgid "do_setup: %s" -msgstr "" - -#: cinder/volume/drivers/hds/iscsi.py:389 -#, python-format -msgid "iSCSI portal found for service: %s" -msgstr "" - -#: cinder/volume/drivers/hds/iscsi.py:442 -#, python-format -msgid "create_volume: create_lu returns %s" -msgstr "" - -#: cinder/volume/drivers/hds/iscsi.py:448 -#, python-format -msgid "LUN %(lun)s of size %(sz)s MB is created." -msgstr "" - -#: cinder/volume/drivers/hds/iscsi.py:499 -#, python-format -msgid "LUN %(lun)s extended to %(size)s GB." -msgstr "" - -#: cinder/volume/drivers/hds/iscsi.py:681 -#, python-format -msgid "Array mismatch %(myid)s vs %(arid)s" -msgstr "" - -#: cinder/volume/drivers/hds/nfs.py:216 cinder/volume/drivers/netapp/nfs.py:494 -#, python-format -msgid "Resizing file to %sG" -msgstr "" - -#: cinder/volume/drivers/hds/nfs.py:219 -#, python-format -msgid "LUN %(id)s extended to %(size)s GB." -msgstr "" - -#: cinder/volume/drivers/hds/nfs.py:224 cinder/volume/drivers/netapp/nfs.py:500 -msgid "Resizing image file failed." -msgstr "" - -#: cinder/volume/drivers/hds/nfs.py:245 -#, python-format -msgid "" -"Cannot create volume of size %(vol_size)s from snapshot of size " -"%(snap_size)s" -msgstr "" - -#: cinder/volume/drivers/hds/nfs.py:379 -#, python-format -msgid "" -"Cannot create clone of size %(vol_size)s from volume of size " -"%(src_vol_size)s" -msgstr "" - -#: cinder/volume/drivers/hds/nfs.py:424 -#, python-format -msgid "" -"nfs_info: %(key)s: %(path)s, HDP: %(fslabel)s " -"FSID: %(hdp)s" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:56 -#, python-format -msgid "The parameter of the storage backend. (config_group: %(config_group)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:58 -#, python-format -msgid "The storage backend can be used. (config_group: %(config_group)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:62 -#, python-format -msgid "A LUN (HLUN) was not found. (LDEV: %(ldev)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:63 -#, python-format -msgid "" -"Failed to specify a logical device for the volume %(volume_id)s to be " -"unmapped." -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:65 -#, python-format -msgid "An iSCSI CHAP user could not be deleted. (username: %(user)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:66 -#, python-format -msgid "" -"Failed to specify a logical device to be deleted. (method: %(method)s, " -"id: %(id)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:68 -#, python-format -msgid "The logical device for specified %(type)s %(id)s was already deleted." -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:70 -#, python-format -msgid "" -"A host group could not be deleted. (port: %(port)s, gid: %(gid)s, name: " -"%(name)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:72 -#, python-format -msgid "" -"An iSCSI target could not be deleted. (port: %(port)s, tno: %(tno)s, " -"alias: %(alias)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:74 -#, python-format -msgid "A host group could not be added. (port: %(port)s, name: %(name)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:76 -#, python-format -msgid "" -"An iSCSI target could not be added. (port: %(port)s, alias: %(alias)s, " -"reason: %(reason)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:78 -#, python-format -msgid "Failed to unmap a logical device. (LDEV: %(ldev)s, reason: %(reason)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:80 -#, python-format -msgid "" -"A free LUN (HLUN) was not found. Add a different host group. (LDEV: " -"%(ldev)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:82 -#, python-format -msgid "" -"Failed to get a storage resource. The system will attempt to get the " -"storage resource again. (resource: %(resource)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:84 -#, python-format -msgid "Failed to delete a logical device. (LDEV: %(ldev)s, reason: %(reason)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:86 -#, python-format -msgid "" -"Failed to map a logical device. (LDEV: %(ldev)s, LUN: %(lun)s, port: " -"%(port)s, id: %(id)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:88 -#, python-format -msgid "" -"Failed to perform a zero-page reclamation. (LDEV: %(ldev)s, reason: " -"%(reason)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:90 -#, python-format -msgid "" -"Failed to assign the iSCSI initiator IQN. (port: %(port)s, reason: " -"%(reason)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:95 -#, python-format -msgid "" -"The command %(cmd)s failed. (ret: %(ret)s, stdout: %(out)s, stderr: " -"%(err)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:97 -#, python-format -msgid "A parameter is invalid. (%(param)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:98 -#, python-format -msgid "A parameter value is invalid. (%(meta)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:99 -#, python-format -msgid "" -"Failed to acquire a resource lock. (serial: %(serial)s, inst: %(inst)s, " -"ret: %(ret)s, stderr: %(err)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:101 -msgid "Cannot set both hitachi_serial_number and hitachi_unit_name." -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:102 -msgid "Either hitachi_serial_number or hitachi_unit_name is required." -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:103 -#, python-format -msgid "" -"A pair could not be created. The maximum number of pair is exceeded. " -"(copy method: %(copy_method)s, P-VOL: %(pvol)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:105 -#, python-format -msgid "A pair cannot be deleted. (P-VOL: %(pvol)s, S-VOL: %(svol)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:106 -#, python-format -msgid "" -"The specified operation is not supported. The volume size must be the " -"same as the source %(type)s. (volume: %(volume_id)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:108 -#, python-format -msgid "" -"The volume %(volume_id)s could not be extended. The volume type must be " -"Normal." -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:110 -#, python-format -msgid "The volume %(volume_id)s to be mapped was not found." -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:111 -#, python-format -msgid "The %(type)s %(id)s source to be replicated was not found." -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:112 -#, python-format -msgid "Failed to create a file. (file: %(file)s, ret: %(ret)s, stderr: %(err)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:114 -#, python-format -msgid "Failed to open a file. (file: %(file)s, ret: %(ret)s, stderr: %(err)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:116 -#, python-format -msgid "%(file)s: Permission denied." -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:117 -msgid "Failed to add the logical device." -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:118 -#, python-format -msgid "The method %(method)s is timed out. (timeout value: %(timeout)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:119 -#, python-format -msgid "A pool could not be found. (pool id: %(pool_id)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:120 -msgid "The host group or iSCSI target could not be added." -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:121 -#, python-format -msgid "An iSCSI CHAP user could not be added. (username: %(user)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:122 -#, python-format -msgid "The iSCSI CHAP user %(user)s does not exist." -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:123 -#, python-format -msgid "There are no resources available for use. (resource: %(resource)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:125 -msgid "The host group or iSCSI target was not found." -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:126 -#, python-format -msgid "The resource %(resource)s was not found." -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:127 -msgid "The IP Address was not found." -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:128 -#, python-format -msgid "The creation of a logical device could not be completed. (LDEV: %(ldev)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:130 -#, python-format -msgid "A volume status is invalid. (status: %(status)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:131 -#, python-format -msgid "A snapshot status is invalid. (status: %(status)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:132 -#, python-format -msgid "A host group is invalid. (host group: %(gid)s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_basiclib.py:133 -#, python-format -msgid "The specified %(desc)s is busy." -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_common.py:392 -#: cinder/volume/drivers/hitachi/hbsd_common.py:399 -#: cinder/volume/drivers/hitachi/hbsd_horcm.py:1421 -#, python-format -msgid "Failed to restart horcm: %s" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_common.py:721 -#, python-format -msgid "Failed to update volume status: %s" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_fc.py:184 -#, python-format -msgid "Failed to add host group: %s" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_horcm.py:217 -msgid "Failed to shutdown horcm." -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_horcm.py:278 -msgid "horcm command timeout." -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_horcm.py:285 -msgid "Failed to authenticate user." -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_horcm.py:294 -msgid "Failed to start horcm." -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_horcm.py:298 -msgid "Unexpected error occurs in horcm." -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_horcm.py:897 -#, python-format -msgid "Failed to discard zero page: %s" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_horcm.py:1396 -#: cinder/volume/drivers/hitachi/hbsd_horcm.py:1406 -#: cinder/volume/drivers/hitachi/hbsd_horcm.py:1414 -#: cinder/volume/drivers/hitachi/hbsd_horcm.py:1440 -#, python-format -msgid "Failed to create pair: %s" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_iscsi.py:189 -#, python-format -msgid "Failed to add target(port: %s)" -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_snm2.py:75 -msgid "snm2 command timeout." -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_snm2.py:89 -msgid "Unexpected error occurs in snm2." -msgstr "" - -#: cinder/volume/drivers/hitachi/hbsd_snm2.py:129 -#, python-format -msgid "ldev(%(ldev)d) is already mapped (hlun: %(hlu)d)" -msgstr "" - -#: cinder/volume/drivers/huawei/__init__.py:59 -msgid "_instantiate_driver: configuration not found." -msgstr "" - -#: cinder/volume/drivers/huawei/__init__.py:86 -#, 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_t.py:161 -#: 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:250 -#, 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:353 -#, python-format -msgid "_remove_iscsi_port: iSCSI port was not found on host %(hostid)s." -msgstr "" - -#: cinder/volume/drivers/huawei/huawei_t.py:438 -msgid "validate_connector: The FC driver requires thewwpns in the connector." -msgstr "" - -#: cinder/volume/drivers/huawei/huawei_t.py:582 -#, python-format -msgid "_remove_fc_ports: FC port was not found on host %(hostid)s." -msgstr "" - -#: cinder/volume/drivers/huawei/huawei_utils.py:41 -#, python-format -msgid "parse_xml_file: %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:688 -#, python-format -msgid "JSON transfer data error. %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: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: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:1225 -#, python-format -msgid "%s" -msgstr "" - -#: cinder/volume/drivers/huawei/rest_common.py:1239 -#: cinder/volume/drivers/huawei/ssh_common.py:119 -#: 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:126 -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:55 -#, python-format -msgid "ssh_read: Read SSH timeout. %s" -msgstr "" - -#: cinder/volume/drivers/huawei/ssh_common.py:71 -msgid "No response message. Please check system status." -msgstr "" - -#: cinder/volume/drivers/huawei/ssh_common.py:136 -#: 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:170 -#, python-format -msgid "_get_login_info: %s" -msgstr "" - -#: cinder/volume/drivers/huawei/ssh_common.py:280 -#, 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:374 -#: 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:420 -#, 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: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:516 -#, python-format -msgid "delete_volume: Volume %(name)s does not exist." -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:697 -#, python-format -msgid "Source volume %(name)s does not exist." -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: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: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: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: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: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:126 -#, python-format -msgid "Failed to issue mmgetstate command, error: %s." -msgstr "" - -#: cinder/volume/drivers/ibm/gpfs.py:137 -#, python-format -msgid "GPFS is not active. Detailed output: %s." -msgstr "" - -#: cinder/volume/drivers/ibm/gpfs.py:138 -#, python-format -msgid "GPFS is not running, state: %s." -msgstr "" - -#: cinder/volume/drivers/ibm/gpfs.py:150 -#, python-format -msgid "Failed to issue df command for path %(path)s, error: %(error)s." -msgstr "" - -#: cinder/volume/drivers/ibm/gpfs.py:166 cinder/volume/drivers/ibm/gpfs.py:255 -#, python-format -msgid "Failed to issue mmlsconfig command, error: %s." -msgstr "" - -#: cinder/volume/drivers/ibm/gpfs.py:177 -#, python-format -msgid "Failed to issue mmlsattr command on path %(path)s, error: %(error)s" -msgstr "" - -#: cinder/volume/drivers/ibm/gpfs.py:186 -#, python-format -msgid "Failed to find fileset for path %(path)s, command output: %(cmdout)s." -msgstr "" - -#: cinder/volume/drivers/ibm/gpfs.py:208 -#, python-format -msgid "Invalid storage pool %s requested. Retype failed." -msgstr "" - -#: cinder/volume/drivers/ibm/gpfs.py:235 -#, python-format -msgid "Failed to issue mmlsfs command for path %(path)s, error: %(error)s." -msgstr "" - -#: cinder/volume/drivers/ibm/gpfs.py:272 -#, python-format -msgid "Failed to issue mmlsattr command for path %(path)s, error: %(error)s." -msgstr "" - -#: cinder/volume/drivers/ibm/gpfs.py:322 -#, python-format -msgid "Could not find GPFS cluster id: %s." -msgstr "" - -#: cinder/volume/drivers/ibm/gpfs.py:330 -#, python-format -msgid "Could not find GPFS file system device: %s." -msgstr "" - -#: cinder/volume/drivers/ibm/gpfs.py:338 -#, python-format -msgid "Invalid storage pool %s specificed." -msgstr "" - -#: cinder/volume/drivers/ibm/gpfs.py:348 -msgid "Option gpfs_mount_point_base is not set correctly." -msgstr "" - -#: cinder/volume/drivers/ibm/gpfs.py:355 -msgid "Option gpfs_images_share_mode is not set correctly." -msgstr "" - -#: cinder/volume/drivers/ibm/gpfs.py:361 -msgid "Option gpfs_images_dir is not set correctly." -msgstr "" - -#: cinder/volume/drivers/ibm/gpfs.py:368 -#, 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:379 -#, 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:388 -#, 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:402 -#, python-format -msgid "%s must be an absolute path." -msgstr "" - -#: cinder/volume/drivers/ibm/gpfs.py:407 -#, python-format -msgid "%s is not a directory." -msgstr "" - -#: cinder/volume/drivers/ibm/gpfs.py:417 -#, 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:798 -#, python-format -msgid "Failed to resize volume %(volume_id)s, error: %(error)s." -msgstr "" - -#: cinder/volume/drivers/ibm/gpfs.py:872 -#, 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:944 -#, python-format -msgid "mkfs failed on volume %(vol)s, error message was: %(err)s." -msgstr "" - -#: cinder/volume/drivers/ibm/gpfs.py:977 -#, python-format -msgid "" -"%s cannot be accessed. Verify that GPFS is active and file system is " -"mounted." -msgstr "" - -#: cinder/volume/drivers/ibm/ibmnas.py:91 -#, python-format -msgid "Initialized driver for IBMNAS Platform: %s." -msgstr "" - -#: cinder/volume/drivers/ibm/ibmnas.py:116 -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:123 -#, python-format -msgid "" -"Unsupported ibmnas_platform_type: %(given)s. Supported platforms: " -"%(valid)s" -msgstr "" - -#: cinder/volume/drivers/ibm/ibmnas.py:171 -#, python-format -msgid "" -"Failed in _ssh_operation while execution of ssh_cmd:%(cmd)s. Error: " -"%(error)s" -msgstr "" - -#: cinder/volume/drivers/ibm/ibmnas.py:223 -#, python-format -msgid "Failed to resize volume %(volume_id)s, error: %(error)s" -msgstr "" - -#: cinder/volume/drivers/ibm/ibmnas.py:249 -#, python-format -msgid "Failed in _delete_snapfiles. Error: %s" -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:181 -#, python-format -msgid "Failed getting details for pool %s" -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:217 -msgid "do_setup: No configured nodes." -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:250 -msgid "Unable to determine system name" -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:253 -msgid "Unable to determine system id" -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:266 -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:274 -#, 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:292 -#, 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:311 -msgid "The connector does not contain the required information." -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:369 -msgid "CHAP secret exists for host but CHAP is disabled" -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:374 -#, 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:386 -#, 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:388 -#, 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:405 -#, 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:414 -#, 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:446 -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:465 -#, python-format -msgid "" -"Unable to find a preferred node match for node %(node)s in the list of " -"available WWPNs on %(host)s. Using first available." -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:485 -#, 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:535 -msgid "terminate_connection: Failed to get host name from connector." -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:589 -msgid "create_snapshot: get source volume failed." -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:602 -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:624 -#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:747 -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:649 -msgid "extend_volume: Extending a volume with snapshots is not supported." -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:697 -#, 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:702 -#, 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:714 -#, 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:722 -#, 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:769 -#, python-format -msgid "Volume %s does not exist." -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:781 -#, 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:897 -#, python-format -msgid "Unable to retype: Volume %s is replicated." -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:913 -#, python-format -msgid "" -"Unable to retype: A copy of volume %s exists. Retyping would exceed the " -"limit of 2 copies." -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:948 -#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:975 -#, python-format -msgid "No vdisk with the UID specified by source-id %s." -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:968 -msgid "Reference must contain source-id element." -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:984 -msgid "The specified vdisk is mapped to a host." -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/__init__.py:1024 -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:1025 -msgid "_update_volume_stats: Could not get storage pool data" -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:50 -#, python-format -msgid "Could not find key in output of command %(cmd)s: %(out)s" -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:70 -#, python-format -msgid "Failed to get code level (%s)." -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:92 -#, python-format -msgid "Expected integer for node_count, svcinfo lsiogrp returned: %(node)s" -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:149 -#, 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:171 -#, python-format -msgid "Failed to find host %s" -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:244 -msgid "create_host: Host name is not unicode or string" -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:255 -msgid "create_host: No initiators or wwpns supplied." -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:338 -#, 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:344 -#, 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:356 -#, 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:401 -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:407 -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:414 -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:421 -msgid "System does not support compression" -msgstr "System does not support compression" - -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:426 -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:432 -#, 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:441 -#, 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:468 -msgid "Protocol must be specified as ' iSCSI' or ' FC'." -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:483 -msgid "Replication must be specified as ' True' or ' False'." -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:610 -msgid "Failed to find a vdisk copy in the expected pool." -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:677 -#, python-format -msgid "" -"Unexecpted mapping status %(status)s for mapping%(id)s. Attributes: " -"%(attr)s" -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:687 -#, 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:747 -#, 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:793 -#, python-format -msgid "Tried to delete non-existant vdisk %s." -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:807 -#, python-format -msgid "create_copy: Source vdisk %(src)s (%(src_id)s) does not exist" -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:835 -#, python-format -msgid "" -"add_vdisk_copy failed: A copy of volume %s exists. Adding another copy " -"would exceed the limit of 2 copies." -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:842 -msgid "add_vdisk_copy started without a vdisk copy in the expected pool." -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/helpers.py:915 -msgid "" -"Expected single vdisk returned from lsvdisk when filtering on vdisk_UID." -" %{count}s were returned." -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/replication.py:107 -#, python-format -msgid "Unable to create replica clone for volume %s" -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/replication.py:118 -#, python-format -msgid "" -"Unable to promote replica to primary for volume %s. No secondary copy " -"available." -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/replication.py:146 -#, python-format -msgid "Primary copy status: %(status)s and synchronized: %(sync)s" -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/replication.py:165 -#, python-format -msgid "" -"Secondary copy status: %(status)s and synchronized: %(sync)s, sync " -"progress is: %(progress)s%%" -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/ssh.py:36 -#: cinder/volume/drivers/ibm/storwize_svc/ssh.py:214 -#: cinder/volume/drivers/ibm/storwize_svc/ssh.py:251 -#, 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:54 -#, python-format -msgid "Expected no output from CLI command %(cmd)s, got %(out)s" -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/ssh.py:66 -#: cinder/volume/drivers/ibm/storwize_svc/ssh.py:263 -#, 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:145 -msgid "Must pass wwpn or host to lsfabric." -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/ssh.py:161 -#, python-format -msgid "Did not find success message nor error for %(fun)s: %(out)s" -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/ssh.py:166 -msgid "" -"storwize_svc_multihostmap_enabled is set to False, not allowing multi " -"host mapping." -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/ssh.py:367 -#, python-format -msgid "Did not find expected key %(key)s in %(fun)s: %(raw)s" -msgstr "" - -#: cinder/volume/drivers/ibm/storwize_svc/ssh.py:402 -#, python-format -msgid "" -"Unexpected CLI response: header/row mismatch. header: %(header)s, row: " -"%(row)s" -msgstr "" - -#: cinder/volume/drivers/netapp/api.py:426 -#, python-format -msgid "No element by given name %s." -msgstr "" - -#: cinder/volume/drivers/netapp/api.py:446 -msgid "Not a valid value for NaElement." -msgstr "" - -#: cinder/volume/drivers/netapp/api.py:450 -msgid "NaElement name cannot be null." -msgstr "" - -#: cinder/volume/drivers/netapp/api.py:493 -msgid "Type cannot be converted into NaElement." -msgstr "" - -#: cinder/volume/drivers/netapp/common.py:83 -msgid "Required configuration not found" -msgstr "" - -#: cinder/volume/drivers/netapp/common.py:111 -#, python-format -msgid "Requested unified config: %(storage_family)s and %(storage_protocol)s" -msgstr "" - -#: cinder/volume/drivers/netapp/common.py:117 -#, python-format -msgid "Storage family %s is not supported" -msgstr "" - -#: cinder/volume/drivers/netapp/common.py:124 -#, python-format -msgid "No default storage protocol found for storage family %(storage_family)s" -msgstr "" - -#: cinder/volume/drivers/netapp/common.py:131 -#, python-format -msgid "" -"Protocol %(storage_protocol)s is not supported for storage family " -"%(storage_family)s" -msgstr "" - -#: cinder/volume/drivers/netapp/common.py:138 -#, python-format -msgid "" -"NetApp driver of family %(storage_family)s and protocol " -"%(storage_protocol)s loaded" -msgstr "" - -#: cinder/volume/drivers/netapp/common.py:147 -msgid "Only loading netapp drivers supported." -msgstr "" - -#: cinder/volume/drivers/netapp/common.py:166 -#, 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:74 -#, 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:177 -#: cinder/volume/drivers/netapp/nfs.py:808 -#: cinder/volume/drivers/netapp/nfs.py:1378 -#: cinder/volume/drivers/netapp/eseries/iscsi.py:312 -msgid "Pool is not available in the volume host field." -msgstr "" - -#: cinder/volume/drivers/netapp/iscsi.py:209 -#, 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:261 -#, 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:266 -#, python-format -msgid "" -"Successfully fetched target details for LUN %(name)s and initiator " -"%(initiator_name)s" -msgstr "" - -#: cinder/volume/drivers/netapp/iscsi.py:283 -#, 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:286 -#, 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:344 -#: cinder/volume/drivers/netapp/iscsi.py:598 -#: cinder/volume/drivers/netapp/nfs.py:111 -#: cinder/volume/drivers/netapp/nfs.py:218 -#, python-format -msgid "Resizing %s failed. Cleaning volume." -msgstr "" - -#: cinder/volume/drivers/netapp/iscsi.py:359 -#, 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:389 -#, python-format -msgid "Error provisioning volume %(lun_name)s on %(volume_name)s. Details: %(ex)s" -msgstr "" - -#: cinder/volume/drivers/netapp/iscsi.py:455 -#, 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:474 -#, 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:544 -msgid "Object is not a NetApp LUN." -msgstr "Object is not a NetApp LUN." - -#: cinder/volume/drivers/netapp/iscsi.py:576 -#, python-format -msgid "Message: %s" -msgstr "" - -#: cinder/volume/drivers/netapp/iscsi.py:578 -#, python-format -msgid "Error getting lun attribute. Exception: %s" -msgstr "" - -#: cinder/volume/drivers/netapp/iscsi.py:635 -#, python-format -msgid "No need to extend volume %s as it is already the requested new size." -msgstr "" - -#: cinder/volume/drivers/netapp/iscsi.py:641 -#, python-format -msgid "Resizing lun %s directly to new size." -msgstr "" - -#: cinder/volume/drivers/netapp/iscsi.py:668 -#, python-format -msgid "Lun %(path)s geometry failed. Message - %(msg)s" -msgstr "" - -#: cinder/volume/drivers/netapp/iscsi.py:712 -#, python-format -msgid "Resizing lun %s using sub clone to new size." -msgstr "" - -#: cinder/volume/drivers/netapp/iscsi.py:719 -#, python-format -msgid "%s cannot be sub clone resized as it is hosted on compressed volume" -msgstr "" - -#: cinder/volume/drivers/netapp/iscsi.py:725 -#, python-format -msgid "%s cannot be sub clone resized as it contains no blocks." -msgstr "" - -#: cinder/volume/drivers/netapp/iscsi.py:742 -#, python-format -msgid "Post clone resize lun %s" -msgstr "" - -#: cinder/volume/drivers/netapp/iscsi.py:753 -#, python-format -msgid "Failure staging lun %s to tmp." -msgstr "" - -#: cinder/volume/drivers/netapp/iscsi.py:758 -#, python-format -msgid "Failure moving new cloned lun to %s." -msgstr "" - -#: cinder/volume/drivers/netapp/iscsi.py:762 -#, python-format -msgid "Failure deleting staged tmp lun %s." -msgstr "" - -#: cinder/volume/drivers/netapp/iscsi.py:765 -#, python-format -msgid "Unknown exception in post clone resize lun %s." -msgstr "" - -#: cinder/volume/drivers/netapp/iscsi.py:767 -#, python-format -msgid "Exception details: %s" -msgstr "" - -#: cinder/volume/drivers/netapp/iscsi.py:776 -#, python-format -msgid "Failure getting lun info for %s." -msgstr "" - -#: cinder/volume/drivers/netapp/iscsi.py:1022 -#, python-format -msgid "No cloned lun named %s found on the filer" -msgstr "" - -#: cinder/volume/drivers/netapp/iscsi.py:1193 -#: cinder/volume/drivers/netapp/nfs.py:1341 -msgid "Unsupported ONTAP version. ONTAP version 7.3.1 and above is supported." -msgstr "" - -#: cinder/volume/drivers/netapp/iscsi.py:1197 -#: cinder/volume/drivers/netapp/nfs.py:1345 -#: cinder/volume/drivers/netapp/utils.py:328 -msgid "Api version could not be determined." -msgstr "" - -#: cinder/volume/drivers/netapp/iscsi.py:1228 -#, python-format -msgid "Could not determine root volume name on %s." -msgstr "" - -#: cinder/volume/drivers/netapp/iscsi.py:1307 -#, python-format -msgid "Error finding luns for volume %s. Verify volume exists." -msgstr "" - -#: cinder/volume/drivers/netapp/iscsi.py:1568 -msgid "Volume refresh job already running. Returning..." -msgstr "" - -#: cinder/volume/drivers/netapp/iscsi.py:1574 -#, python-format -msgid "Error refreshing volume info. Message: %s" -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:116 -#: cinder/volume/drivers/netapp/nfs.py:223 -#, python-format -msgid "NFS file %s not discovered." -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:235 -#, python-format -msgid "Copied image to volume %s using regular download." -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:242 -#, python-format -msgid "Registering image in cache %s" -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:249 -#, python-format -msgid "" -"Exception while registering image %(image_id)s in cache. Exception: " -"%(exc)s" -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:275 -#, python-format -msgid "Cloning from cache to destination %s" -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:305 -#, python-format -msgid "Cleaning cache for share %s." -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:317 -#, python-format -msgid "Exception during cache cleaning %(share)s. Message - %(ex)s" -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:375 -#, python-format -msgid "Exception during deleting %s" -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:407 -#, python-format -msgid "Image cloning unsuccessful for image %(image_id)s. Message: %(msg)s" -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:423 -#, python-format -msgid "Cloning image %s from cache" -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:437 -#, python-format -msgid "Unexpected exception during image cloning in share %s" -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:443 -#, python-format -msgid "Checking image clone %s from glance share." -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:462 -#, python-format -msgid "Image will locally be converted to raw %s" -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:469 -#, 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:479 -#, python-format -msgid "Performing post clone for %s" -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:486 -msgid "NFS file could not be discovered." -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:522 -msgid "Discover file retries exhausted." -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:580 -msgid "Unexpected exception while short listing used share." -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:595 -msgid "Image location not present." -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:632 -msgid "Container size smaller than required file size." -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:640 -#, python-format -msgid "Destination %s already exists." -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:648 -#, python-format -msgid "Exception moving file %(src)s. Message - %(e)s" -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:767 -#, python-format -msgid "Shares on vserver %s will only be used for provisioning." -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:771 -msgid "No vserver set in config. SSC will be disabled." -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:824 -#: cinder/volume/drivers/netapp/nfs.py:1388 -#, python-format -msgid "Exception creating vol %(name)s on share %(share)s. Details: %(ex)s" -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:834 -#: cinder/volume/drivers/netapp/nfs.py:1393 -#, python-format -msgid "Volume %s could not be created on shares." -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:880 -#, 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:921 -#, 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:928 -#, 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:1037 -msgid "No shares found hence skipping ssc refresh." -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:1167 -#, python-format -msgid "Copied image %(img)s to volume %(vol)s using copy offload workflow." -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:1174 -#, python-format -msgid "Copy offload workflow unsuccessful. %s" -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:1198 -#, python-format -msgid "No vserver owning the ip %s." -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:1234 -#, python-format -msgid "Error in workflow copy from cache. %s." -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:1254 -msgid "Source host details not found." -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:1304 -#, python-format -msgid "Converted to raw, but format is now %s." -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:1382 -#, python-format -msgid "Creating volume at location %s" -msgstr "" - -#: cinder/volume/drivers/netapp/nfs.py:1423 -#, python-format -msgid "No storage path found for export path %s" -msgstr "No storage path found for export path %s" - -#: cinder/volume/drivers/netapp/ssc_utils.py:424 -#, python-format -msgid "Running stale ssc refresh job for %(server)s and vserver %(vs)s" -msgstr "" - -#: cinder/volume/drivers/netapp/ssc_utils.py:458 -#, python-format -msgid "Successfully completed stale refresh job for %(server)s and vserver %(vs)s" -msgstr "" - -#: cinder/volume/drivers/netapp/ssc_utils.py:485 -#, python-format -msgid "Running cluster latest ssc job for %(server)s and vserver %(vs)s" -msgstr "" - -#: cinder/volume/drivers/netapp/ssc_utils.py:491 -#, python-format -msgid "Successfully completed ssc job for %(server)s and vserver %(vs)s" -msgstr "" - -#: cinder/volume/drivers/netapp/ssc_utils.py:503 -msgid "Backend not a VolumeDriver." -msgstr "" - -#: cinder/volume/drivers/netapp/ssc_utils.py:505 -msgid "Backend server not NaServer." -msgstr "" - -#: cinder/volume/drivers/netapp/ssc_utils.py:508 -msgid "ssc job in progress. Returning... " -msgstr "" - -#: cinder/volume/drivers/netapp/ssc_utils.py:520 -msgid "refresh stale ssc job in progress. Returning... " -msgstr "" - -#: cinder/volume/drivers/netapp/ssc_utils.py:616 -msgid "Fatal error: User not permitted to query NetApp volumes." -msgstr "" - -#: cinder/volume/drivers/netapp/ssc_utils.py:623 -#, 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:131 -#, python-format -msgid "Failed to invoke ems. Message : %s" -msgstr "" - -#: cinder/volume/drivers/netapp/utils.py:144 -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:167 -msgid "Requires an NaServer instance." -msgstr "" - -#: cinder/volume/drivers/netapp/utils.py:325 -msgid "Unsupported Clustered Data ONTAP version." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/client.py:46 -msgid "One of the required inputs from host, port or scheme not found." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/client.py:50 -msgid "Invalid transport type." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/client.py:74 -#, python-format -msgid "Unexpected error while invoking web service. Error - %s." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/client.py:77 -msgid "Invoking web service failed." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/client.py:110 -msgid "Storage system id not set." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/client.py:136 -msgid "Content type not supported." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/client.py:146 -#, python-format -msgid "Response error - %s." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/client.py:148 -#, python-format -msgid "Response error code - %s." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:104 -#, python-format -msgid "Error resolving host %(host)s. Error - %(e)s." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:114 -msgid "Controller ips not valid after resolution." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:117 -msgid "Embedded mode detected." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:120 -msgid "Proxy mode detected." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:131 -#, python-format -msgid "System with controller addresses [%s] is not registered with web service." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:149 -msgid "Waiting for web service array communication." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:153 -#, 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:163 -#, python-format -msgid "System %(id)s found with bad status - %(status)s." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:165 -#, python-format -msgid "System %(id)s has %(status)s status." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:181 -#, python-format -msgid "Configured storage pools %s." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:278 -#, python-format -msgid "No pit image found in snapshot group %s." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:336 -#, python-format -msgid "Pools %s does not exist" -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:342 -#: cinder/volume/drivers/netapp/eseries/iscsi.py:357 -#: cinder/volume/drivers/netapp/eseries/iscsi.py:374 -#, python-format -msgid "Created volume with label %s." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:345 -#: cinder/volume/drivers/netapp/eseries/iscsi.py:360 -#, python-format -msgid "Error creating volume. Msg - %s." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:361 -#, python-format -msgid "Failure creating volume %s." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:383 -#, python-format -msgid "Failure deleting snap vol. Error: %s." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:385 -msgid "Snapshot volume not found." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:401 -#, python-format -msgid "Copying src vol %(src)s to dest vol %(dst)s." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:414 -#, python-format -msgid "Vol copy job status %s." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:415 -#, python-format -msgid "Vol copy job for dest %s failed." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:418 -#, python-format -msgid "Vol copy job completed for dest %s." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:426 -#, python-format -msgid "Failure deleting job %s." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:428 -#, python-format -msgid "Volume copy job for src vol %s not found." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:430 -#, python-format -msgid "Copy job to dest vol %s completed." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:442 -#, python-format -msgid "Failure deleting temp snapshot %s." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:451 -#, python-format -msgid "Volume %s already deleted." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:475 -#, python-format -msgid "Created snap grp with label %s." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:486 -#, python-format -msgid "Snapshot %s already deleted." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:512 -#, python-format -msgid "Mapped volume %(id)s to the initiator %(initiator_name)s." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:515 -#, python-format -msgid "" -"Successfully fetched target details for volume %(id)s and initiator " -"%(initiator_name)s." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:555 -#, python-format -msgid "No good iscsi portal information found for %s." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:580 -#, python-format -msgid "Message - %s." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:595 -#, python-format -msgid "Host with port %(port)s and type %(type)s not found." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:600 -#, python-format -msgid "Creating host with port %s." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:613 -#, python-format -msgid "Host type %s not supported." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:623 -msgid "No free luns. Host might exceeded max luns." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:653 -#, python-format -msgid "Mapping not found for %(vol)s to host %(ht)s." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:705 -#, python-format -msgid "No storage pool found with available capacity %s." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:724 -#, python-format -msgid "Extended volume with label %s." -msgstr "" - -#: cinder/volume/drivers/netapp/eseries/iscsi.py:738 -msgid "Returning as clean tmp vol job already running." -msgstr "" - -#: cinder/volume/drivers/nexenta/iscsi.py:106 -#, 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:152 -#, python-format -msgid "Extending volume: %(id)s New size: %(size)s GB" -msgstr "" - -#: cinder/volume/drivers/nexenta/iscsi.py:168 -#, python-format -msgid "Volume %s does not exist, it seems it was already deleted." -msgstr "" - -#: cinder/volume/drivers/nexenta/iscsi.py:181 -#, python-format -msgid "Cannot delete snapshot %(origin)s: %(exc)s" -msgstr "" - -#: cinder/volume/drivers/nexenta/iscsi.py:202 -#: cinder/volume/drivers/nexenta/nfs.py:202 -#, python-format -msgid "Volume creation failed, deleting created snapshot %(volume_name)s@%(name)s" -msgstr "" - -#: cinder/volume/drivers/nexenta/iscsi.py:207 -#: cinder/volume/drivers/nexenta/nfs.py:207 -#, python-format -msgid "Failed to delete zfs snapshot %(volume_name)s@%(name)s" -msgstr "" - -#: cinder/volume/drivers/nexenta/iscsi.py:269 -#, python-format -msgid "Remote NexentaStor appliance at %s should be SSH-bound." -msgstr "" - -#: cinder/volume/drivers/nexenta/iscsi.py:289 -#, python-format -msgid "" -"Cannot send source snapshot %(src)s to destination %(dst)s. Reason: " -"%(exc)s" -msgstr "" - -#: cinder/volume/drivers/nexenta/iscsi.py:297 -#, python-format -msgid "" -"Cannot delete temporary source snapshot %(src)s on NexentaStor Appliance:" -" %(exc)s" -msgstr "" - -#: cinder/volume/drivers/nexenta/iscsi.py:303 -#, python-format -msgid "Cannot delete source volume %(volume)s on NexentaStor Appliance: %(exc)s" -msgstr "" - -#: cinder/volume/drivers/nexenta/iscsi.py:313 -#, python-format -msgid "" -"Cannot delete temporary destination snapshot %(dst)s on NexentaStor " -"Appliance: %(exc)s" -msgstr "" - -#: cinder/volume/drivers/nexenta/iscsi.py:356 -#, python-format -msgid "Snapshot %s does not exist, it seems it was already deleted." -msgstr "" - -#: cinder/volume/drivers/nexenta/iscsi.py:477 -#: cinder/volume/drivers/windows/windows_utils.py:273 -#, 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:487 -#, python-format -msgid "Ignored target group creation error \"%s\" while ensuring export" -msgstr "" - -#: cinder/volume/drivers/nexenta/iscsi.py:499 -#, python-format -msgid "Ignored target group member addition error \"%s\" while ensuring export" -msgstr "" - -#: cinder/volume/drivers/nexenta/iscsi.py:509 -#, python-format -msgid "Ignored LU creation error \"%s\" while ensuring export" -msgstr "" - -#: cinder/volume/drivers/nexenta/iscsi.py:519 -#, python-format -msgid "Ignored LUN mapping entry addition error \"%s\" while ensuring export" -msgstr "" - -#: cinder/volume/drivers/nexenta/iscsi.py:552 -#, 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:560 -#, 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:89 -msgid "No headers in server response" -msgstr "No headers in server response" - -#: cinder/volume/drivers/nexenta/jsonrpc.py:90 -msgid "Bad response from server" -msgstr "Bad response from server" - -#: cinder/volume/drivers/nexenta/jsonrpc.py:91 -#, python-format -msgid "Auto switching to HTTPS connection to %s" -msgstr "Auto switching to HTTPS connection to %s" - -#: cinder/volume/drivers/nexenta/nfs.py:87 -#, python-format -msgid "Volume %s does not exist in Nexenta Store appliance" -msgstr "" - -#: cinder/volume/drivers/nexenta/nfs.py:91 -#, python-format -msgid "Folder %s does not exist in Nexenta Store appliance" -msgstr "" - -#: cinder/volume/drivers/nexenta/nfs.py:148 -#, python-format -msgid "Cannot destroy created folder: %(vol)s/%(folder)s" -msgstr "" - -#: cinder/volume/drivers/nexenta/nfs.py:178 -#, python-format -msgid "Cannot destroy cloned folder: %(vol)s/%(folder)s" -msgstr "" - -#: cinder/volume/drivers/nexenta/nfs.py:229 -#, python-format -msgid "Folder %s does not exist, it was already deleted." -msgstr "" - -#: cinder/volume/drivers/nexenta/nfs.py:239 -#: cinder/volume/drivers/nexenta/nfs.py:270 -#, python-format -msgid "Snapshot %s does not exist, it was already deleted." -msgstr "" - -#: cinder/volume/drivers/nexenta/nfs.py:300 -#, python-format -msgid "Creating regular file: %s.This may take some time." -msgstr "" - -#: cinder/volume/drivers/nexenta/nfs.py:311 -#, python-format -msgid "Regular file: %s created." -msgstr "" - -#: cinder/volume/drivers/nexenta/utils.py:48 -#, python-format -msgid "Invalid value: \"%s\"" -msgstr "" - -#: cinder/volume/drivers/prophetstor/dpl_fc.py:59 -#, python-format -msgid "Failed to get fiber channel info from storage due to %(stat)s" -msgstr "" - -#: cinder/volume/drivers/prophetstor/dpl_fc.py:83 -#, python-format -msgid "Failed to get fiber channel target from storage server due to %(stat)s" -msgstr "" - -#: cinder/volume/drivers/prophetstor/dpl_fc.py:102 -#, python-format -msgid "Failed to get target wwpns from storage due to %(stat)s" -msgstr "" - -#: cinder/volume/drivers/prophetstor/dpl_fc.py:121 -msgid "Failed to get sns table" -msgstr "" - -#: cinder/volume/drivers/prophetstor/dpl_fc.py:141 -#, python-format -msgid "Export fc: %(volume)s, %(wwpns)s, %(iqn)s, %(volumename)s" -msgstr "" - -#: cinder/volume/drivers/prophetstor/dpl_fc.py:150 -#, python-format -msgid "" -"Volume %(volumeid) failed to send assign command, ret: %(status)s output:" -" %(output)s" -msgstr "" - -#: cinder/volume/drivers/prophetstor/dpl_fc.py:165 -#: cinder/volume/drivers/prophetstor/dpl_iscsi.py:57 -#, python-format -msgid "Flexvisor failed to assign volume %(id)s: %(status)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dpl_fc.py:172 -#: cinder/volume/drivers/prophetstor/dpl_iscsi.py:64 -#, python-format -msgid "" -"Flexvisor failed to assign volume %(id)s due to unable to query status by" -" event id." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dpl_fc.py:178 -#, python-format -msgid "Flexvisor assign volume failed:%(id)s:%(status)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dpl_fc.py:198 -#: cinder/volume/drivers/prophetstor/dpl_iscsi.py:127 -#, python-format -msgid "Flexvisor failed to unassign volume %(id)s: %(status)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dpl_fc.py:204 -#: cinder/volume/drivers/prophetstor/dpl_iscsi.py:133 -#, python-format -msgid "Flexvisor failed to unassign volume (get event) %(id)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dpl_fc.py:209 -#: cinder/volume/drivers/prophetstor/dpl_iscsi.py:138 -#, python-format -msgid "Flexvisor unassign volume failed:%(id)s:%(status)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dpl_fc.py:214 -#, python-format -msgid "Flexvisor succeed to unassign volume %(id)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dpl_fc.py:257 -msgid "Backend storage did not configure fiber channel target." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dpl_fc.py:271 -#: cinder/volume/drivers/prophetstor/dpl_fc.py:376 -#: cinder/volume/drivers/prophetstor/dpl_fc.py:384 -#, python-format -msgid "Invalid wwpns format %(wwpns)s" -msgstr "" - -#: cinder/volume/drivers/prophetstor/dpl_fc.py:284 -#, python-format -msgid "Prefer use target wwpn %(wwpn)s" -msgstr "" - -#: cinder/volume/drivers/prophetstor/dpl_fc.py:297 -#, python-format -msgid "Failed to export fiber channel target due to %s" -msgstr "" - -#: cinder/volume/drivers/prophetstor/dpl_fc.py:323 -#, python-format -msgid "Invalid connection initialization response of volume %(name)s: %(output)s" -msgstr "" - -#: cinder/volume/drivers/prophetstor/dpl_fc.py:337 -#, python-format -msgid "%(volume)s assign type fibre_channel, properties %(properties)s" -msgstr "" - -#: cinder/volume/drivers/prophetstor/dpl_fc.py:342 -#, python-format -msgid "Invalid connection initialization response of volume %(name)s" -msgstr "" - -#: cinder/volume/drivers/prophetstor/dpl_fc.py:346 -#, python-format -msgid "" -"Connect initialization info: {driver_volume_type: fibre_channel, data: " -"%(properties)s" -msgstr "" - -#: cinder/volume/drivers/prophetstor/dpl_fc.py:368 -#, python-format -msgid "terminate_connection volume: %(volume)s, connector: %(con)s" -msgstr "" - -#: cinder/volume/drivers/prophetstor/dpl_fc.py:404 -#, python-format -msgid "Faield to unassign %(volume)s" -msgstr "" - -#: cinder/volume/drivers/prophetstor/dpl_iscsi.py:70 -#, python-format -msgid "Flexvisor assign volume failed.:%(id)s:%(status)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dpl_iscsi.py:155 -#, python-format -msgid "Cannot get volume status %(exc)%s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:89 -#, python-format -msgid "JSON encode params error: %s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:101 -#, python-format -msgid "Connect to Flexvisor error: %s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:105 -#, python-format -msgid "Connect to Flexvisor failed: %s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:129 -#, python-format -msgid "Failed to send request: %s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:138 -msgid "The Flexvisor service is unavailable." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:152 -#, python-format -msgid "Failed to get response: %s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:161 -#, python-format -msgid "" -"%(method)s %(url)s unexpected response status: %(response)s (expects: " -"%(expects)s)." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:180 -#: cinder/volume/drivers/prophetstor/dplcommon.py:194 -#, python-format -msgid "Call to json.loads() raised an exception: %s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:184 -#: cinder/volume/drivers/prophetstor/dplcommon.py:198 -#, python-format -msgid "Read response raised an exception: %s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:664 -#, python-format -msgid "Flexvisor failed to get event %(volume)s(%(status)s)." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:703 -#, python-format -msgid "Flexvisor failed to create volume %(volume)s: %(status)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:709 -#, python-format -msgid "Flexvisor failed to create volume (get event) %s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:715 -#, python-format -msgid "Flexvisor create volume failed.:%(volumeid)s:%(status)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:721 -#, python-format -msgid "Flexvisor succeed to create volume %(id)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:742 -#, python-format -msgid "Flexvisor failed to create volume from snapshot %(id)s:%(status)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:749 -#, python-format -msgid "" -"Flexvisor failed to create volume from snapshot (failed to get event) " -"%(id)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:755 -#: cinder/volume/drivers/prophetstor/dplcommon.py:794 -#, python-format -msgid "Flexvisor failed to create volume from snapshot %(id)s: %(status)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:762 -#: cinder/volume/drivers/prophetstor/dplcommon.py:801 -#, python-format -msgid "Flexvisor succeed to create volume %(id)s from snapshot." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:782 -#, python-format -msgid "Flexvisor failed to spawn volume from snapshot %(id)s:%(status)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:788 -#, python-format -msgid "" -"Flexvisor failed to spawn volume from snapshot (failed to get event) " -"%(id)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:823 -#: cinder/volume/drivers/prophetstor/dplcommon.py:835 -#, python-format -msgid "Flexvisor failed to clone volume %(id)s: %(status)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:829 -#, python-format -msgid "Flexvisor failed to clone volume (failed to get event) %(id)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:841 -#, python-format -msgid "Flexvisor succeed to clone volume %(id)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:851 -#, python-format -msgid "Flexvisor failed deleting volume %(id)s: %(status)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:857 -#, python-format -msgid "Flexvisor volume %(id)s not existed." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:861 -#, python-format -msgid "Flexvisor failed to delete volume %(id)s: %(status)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:880 -#, python-format -msgid "Flexvisor failed to extend volume %(id)s:%(status)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:887 -#, python-format -msgid "Flexvisor failed to extend volume (failed to get event) %(id)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:893 -#, python-format -msgid "Flexvisor failed to extend volume %(id)s: %(status)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:900 -#, python-format -msgid "Flexvisor succeed to extend volume %(id)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:919 -#: cinder/volume/drivers/prophetstor/dplcommon.py:931 -#, python-format -msgid "Flexvisor failed to create snapshot for volume %(id)s: %(status)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:925 -#, python-format -msgid "" -"Flexvisor failed to create snapshot for volume (failed to get event) " -"%(id)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:949 -#: cinder/volume/drivers/prophetstor/dplcommon.py:964 -#, python-format -msgid "Flexvisor failed to delete snapshot %(id)s: %(status)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:955 -#, python-format -msgid "Flexvisor failed to delete snapshot (failed to get event) %(id)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:960 -#, python-format -msgid "Flexvisor snapshot %(id)s not existed." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:969 -#, python-format -msgid "Flexvisor succeed to delete snapshot %(id)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:1021 -#, python-format -msgid "Failed to get server info due to %(state)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:1029 -msgid "Activate Flexvisor cinder volume driver." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:1044 -#: cinder/volume/drivers/prophetstor/dplcommon.py:1057 -#, python-format -msgid "Flexvisor failed to get pool info %(id)s: %(status)s." -msgstr "" - -#: cinder/volume/drivers/prophetstor/dplcommon.py:1052 -#, python-format -msgid "Flexvisor failed to get pool info (failed to get event)%s." -msgstr "" - -#: cinder/volume/drivers/san/san.py:171 -msgid "Specify san_password or san_private_key" -msgstr "Specify san_password or san_private_key" - -#: cinder/volume/drivers/san/san.py:175 -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:211 -#, 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:247 -#, python-format -msgid "Failed to Login to 3PAR (%(url)s) because %(err)s" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:258 -msgid "You must install hp3parclient before using 3PAR drivers." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:264 -#, python-format -msgid "HP3PARCommon %(common_ver)s, hp3parclient %(rest_ver)s" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:282 -#: cinder/volume/drivers/san/hp/hp_3par_common.py:643 -#, 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:290 -#, 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:323 -#: cinder/volume/drivers/san/hp/hp_3par_common.py:419 -#, python-format -msgid "Virtual volume '%s' doesn't exist on array." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:356 -#, python-format -msgid "Volume type ID '%s' is invalid." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:365 -#, python-format -msgid "Virtual volume '%(ref)s' renamed to '%(new)s'." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:369 -#, python-format -msgid "Virtual volume %(disp)s '%(new)s' is being retyped." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:374 -#, python-format -msgid "Virtual volume %(disp)s successfully retyped to %(new_type)s." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:380 -#, python-format -msgid "Failed to manage virtual volume %(disp)s due to error during retype." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:389 -#, python-format -msgid "Virtual volume %(disp)s '%(new)s' is now being managed." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:410 -msgid "Reference must be for an unmanaged virtual volume." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:434 -#, python-format -msgid "" -"Virtual volume %(disp)s '%(vol)s' is no longer managed. Volume renamed to" -" '%(new)s'." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:463 -#, python-format -msgid "Error extending volume: %(vol)s. Exception: %(ex)s" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:669 -#, python-format -msgid "3PAR vlun %(name)s not found on host %(host)s" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:692 -#, python-format -msgid "3PAR vlun for volume %(name)s not found on host %(host)s" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:731 -#, python-format -msgid "" -"3PAR vlun for volume '%(name)s' was deleted, but the host '%(host)s' was " -"not deleted because: %(reason)s" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:831 -#, python-format -msgid "Error creating QOS rule %s" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:840 -#, python-format -msgid "VV Set %s does not exist." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:882 -#, 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:961 -#, 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:1047 -#, 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:1158 -msgid "" -"The volume is currently busy on the 3PAR and cannot be deleted at this " -"time. You can try again later." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:1170 -#, 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:1234 -#, python-format -msgid "Error extending volume %(id)s. Ex: %(ex)s" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:1318 -#, python-format -msgid "Failure in update_volume_key_value_pair:%s" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:1332 -#, python-format -msgid "Failure in clear_volume_key_value_pair:%s" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:1344 -#, python-format -msgid "Error attaching volume %s" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:1352 -#, python-format -msgid "Error detaching volume %s" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:1452 -#, 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:1473 -#, python-format -msgid "Completed: convert_to_base_volume: id=%s." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:1476 -#, python-format -msgid "Volume (%s) already exists on array." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:1505 -#, python-format -msgid "Delete Snapshot id not found. Removing from cinder: %(id)s Ex: %(msg)s" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:1585 -#, python-format -msgid "Modifying %(volume_name)s userCPG from %(old_cpg)s to %(new_cpg)s" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:1597 -#: cinder/volume/drivers/san/hp/hp_3par_common.py:1633 -#, python-format -msgid "" -"Tune volume task stopped before it was done: volume_name=%(volume_name)s," -" task-status=%(status)s." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:1605 -#, python-format -msgid "Converting %(volume_name)s to full provisioning with userCPG=%(new_cpg)s" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:1610 -#, python-format -msgid "Converting %(volume_name)s to thin provisioning with userCPG=%(new_cpg)s" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:1626 -#, python-format -msgid "tunevv failed because the volume '%s' has snapshots." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:1656 -#, python-format -msgid "Cannot retype from HP3PARDriver to %s." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:1662 -msgid "Cannot retype from one 3PAR array to another." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:1668 -#, python-format -msgid "Invalid new snapCPG name for retype. new_snap_cpg='%s'." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:1675 -msgid "Cannot retype to a CPG in a different domain." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:1679 -msgid "Cannot retype to a snap CPG in a different domain." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:1881 -#, python-format -msgid "" -"Modifying %(volume_name)s snap_cpg from %(old_snap_cpg)s to " -"%(new_snap_cpg)s." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:1892 -#, python-format -msgid "Modifying %s comments." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:1901 -#, python-format -msgid "" -"Retype revert %(volume_name)s snap_cpg from %(new_snap_cpg)s back to " -"%(old_snap_cpg)s." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:1911 -#, python-format -msgid "Exception during snapCPG revert: %s" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:1980 -#, python-format -msgid "Unexpected error when retype() tried to deleteVolumeSet(%s)" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:2002 -#: cinder/volume/drivers/san/hp/hp_3par_common.py:2006 -#, python-format -msgid "Unexpected error when retype() revert tried to deleteVolumeSet(%s)" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:2015 -#, python-format -msgid "" -"%(exception)s: Exception during revert of retype for volume " -"%(volume_name)s. Original volume set/QOS settings may not have been fully" -" restored." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_common.py:2027 -#, python-format -msgid "" -"%(exception)s: Exception during revert of retype for volume " -"%(volume_name)s. Failed to remove from new volume set %(new_vvs)s." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_fc.py:258 -msgid "Need to remove FC Zone, building initiator target map" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:140 -#, python-format -msgid "Invalid IP address format '%s'" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:174 -#, 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:180 -msgid "At least one valid iSCSI IP address must be set." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:281 -msgid "Least busy iSCSI port not found, using first iSCSI port in list." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:418 -msgid "" -"Host exists without CHAP credentials set and has iSCSI attachments but " -"CHAP is enabled. Updating host with new CHAP credentials." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:445 -msgid "Host has no CHAP key, but CHAP is enabled." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:449 -msgid "No host or VLUNs exist. Generating new CHAP key." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:477 -msgid "Non-iSCSI VLUN detected." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:481 -msgid "No VLUN contained CHAP credentials. Generating new CHAP key." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_3par_iscsi.py:515 -#, python-format -msgid "Volume %s doesn't exist on array." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:94 -#, python-format -msgid "CLIQ %(proxy_ver)s" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:115 -#, 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:123 -#, 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:153 -#, 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:320 -#: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:188 -msgid "Volume did not exist. It will not be deleted" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:332 -#: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:221 -msgid "Snapshot did not exist. It will not be deleted" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py:344 -msgid "local_path not supported" -msgstr "local_path not supported" - -#: cinder/volume/drivers/san/hp/hp_lefthand_iscsi.py:80 -#, python-format -msgid "HPLeftHand driver %(driver_ver)s, proxy %(proxy_ver)s" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:106 -msgid "HPLeftHand url not found" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:132 -msgid "LeftHand cluster not found" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:140 -#, python-format -msgid "REST %(proxy_ver)s hplefthandclient %(rest_ver)s" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:360 -#, 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:380 -#, python-format -msgid "CHAP secret exists for host %s but CHAP is disabled" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:383 -#, 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:501 -#, 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:506 -#: cinder/volume/drivers/san/hp/hp_lefthand_rest_proxy.py:512 -#, 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:523 -#, 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:534 -#, 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:542 -#, 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:67 -#, python-format -msgid "Failed to connect to MSA Array (%(host)s): %(err)s" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_msa_common.py:72 -msgid "Failed to log on MSA Array (invalid login?)" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_msa_common.py:126 -#, python-format -msgid "%s configuration option is not set" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_msa_common.py:167 -msgid "Volume must be detached to perform a clone operation." -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_msa_common.py:244 -#, python-format -msgid "Unable to get stats for VDisk (%s)" -msgstr "" - -#: cinder/volume/drivers/san/hp/hp_msa_common.py:253 -msgid "Connector doesn't provide wwpns" -msgstr "" - -#: cinder/volume/drivers/vmware/api.py:72 -#, python-format -msgid "Failure while invoking function: %(func)s. Error: %(excep)s." -msgstr "" - -#: cinder/volume/drivers/vmware/api.py:170 -#, python-format -msgid "Error while terminating session: %s." -msgstr "" - -#: cinder/volume/drivers/vmware/api.py:183 -msgid "Successfully established connection to the server." -msgstr "" - -#: cinder/volume/drivers/vmware/api.py:190 -#, python-format -msgid "Error while logging out from vim session: %s." -msgstr "" - -#: cinder/volume/drivers/vmware/api.py:196 -#, python-format -msgid "Error while logging out from pbm session: %s." -msgstr "" - -#: cinder/volume/drivers/vmware/api.py:245 -#, 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:271 -#, python-format -msgid "Error occurred while checking whether the current session: %s is active." -msgstr "" - -#: cinder/volume/drivers/vmware/api.py:313 -#: cinder/volume/drivers/vmware/api.py:317 -#, python-format -msgid "Task: %(task)s failed with error: %(err)s." -msgstr "" - -#: cinder/volume/drivers/vmware/api.py:345 -#, python-format -msgid "Error: unknown lease state %s." -msgstr "" - -#: cinder/volume/drivers/vmware/error_util.py:64 -msgid "VMware VMDK driver exception." -msgstr "" - -#: cinder/volume/drivers/vmware/error_util.py:70 -msgid "VMware VMDK driver configuration error." -msgstr "" - -#: cinder/volume/drivers/vmware/error_util.py:75 -#, python-format -msgid "Invalid disk adapter type: %(invalid_type)s." -msgstr "" - -#: cinder/volume/drivers/vmware/error_util.py:80 -#, python-format -msgid "Invalid disk type: %(disk_type)s." -msgstr "" - -#: cinder/volume/drivers/vmware/error_util.py:85 -#: cinder/volume/drivers/vmware/vmware_images.py:82 -msgid "Error occurred during image transfer." -msgstr "" - -#: cinder/volume/drivers/vmware/error_util.py:90 -msgid "There is no virtual disk device." -msgstr "" - -#: cinder/volume/drivers/vmware/io_util.py:130 -#, python-format -msgid "Glance image: %s is in killed state." -msgstr "" - -#: cinder/volume/drivers/vmware/io_util.py:139 -#, python-format -msgid "Glance image %(id)s is in unknown state - %(state)s" -msgstr "" - -#: cinder/volume/drivers/vmware/io_util.py:147 -#, python-format -msgid "Error occurred while writing to image: %s" -msgstr "" - -#: cinder/volume/drivers/vmware/read_write_util.py:206 -#: cinder/volume/drivers/vmware/read_write_util.py:299 -msgid "Could not retrieve URL from lease." -msgstr "" - -#: cinder/volume/drivers/vmware/read_write_util.py:209 -#, python-format -msgid "Opening vmdk url: %s for write." -msgstr "" - -#: cinder/volume/drivers/vmware/read_write_util.py:302 -#, python-format -msgid "Opening vmdk url: %s for read." -msgstr "" - -#: cinder/volume/drivers/vmware/vim.py:145 -#, python-format -msgid "Error(s): %s occurred in the call to RetrievePropertiesEx." -msgstr "" - -#: cinder/volume/drivers/vmware/vim.py:184 -#, python-format -msgid "No such SOAP method %(attr)s. Detailed error: %(excep)s." -msgstr "" - -#: cinder/volume/drivers/vmware/vim.py:193 -#, python-format -msgid "httplib error in %(attr)s: %(excep)s." -msgstr "" - -#: cinder/volume/drivers/vmware/vim.py:201 -#, python-format -msgid "urllib2 error in %(attr)s: %(excep)s." -msgstr "" - -#: cinder/volume/drivers/vmware/vim.py:210 -#, python-format -msgid "Socket error in %(attr)s: %(excep)s." -msgstr "" - -#: cinder/volume/drivers/vmware/vim.py:219 -#, python-format -msgid "Type error in %(attr)s: %(excep)s." -msgstr "" - -#: cinder/volume/drivers/vmware/vim.py:226 -#, python-format -msgid "Error in %(attr)s. Detailed error: %(excep)s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:181 -#, python-format -msgid "Invalid disk type: %s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:195 -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:247 -#, python-format -msgid "%s not set." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:255 -#: cinder/volume/drivers/vmware/vmdk.py:1711 -#, python-format -msgid "Successfully setup driver: %(driver)s for server: %(ip)s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:297 -#, python-format -msgid "Not able to find a suitable datastore for the volume: %s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:320 -msgid "Backing not available, no operation to be performed." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:388 -#, python-format -msgid "" -"Unable to pick datastore to accommodate %(size)s bytes from the " -"datastores: %(dss)s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:424 -#, python-format -msgid "No such storage profile '%s; is defined in vCenter." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:451 -#, python-format -msgid "Aborting since none of the datastores match the given storage profile %s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:456 -#, python-format -msgid "" -"Ignoring storage profile %s requirement for this volume since policy " -"based placement is disabled." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:563 -#, 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:573 -#, python-format -msgid "Unable to find host to accommodate a disk of size: %s in the inventory." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:604 -#, 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:614 -#, python-format -msgid "Unable to create volume: %s in the inventory." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:640 -#, python-format -msgid "There is no backing for the volume: %s. Need to create one." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:653 -#, python-format -msgid "Trying to boot from an empty volume: %s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:662 -#, python-format -msgid "" -"Returning connection_info: %(info)s for volume: %(volume)s with " -"connector: %(connector)s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:710 -#, python-format -msgid "Snapshot of volume not supported in state: %s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:715 -#, python-format -msgid "There is no backing, so will not create snapshot: %s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:720 -#, python-format -msgid "Successfully created snapshot: %s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:741 -#, python-format -msgid "Delete snapshot of volume not supported in state: %s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:746 -#, python-format -msgid "There is no backing, and so there is no snapshot: %s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:750 -#, python-format -msgid "Successfully deleted snapshot: %s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:791 -#, python-format -msgid "Successfully cloned new backing: %(back)s from source VMDK file: %(vmdk)s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:808 -#, 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:839 -#, 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:848 -#: cinder/volume/drivers/vmware/vmdk.py:1827 -#, 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:883 -#, python-format -msgid "Cannot create image of disk format: %s. Only vmdk disk format is accepted." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:922 -#, python-format -msgid "Error occurred while deleting temporary disk: %s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:936 -#, python-format -msgid "Error occurred while copying %(src)s to %(dst)s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:998 -#, python-format -msgid "Error occurred while copying image: %(image_id)s to %(path)s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:1008 -#, python-format -msgid "Error occurred while deleting descriptor: %s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:1037 -#, python-format -msgid "Error occurred while deleting backing: %s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:1122 -#, python-format -msgid "Error occured while creating volume: %(id)s from image: %(image_id)s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:1145 -#, python-format -msgid "Exception in _select_ds_for_volume: %s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:1189 -#, python-format -msgid "Exception in copy_image_to_volume: %s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:1193 -#, python-format -msgid "Deleting the backing: %s" -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:1197 -#, python-format -msgid "Done copying image: %(id)s to volume: %(vol)s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:1208 -#, 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:1230 -#, python-format -msgid "Unable to extend the size of the vmdk virtual disk at the path %s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:1280 -#, python-format -msgid "Exception in copying the image to the volume: %s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:1317 -msgid "Upload to glance of attached volume is not supported." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:1328 -#, python-format -msgid "Backing not found, creating for volume: %s" -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:1347 -#, python-format -msgid "Done copying volume %(vol)s to a new image %(img)s" -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:1364 -#: cinder/volume/drivers/vmware/vmdk.py:1393 -#, python-format -msgid "Done extending volume %(vol)s to size %(size)s GB." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:1368 -#, 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:1376 -#, python-format -msgid "Not able to find a different datastore to place the extended volume %s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:1379 -#, python-format -msgid "Selected datastore %(ds)s to place extended volume of size %(size)s GB." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:1391 -#, python-format -msgid "Not able to relocate volume %s for extending." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:1492 -msgid "Error occurred while creating temporary backing." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:1557 -#, python-format -msgid "" -"Cannot undo volume rename; old name was %(old_name)s and new name is " -"%(new_name)s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:1580 -msgid "Volume cannot be restored since it contains snapshots." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:1661 -#, python-format -msgid "PBM WSDL file %s is missing!" -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:1664 -#, python-format -msgid "Using PBM WSDL location: %s" -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:1675 -#, python-format -msgid "Using overridden vmware_host_version from config: %s" -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:1679 -#, python-format -msgid "Fetched VC server version: %s" -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:1686 -#, python-format -msgid "Version string '%s' is not parseable" -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:1700 -#, python-format -msgid "Not able to configure PBM for VC server: %s" -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:1759 -#, python-format -msgid "Relocating volume: %(backing)s to %(ds)s and %(rp)s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:1805 -#: cinder/volume/drivers/vmware/volumeops.py:1044 -#, python-format -msgid "Successfully created clone: %s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmdk.py:1819 -#, 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:1856 -#, 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:1864 -#, python-format -msgid "Linked clone of source volume not supported in state: %s." -msgstr "" - -#: cinder/volume/drivers/vmware/vmware_images.py:110 -#: cinder/volume/drivers/vmware/vmware_images.py:129 -#, python-format -msgid "Downloaded image: %s from glance image server." -msgstr "" - -#: cinder/volume/drivers/vmware/vmware_images.py:161 -#, python-format -msgid "Uploaded image: %s to the Glance image server." -msgstr "" - -#: cinder/volume/drivers/vmware/volumeops.py:304 -#, python-format -msgid "Deleted the VM backing: %s." -msgstr "" - -#: cinder/volume/drivers/vmware/volumeops.py:460 -#, python-format -msgid "There are no valid datastores attached to %s." -msgstr "" - -#: cinder/volume/drivers/vmware/volumeops.py:567 -#, python-format -msgid "Successfully extended the volume %(name)s to %(size)s GB." -msgstr "" - -#: cinder/volume/drivers/vmware/volumeops.py:712 -#, python-format -msgid "Successfully created volume backing: %s." -msgstr "" - -#: cinder/volume/drivers/vmware/volumeops.py:857 -#, 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:875 -#, python-format -msgid "Successfully moved volume backing: %(backing)s into the folder: %(fol)s." -msgstr "" - -#: cinder/volume/drivers/vmware/volumeops.py:898 -#, python-format -msgid "Successfully created snapshot: %(snap)s for volume backing: %(backing)s." -msgstr "" - -#: cinder/volume/drivers/vmware/volumeops.py:960 -#, 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:971 -#, python-format -msgid "Successfully deleted snapshot: %(name)s of backing: %(backing)s." -msgstr "" - -#: cinder/volume/drivers/vmware/volumeops.py:1083 -#, python-format -msgid "Renaming backing VM: %(backing)s to %(new_name)s." -msgstr "" - -#: cinder/volume/drivers/vmware/volumeops.py:1092 -#, python-format -msgid "Backing VM: %(backing)s renamed to %(new_name)s." -msgstr "" - -#: cinder/volume/drivers/vmware/volumeops.py:1111 -#, python-format -msgid "Successfully deleted file: %s." -msgstr "" - -#: cinder/volume/drivers/vmware/volumeops.py:1145 -#, python-format -msgid "Virtual disk device of backing: %s not found." -msgstr "" - -#: cinder/volume/drivers/vmware/volumeops.py:1160 -#, python-format -msgid "Invalid disk backing: %s." -msgstr "" - -#: cinder/volume/drivers/vmware/volumeops.py:1259 -#, python-format -msgid "Successfully copied disk at: %(src)s to: %(dest)s." -msgstr "" - -#: cinder/volume/drivers/vmware/volumeops.py:1277 -#, python-format -msgid "Deleted vmdk file: %s." -msgstr "" - -#: cinder/volume/drivers/windows/remotefs.py:52 -msgid "Link path already exists and its not a symlink" -msgstr "" - -#: cinder/volume/drivers/windows/remotefs.py:80 -#, python-format -msgid "Could not create symbolic link. Link: %(link)s Target %(target)s" -msgstr "" - -#: cinder/volume/drivers/windows/remotefs.py:115 -#, python-format -msgid "Mounting share: %s" -msgstr "" - -#: cinder/volume/drivers/windows/remotefs.py:118 -#, python-format -msgid "" -"Unable to mount SMBFS share: %(smbfs_share)s WMI exception: " -"%(wmi_exc)sOptions: %(options)s" -msgstr "" - -#: cinder/volume/drivers/windows/remotefs.py:137 -#, python-format -msgid "Could not get share %s capacity info." -msgstr "" - -#: cinder/volume/drivers/windows/smbfs.py:66 -#, python-format -msgid "" -"This system platform (%s) is not supported. This driver supports only " -"Win32 platforms." -msgstr "" - -#: cinder/volume/drivers/windows/smbfs.py:76 -#, python-format -msgid "File already exists at: %s" -msgstr "" - -#: cinder/volume/drivers/windows/smbfs.py:81 -#, python-format -msgid "Unsupported volume format: %s " -msgstr "" - -#: cinder/volume/drivers/windows/vhdutils.py:220 -#, python-format -msgid "Opening virtual disk failed with error: %s" -msgstr "" - -#: cinder/volume/drivers/windows/vhdutils.py:231 -#, python-format -msgid "Unsupported virtual disk extension: %s" -msgstr "" - -#: cinder/volume/drivers/windows/vhdutils.py:249 -#, python-format -msgid "Virtual disk resize failed with error: %s" -msgstr "" - -#: cinder/volume/drivers/windows/vhdutils.py:271 -#, python-format -msgid "Virtual disk merge failed with error: %s" -msgstr "" - -#: cinder/volume/drivers/windows/vhdutils.py:318 -#, python-format -msgid "Virtual disk creation failed with error: %s" -msgstr "" - -#: cinder/volume/drivers/windows/vhdutils.py:423 -#, python-format -msgid "Virtual disk reconnect failed with error: %s" -msgstr "" - -#: cinder/volume/drivers/windows/windows_utils.py:56 -#, 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:62 -msgid "check_for_setup_error: there is no ISCSI traffic listening." -msgstr "" - -#: cinder/volume/drivers/windows/windows_utils.py:72 -#, 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:82 -#, 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:116 -#, 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:134 -#, 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:154 -#, 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:167 -#, python-format -msgid "Error changing disk status: %(vol_name)s . WMI exception: %(wmi_exc)s" -msgstr "" - -#: cinder/volume/drivers/windows/windows_utils.py:190 -#, 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:210 -#, 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:236 -#, 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:251 -#, 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:266 -#, 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:288 -#, 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:303 -#, 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:321 -#, 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:338 -#, python-format -msgid "" -"extend: error when extending the volume: %(vol_name)s .WMI exception: " -"%(wmi_exc)s" -msgstr "" - -#: cinder/volume/drivers/windows/windows_utils.py:384 -#, python-format -msgid "The file copy from %(src)s to %(dest)s failed." -msgstr "" - -#: cinder/volume/drivers/zfssa/restclient.py:179 -#, python-format -msgid "ZFSSA version: %s" -msgstr "" - -#: cinder/volume/drivers/zfssa/restclient.py:282 -#, python-format -msgid "REST Not Available: %s" -msgstr "" - -#: cinder/volume/drivers/zfssa/restclient.py:288 -#, python-format -msgid "Server Busy retry request: %s" -msgstr "" - -#: cinder/volume/drivers/zfssa/restclient.py:294 -#, python-format -msgid "Authorizing request: %(zfssaurl)sretry: %(retry)d ." -msgstr "" - -#: cinder/volume/drivers/zfssa/restclient.py:311 -#, python-format -msgid "URLError: %s" -msgstr "" - -#: cinder/volume/drivers/zfssa/zfssaiscsi.py:98 -#, python-format -msgid "Connecting to host: %s." -msgstr "" - -#: cinder/volume/drivers/zfssa/zfssaiscsi.py:113 -#, python-format -msgid "" -"zfssa_initiator: %(ini)s wont be used on zfssa_initiator_group= " -"%(inigrp)s." -msgstr "" - -#: cinder/volume/drivers/zfssa/zfssaiscsi.py:249 -#, python-format -msgid "Snapshot %s: has clones" -msgstr "" - -#: cinder/volume/drivers/zfssa/zfssaiscsi.py:264 -#, python-format -msgid "" -"Error verifying clone size on Volume clone: %(clone)s Size: %(size)d " -"onSnapshot: %(snapshot)s" -msgstr "" - -#: cinder/volume/drivers/zfssa/zfssaiscsi.py:362 -#, python-format -msgid "Clone Volume:%(volume)s failed from source volume:%(src_vref)s" -msgstr "" - -#: cinder/volume/drivers/zfssa/zfssarest.py:46 -#, python-format -msgid "" -"Error getting version: svc: %(svc)s.Return code: %(ret.status)d Message: " -"%(ret.data)s." -msgstr "" - -#: cinder/volume/drivers/zfssa/zfssarest.py:77 -#, python-format -msgid "" -"Error Getting Pool Stats: Pool: %(pool)s Return code: %(ret.status)d " -"Message: %(ret.data)s." -msgstr "" - -#: cinder/volume/drivers/zfssa/zfssarest.py:90 -#, python-format -msgid "Error Pool ownership: Pool %(pool)s is not owned by %(host)s." -msgstr "" - -#: cinder/volume/drivers/zfssa/zfssarest.py:122 -#, python-format -msgid "" -"Error Creating Project: %(project)s on Pool: %(pool)s Return code: " -"%(ret.status)d Message: %(ret.data)s ." -msgstr "" - -#: cinder/volume/drivers/zfssa/zfssarest.py:152 -#, python-format -msgid "" -"Error Creating Initator: %(initiator)s on Alias: %(alias)s Return code: " -"%(ret.status)d Message: %(ret.data)s ." -msgstr "" - -#: cinder/volume/drivers/zfssa/zfssarest.py:176 -#: cinder/volume/drivers/zfssa/zfssarest.py:194 -#, python-format -msgid "" -"Error Adding Initator: %(initiator)s on groupInitiatorGroup: " -"%(initiatorgroup)s Return code: %(ret.status)d Message: %(ret.data)s ." -msgstr "" - -#: cinder/volume/drivers/zfssa/zfssarest.py:232 -#, python-format -msgid "" -"Error Creating Target: %(alias)sReturn code: %(ret.status)d Message: " -"%(ret.data)s ." -msgstr "" - -#: cinder/volume/drivers/zfssa/zfssarest.py:250 -#, python-format -msgid "" -"Error Getting Target: %(alias)sReturn code: %(ret.status)d Message: " -"%(ret.data)s ." -msgstr "" - -#: cinder/volume/drivers/zfssa/zfssarest.py:276 -#, python-format -msgid "" -"Error Creating TargetGroup: %(targetgroup)s withIQN: %(iqn)sReturn code: " -"%(ret.status)d Message: %(ret.data)s ." -msgstr "" - -#: cinder/volume/drivers/zfssa/zfssarest.py:296 -#, python-format -msgid "" -"Error Adding to TargetGroup: %(targetgroup)s withIQN: %(iqn)sReturn code:" -" %(ret.status)d Message: %(ret.data)s." -msgstr "" - -#: cinder/volume/drivers/zfssa/zfssarest.py:313 -#, python-format -msgid "" -"Error Verifying Pool: %(pool)s Return code: %(ret.status)d Message: " -"%(ret.data)s." -msgstr "" - -#: cinder/volume/drivers/zfssa/zfssarest.py:328 -#, python-format -msgid "" -"Error Verifying Project: %(project)s on Pool: %(pool)s Return code: " -"%(ret.status)d Message: %(ret.data)s." -msgstr "" - -#: cinder/volume/drivers/zfssa/zfssarest.py:345 -#, python-format -msgid "" -"Error Verifying Initiator: %(iqn)s Return code: %(ret.status)d Message: " -"%(ret.data)s." -msgstr "" - -#: cinder/volume/drivers/zfssa/zfssarest.py:360 -#, python-format -msgid "" -"Error Verifying Target: %(alias)s Return code: %(ret.status)d Message: " -"%(ret.data)s." -msgstr "" - -#: cinder/volume/drivers/zfssa/zfssarest.py:394 -#, python-format -msgid "" -"Error Creating Volume: %(lun)s Size: %(size)s Return code: %(ret.status)d" -" Message: %(ret.data)s." -msgstr "" - -#: cinder/volume/drivers/zfssa/zfssarest.py:412 -#, python-format -msgid "" -"Error Getting Volume: %(lun)s on Pool: %(pool)s Project: %(project)s " -"Return code: %(ret.status)d Message: %(ret.data)s." -msgstr "" - -#: cinder/volume/drivers/zfssa/zfssarest.py:452 -#, python-format -msgid "" -"Error Setting Volume: %(lun)s to InitiatorGroup: %(initiatorgroup)s Pool:" -" %(pool)s Project: %(project)s Return code: %(ret.status)d Message: " -"%(ret.data)s." -msgstr "" - -#: cinder/volume/drivers/zfssa/zfssarest.py:474 -#, python-format -msgid "" -"Error Deleting Volume: %(lun)s to Pool: %(pool)s Project: %(project)s " -"Return code: %(ret.status)d Message: %(ret.data)s." -msgstr "" - -#: cinder/volume/drivers/zfssa/zfssarest.py:497 -#, python-format -msgid "" -"Error Creating Snapshot: %(snapshot)s onVolume: %(lun)s to Pool: %(pool)s" -" Project: %(project)s Return code: %(ret.status)d Message: %(ret.data)s." -msgstr "" - -#: cinder/volume/drivers/zfssa/zfssarest.py:520 -#, python-format -msgid "" -"Error Deleting Snapshot: %(snapshot)s on Volume: %(lun)s to Pool: " -"%(pool)s Project: %(project)s Return code: %(ret.status)d Message: " -"%(ret.data)s." -msgstr "" - -#: cinder/volume/drivers/zfssa/zfssarest.py:548 -#, python-format -msgid "" -"Error Cloning Snapshot: %(snapshot)s on Volume: %(lun)s of Pool: %(pool)s" -" Project: %(project)s Return code: %(ret.status)d Message: %(ret.data)s." -msgstr "" - -#: cinder/volume/drivers/zfssa/zfssarest.py:573 -#, python-format -msgid "" -"Error Setting props Props: %(props)s on Volume: %(lun)s of Pool: %(pool)s" -" Project: %(project)s Return code: %(ret.status)d Message: %(ret.data)s." -msgstr "" - -#: cinder/volume/drivers/zfssa/zfssarest.py:596 -#, python-format -msgid "" -"Error Getting Snapshot: %(snapshot)s on Volume: %(lun)s to Pool: %(pool)s" -" Project: %(project)s Return code: %(ret.status)d Message: %(ret.data)s." -msgstr "" - -#: cinder/volume/flows/common.py:60 -#, python-format -msgid "" -"Failed setting source volume %(source_volid)s back to its initial " -"%(source_status)s status" -msgstr "" - -#: cinder/volume/flows/common.py:92 -#: cinder/volume/flows/manager/create_volume.py:694 -#, python-format -msgid "Failed updating volume %(volume_id)s with %(update)s" -msgstr "" - -#: cinder/volume/flows/api/create_volume.py:83 -#, python-format -msgid "Originating consistencygroup status must be one of '%s' values" -msgstr "" - -#: cinder/volume/flows/api/create_volume.py:101 -#, python-format -msgid "Originating snapshot status must be one of %s values" -msgstr "" - -#: cinder/volume/flows/api/create_volume.py:123 -#: cinder/volume/flows/api/create_volume.py:146 -#, 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:157 -#, python-format -msgid "" -"Unable to create a volume from a replica when replication status is not " -"one of %s values" -msgstr "" - -#: cinder/volume/flows/api/create_volume.py:178 -#, 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:187 -#, 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:196 -#, python-format -msgid "Volume size %(size)s must be an integer and greater than 0" -msgstr "" - -#: cinder/volume/flows/api/create_volume.py:236 -#, python-format -msgid "Image %(image_id)s is not active." -msgstr "" - -#: cinder/volume/flows/api/create_volume.py:244 -#, 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:252 -#, 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:270 -#, python-format -msgid "Metadata property key %s greater than 255 characters" -msgstr "" - -#: cinder/volume/flows/api/create_volume.py:275 -#, python-format -msgid "Metadata property key %s value greater than 255 characters" -msgstr "" - -#: cinder/volume/flows/api/create_volume.py:325 -msgid "Volume must be in the same availability zone as the snapshot" -msgstr "" - -#: cinder/volume/flows/api/create_volume.py:334 -msgid "Volume must be in the same availability zone as the source volume" -msgstr "" - -#: cinder/volume/flows/api/create_volume.py:373 -msgid "Volume type will be changed to be the same as the source volume." -msgstr "" - -#: cinder/volume/flows/api/create_volume.py:536 -#, python-format -msgid "Failed destroying volume entry %s" -msgstr "" - -#: cinder/volume/flows/api/create_volume.py:620 -#, python-format -msgid "Failed rolling back quota for %s reservations" -msgstr "" - -#: cinder/volume/flows/api/create_volume.py:666 -#, python-format -msgid "Failed to update quota for deleting volume: %s" -msgstr "" - -#: cinder/volume/flows/api/create_volume.py:766 -#: cinder/volume/flows/manager/create_volume.py:190 -#, python-format -msgid "Volume %s: create failed" -msgstr "" - -#: cinder/volume/flows/api/create_volume.py:770 -msgid "Unexpected build error:" -msgstr "" - -#: cinder/volume/flows/manager/create_volume.py:143 -#, python-format -msgid "Volume %s: resetting 'creating' status failed." -msgstr "" - -#: cinder/volume/flows/manager/create_volume.py:162 -#, python-format -msgid "Volume %s: rescheduling failed" -msgstr "" - -#: cinder/volume/flows/manager/create_volume.py:318 -#, python-format -msgid "" -"Failed notifying about the volume action %(event)s for volume " -"%(volume_id)s" -msgstr "" - -#: cinder/volume/flows/manager/create_volume.py:346 -#, python-format -msgid "Copying metadata from %(src_type)s %(src_id)s to %(vol_id)s." -msgstr "" - -#: cinder/volume/flows/manager/create_volume.py:348 -#, 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:417 -#, 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:433 -#, python-format -msgid "Failed updating volume %(volume_id)s bootable flag to true" -msgstr "" - -#: cinder/volume/flows/manager/create_volume.py:488 -#: cinder/volume/flows/manager/create_volume.py:499 -#, 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:494 -#, python-format -msgid "Failed to copy image to volume: %(volume_id)s, error: %(error)s" -msgstr "" - -#: cinder/volume/flows/manager/create_volume.py:585 -#, python-format -msgid "Failed updating volume %(volume_id)s with %(updates)s" -msgstr "" - -#: cinder/volume/flows/manager/create_volume.py:609 -#, python-format -msgid "Unable to create volume. Volume driver %s not initialized" -msgstr "" - -#: cinder/volume/flows/manager/create_volume.py:617 -#, python-format -msgid "" -"Volume %(volume_id)s: being created as %(create_type)s with " -"specification: %(volume_spec)s" -msgstr "" - -#: cinder/volume/flows/manager/create_volume.py:651 -#: cinder/volume/flows/manager/manage_existing.py:85 -#, 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:698 -#, python-format -msgid "Volume %(volume_name)s (%(volume_id)s): created successfully" -msgstr "" - -#: cinder/volume/flows/manager/manage_existing.py:46 -#, python-format -msgid "Unable to manage existing volume. Volume driver %s not initialized." -msgstr "" - -#: cinder/volume/flows/manager/manage_existing.py:49 -#, python-format -msgid "Volume driver %s not initialized." -msgstr "" - -#: cinder/zonemanager/fc_san_lookup_service.py:83 -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:145 -#, python-format -msgid "Final filtered map for fabric: %s" -msgstr "" - -#: cinder/zonemanager/fc_zone_manager.py:151 -msgid "Add Connection: Finished iterating over all target list" -msgstr "" - -#: cinder/zonemanager/fc_zone_manager.py:154 -#, python-format -msgid "Failed adding connection for fabric=%(fabric)s: Error:%(err)s" -msgstr "" - -#: cinder/zonemanager/fc_zone_manager.py:175 -#, python-format -msgid "Delete connection Target List:%s" -msgstr "" - -#: cinder/zonemanager/fc_zone_manager.py:191 -#, python-format -msgid "Final filtered map for delete connection: %s" -msgstr "" - -#: cinder/zonemanager/fc_zone_manager.py:201 -#, python-format -msgid "Failed removing connection for fabric=%(fabric)s: Error:%(err)s" -msgstr "" - -#: cinder/zonemanager/fc_zone_manager.py:242 -#, python-format -msgid "No targets to add or remove connection for I: %s" -msgstr "" - -#: cinder/zonemanager/utils.py:40 -#, python-format -msgid "Using FC Zone Manager %(zm_version)s, Driver %(drv_name)s %(drv_version)s." -msgstr "" - -#: cinder/zonemanager/utils.py:57 -#, python-format -msgid "Using FC lookup service %s" -msgstr "" - -#: cinder/zonemanager/utils.py:78 -msgid "Driver didn't return connection info, can't add zone." -msgstr "" - -#: cinder/zonemanager/utils.py:103 -msgid "Driver didn't return connection info from terminate_connection call." -msgstr "" - -#: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:106 -#: cinder/zonemanager/drivers/cisco/cisco_fc_san_lookup_service.py:106 -msgid "Missing Fibre Channel SAN configuration param - fc_fabric_names" -msgstr "" - -#: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:140 -#, python-format -msgid "Failed collecting name server info from fabric %s" -msgstr "" - -#: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:143 -#, python-format -msgid "SSH connection failed for %(fabric)s with error: %(err)s" -msgstr "" - -#: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:199 -msgid "Failed collecting nsshow info for fabric" -msgstr "" - -#: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:206 -msgid "Failed collecting nscamshow" -msgstr "" - -#: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:219 -#, python-format -msgid "SSH Command failed with error '%(err)s' '%(command)s'" -msgstr "" - -#: cinder/zonemanager/drivers/brocade/brcd_fc_san_lookup_service.py:250 -#: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:370 -#, python-format -msgid "Malformed nameserver string: %s" -msgstr "" - -#: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:82 -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_client_cli.py:90 -#, python-format -msgid "Failed getting active zone set from fabric %s" -msgstr "" - -#: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:108 -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_client_cli.py:122 -#, 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:151 -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_client_cli.py:176 -#, python-format -msgid "Deleting zone failed %s" -msgstr "" - -#: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:184 -#, 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:239 -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_client_cli.py:286 -#, python-format -msgid "Deleting zones failed: (command=%(cmd)s error=%(err)s)." -msgstr "" - -#: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:260 -#, python-format -msgid "Failed collecting nsshow info for fabric %s" -msgstr "" - -#: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:291 -#, python-format -msgid "Error while checking transaction status: %s" -msgstr "" - -#: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:307 -#, 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:332 -msgid "No CLI output for firmware version check" -msgstr "" - -#: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:335 -#: cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py:348 -#: cinder/zonemanager/drivers/cisco/cisco_fc_san_lookup_service.py:203 -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_client_cli.py:329 -#, 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:482 -#: cinder/zonemanager/drivers/cisco/cisco_fc_san_lookup_service.py:344 -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_client_cli.py:470 -#, python-format -msgid "Error executing command via ssh: %s" -msgstr "" - -#: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:137 -#, python-format -msgid "BrcdFCZoneDriver - Add connection for I-T map: %s" -msgstr "" - -#: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:145 -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_driver.py:144 -#, python-format -msgid "Zoning policy for Fabric %s" -msgstr "" - -#: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:172 -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_driver.py:176 -#, python-format -msgid "Zone exists in I-T mode. Skipping zone creation %s" -msgstr "" - -#: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:190 -#: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:295 -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_driver.py:194 -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_driver.py:330 -#, python-format -msgid "Zoning Policy: %s, not recognized" -msgstr "" - -#: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:195 -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_driver.py:199 -#, python-format -msgid "Zone map to add: %s" -msgstr "" - -#: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:207 -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_driver.py:221 -#, python-format -msgid "Failed to add zoning configuration %s" -msgstr "" - -#: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:223 -#, python-format -msgid "BrcdFCZoneDriver - Delete connection for I-T map: %s" -msgstr "" - -#: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:231 -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_driver.py:259 -#, python-format -msgid "Zoning policy for fabric %s" -msgstr "" - -#: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:324 -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_driver.py:372 -msgid "Failed to update or delete zoning configuration" -msgstr "" - -#: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:357 -#: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:393 -#, 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:363 -#, python-format -msgid "Error getting name server info: %s" -msgstr "" - -#: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:366 -#, python-format -msgid "Failed to get name server info:%s" -msgstr "" - -#: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:374 -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_driver.py:432 -#, python-format -msgid "Filtered targets for SAN is: %s" -msgstr "" - -#: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:400 -#, python-format -msgid "Failed to retrieve active zoning configuration %s" -msgstr "" - -#: cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py:424 -#, python-format -msgid "Failed to create sb connector for %s" -msgstr "" - -#: cinder/zonemanager/drivers/cisco/cisco_fc_san_lookup_service.py:186 -msgid "Failed collecting show fcns database for fabric" -msgstr "" - -#: cinder/zonemanager/drivers/cisco/cisco_fc_san_lookup_service.py:225 -#, python-format -msgid "Malformed fcns output string: %s" -msgstr "" - -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_client_cli.py:195 -#, python-format -msgid "" -"Creating and activating zone set failed: (Zone set=%(zoneset)s " -"error=%(err)s)." -msgstr "" - -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_client_cli.py:225 -#, python-format -msgid "Failed getting zone status from fabric %s" -msgstr "" - -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_client_cli.py:243 -#, python-format -msgid "Malformed zone status: (switch=%(switch)s zone_config=%(zone_config)s)." -msgstr "" - -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_client_cli.py:306 -#, python-format -msgid "Failed collecting fcns database info for fabric %s" -msgstr "" - -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_client_cli.py:312 -#, python-format -msgid "Connector returning fcnsinfo-%s" -msgstr "" - -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_client_cli.py:351 -#, python-format -msgid "Malformed show fcns database string: %s" -msgstr "" - -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_driver.py:126 -#, python-format -msgid "CiscoFCZoneDriver - Add connection for I-T map: %s" -msgstr "" - -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_driver.py:240 -#, python-format -msgid "CiscoFCZoneDriver - Delete connection for I-T map: %s" -msgstr "" - -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_driver.py:421 -#, python-format -msgid "Error getting show fcns database info: %s" -msgstr "" - -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_driver.py:424 -#, python-format -msgid "Failed to get show fcns database info:%s" -msgstr "" - -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_driver.py:461 -#, python-format -msgid "Failed to access active zoning configuration:%s" -msgstr "" - -#: cinder/zonemanager/drivers/cisco/cisco_fc_zone_driver.py:483 -#, python-format -msgid "Failed to access zoneset status:%s" -msgstr "" - diff --git a/cinder/locale/fr/LC_MESSAGES/cinder-log-critical.po b/cinder/locale/fr/LC_MESSAGES/cinder-log-critical.po deleted file mode 100644 index fdf735b17ee..00000000000 --- a/cinder/locale/fr/LC_MESSAGES/cinder-log-critical.po +++ /dev/null @@ -1,23 +0,0 @@ -# Translations template 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-07-04 06:03+0000\n" -"PO-Revision-Date: 2014-05-30 06:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: French (http://www.transifex.com/projects/p/cinder/language/" -"fr/)\n" -"Language: fr\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" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" - -#~ msgid "Dummy message for transifex setup." -#~ msgstr "message fictif pour la configuration transifex" diff --git a/cinder/locale/ru/LC_MESSAGES/cinder-log-error.po b/cinder/locale/ru/LC_MESSAGES/cinder-log-error.po deleted file mode 100644 index c452ec2082d..00000000000 --- a/cinder/locale/ru/LC_MESSAGES/cinder-log-error.po +++ /dev/null @@ -1,67 +0,0 @@ -# Translations template 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-09-24 06:03+0000\n" -"PO-Revision-Date: 2014-08-07 07:52+0000\n" -"Last-Translator: openstackjenkins \n" -"Language-Team: Russian (http://www.transifex.com/projects/p/cinder/language/" -"ru/)\n" -"Language: ru\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" -"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" - -#: cinder/openstack/common/excutils.py:76 -#, python-format -msgid "Original exception being dropped: %s" -msgstr "" - -#: cinder/openstack/common/excutils.py:105 -#, python-format -msgid "Unexpected exception occurred %d time(s)... retrying." -msgstr "" - -#: cinder/openstack/common/loopingcall.py:95 -msgid "in fixed duration looping call" -msgstr "" - -#: cinder/openstack/common/loopingcall.py:138 -msgid "in dynamic looping call" -msgstr "" - -#: cinder/openstack/common/periodic_task.py:202 -#, python-format -msgid "Error during %(full_task_name)s: %(e)s" -msgstr "Ошибка во время %(full_task_name)s: %(e)s" - -#: cinder/openstack/common/policy.py:508 -#, python-format -msgid "Failed to understand rule %s" -msgstr "" - -#: cinder/openstack/common/policy.py:518 -#, python-format -msgid "No handler for matches of kind %s" -msgstr "" - -#: cinder/openstack/common/policy.py:788 -#, python-format -msgid "Failed to understand rule %r" -msgstr "" - -#: cinder/openstack/common/service.py:188 -msgid "Exception during rpc cleanup." -msgstr "" - -#: cinder/openstack/common/service.py:277 -msgid "Unhandled exception" -msgstr "" diff --git a/cinder/locale/te_IN/LC_MESSAGES/cinder-log-critical.po b/cinder/locale/te_IN/LC_MESSAGES/cinder-log-critical.po deleted file mode 100644 index 7669616d82c..00000000000 --- a/cinder/locale/te_IN/LC_MESSAGES/cinder-log-critical.po +++ /dev/null @@ -1,21 +0,0 @@ -# Translations template for cinder. -# Copyright (C) 2014 ORGANIZATION -# This file is distributed under the same license as the cinder project. -# -# Translators: -# Malyadri Beegala , 2014 -msgid "" -msgstr "" -"Project-Id-Version: Cinder\n" -"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-08-09 06:08+0000\n" -"PO-Revision-Date: 2014-07-31 15:31+0000\n" -"Last-Translator: Malyadri Beegala \n" -"Language-Team: Telugu (India) (http://www.transifex.com/projects/p/cinder/" -"language/te_IN/)\n" -"Language: te_IN\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" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" diff --git a/cinder/locale/te_IN/LC_MESSAGES/cinder-log-error.po b/cinder/locale/te_IN/LC_MESSAGES/cinder-log-error.po deleted file mode 100644 index 244b3c4eccc..00000000000 --- a/cinder/locale/te_IN/LC_MESSAGES/cinder-log-error.po +++ /dev/null @@ -1,67 +0,0 @@ -# Translations template for cinder. -# Copyright (C) 2014 ORGANIZATION -# This file is distributed under the same license as the cinder project. -# -# Translators: -# Malyadri Beegala , 2014 -msgid "" -msgstr "" -"Project-Id-Version: Cinder\n" -"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-09-24 06:03+0000\n" -"PO-Revision-Date: 2014-08-07 07:52+0000\n" -"Last-Translator: Malyadri Beegala \n" -"Language-Team: Telugu (India) (http://www.transifex.com/projects/p/cinder/" -"language/te_IN/)\n" -"Language: te_IN\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" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: cinder/openstack/common/excutils.py:76 -#, python-format -msgid "Original exception being dropped: %s" -msgstr "" - -#: cinder/openstack/common/excutils.py:105 -#, python-format -msgid "Unexpected exception occurred %d time(s)... retrying." -msgstr "" - -#: cinder/openstack/common/loopingcall.py:95 -msgid "in fixed duration looping call" -msgstr "" - -#: cinder/openstack/common/loopingcall.py:138 -msgid "in dynamic looping call" -msgstr "" - -#: cinder/openstack/common/periodic_task.py:202 -#, python-format -msgid "Error during %(full_task_name)s: %(e)s" -msgstr " %(full_task_name)s: %(e)s లో లోపం " - -#: cinder/openstack/common/policy.py:508 -#, python-format -msgid "Failed to understand rule %s" -msgstr "" - -#: cinder/openstack/common/policy.py:518 -#, python-format -msgid "No handler for matches of kind %s" -msgstr "" - -#: cinder/openstack/common/policy.py:788 -#, python-format -msgid "Failed to understand rule %r" -msgstr "" - -#: cinder/openstack/common/service.py:188 -msgid "Exception during rpc cleanup." -msgstr "" - -#: cinder/openstack/common/service.py:277 -msgid "Unhandled exception" -msgstr "" diff --git a/cinder/locale/tr_TR/LC_MESSAGES/cinder-log-error.po b/cinder/locale/tr_TR/LC_MESSAGES/cinder-log-error.po deleted file mode 100644 index f56fe36ffcb..00000000000 --- a/cinder/locale/tr_TR/LC_MESSAGES/cinder-log-error.po +++ /dev/null @@ -1,66 +0,0 @@ -# Translations template 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-09-24 06:03+0000\n" -"PO-Revision-Date: 2014-08-07 07:52+0000\n" -"Last-Translator: openstackjenkins \n" -"Language-Team: Turkish (Turkey) (http://www.transifex.com/projects/p/cinder/" -"language/tr_TR/)\n" -"Language: tr_TR\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" -"Plural-Forms: nplurals=1; plural=0;\n" - -#: cinder/openstack/common/excutils.py:76 -#, python-format -msgid "Original exception being dropped: %s" -msgstr "" - -#: cinder/openstack/common/excutils.py:105 -#, python-format -msgid "Unexpected exception occurred %d time(s)... retrying." -msgstr "" - -#: cinder/openstack/common/loopingcall.py:95 -msgid "in fixed duration looping call" -msgstr "" - -#: cinder/openstack/common/loopingcall.py:138 -msgid "in dynamic looping call" -msgstr "" - -#: cinder/openstack/common/periodic_task.py:202 -#, python-format -msgid "Error during %(full_task_name)s: %(e)s" -msgstr "%(full_task_name)s sırasında hata: %(e)s" - -#: cinder/openstack/common/policy.py:508 -#, python-format -msgid "Failed to understand rule %s" -msgstr "" - -#: cinder/openstack/common/policy.py:518 -#, python-format -msgid "No handler for matches of kind %s" -msgstr "" - -#: cinder/openstack/common/policy.py:788 -#, python-format -msgid "Failed to understand rule %r" -msgstr "" - -#: cinder/openstack/common/service.py:188 -msgid "Exception during rpc cleanup." -msgstr "" - -#: cinder/openstack/common/service.py:277 -msgid "Unhandled exception" -msgstr "" From 01e7c516852e53df661b2eedc970c327c1ff10ce Mon Sep 17 00:00:00 2001 From: Vipin Balachandran Date: Fri, 10 Oct 2014 23:06:27 +0530 Subject: [PATCH 14/16] Revert "Relocate volume to compliant datastore" Commit 4be8913520f5e9fe4109ade101da9509e4a83360 introduced a regression which causes failures during cinder volume re-attach. This patch reverts commit 4be8913520f5e9fe4109ade101da9509e4a83360 as an immediate fix. Closes-Bug: #1379830 Change-Id: I5dfbd45533489c3c81db8d256bbfd2f85614a357 (cherry picked from commit 48cb82971e0418f9a629e2b39d0433dc2c0e6919) --- cinder/tests/test_vmware_vmdk.py | 352 ++++++++++----------- cinder/tests/test_vmware_volumeops.py | 70 ---- cinder/volume/drivers/vmware/error_util.py | 5 - cinder/volume/drivers/vmware/vmdk.py | 60 ++-- cinder/volume/drivers/vmware/volumeops.py | 33 -- 5 files changed, 184 insertions(+), 336 deletions(-) diff --git a/cinder/tests/test_vmware_vmdk.py b/cinder/tests/test_vmware_vmdk.py index b1d25d48be6..b00868ffc1b 100644 --- a/cinder/tests/test_vmware_vmdk.py +++ b/cinder/tests/test_vmware_vmdk.py @@ -375,97 +375,30 @@ class VMwareEsxVmdkDriverTestCase(test.TestCase): m.UnsetStubs() m.VerifyAll() - @mock.patch.object(VMDK_DRIVER, 'volumeops') - @mock.patch.object(VMDK_DRIVER, '_relocate_backing') - @mock.patch.object(VMDK_DRIVER, '_create_backing') - def test_initialize_connection_with_instance_and_backing( - self, create_backing, relocate_backing, vops): - self._test_initialize_connection_with_instance_and_backing( - create_backing, relocate_backing, vops) + 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) - def _test_initialize_connection_with_instance_and_backing( - self, create_backing, relocate_backing, vops): - instance = mock.sentinel.instance - connector = {'instance': instance} - - backing = mock.Mock(value=mock.sentinel.backing_value) - vops.get_backing.return_value = backing - - host = mock.sentinel.host - vops.get_host.return_value = host - - volume = {'name': 'vol-1', 'id': 1} + m.ReplayAll() conn_info = self._driver.initialize_connection(volume, connector) - - relocate_backing.assert_called_once_with(volume, backing, host) - self.assertFalse(create_backing.called) - - self.assertEqual('vmdk', conn_info['driver_volume_type']) - self.assertEqual(backing.value, conn_info['data']['volume']) - self.assertEqual(volume['id'], - conn_info['data']['volume_id']) - - @mock.patch.object(VMDK_DRIVER, 'volumeops') - @mock.patch.object(VMDK_DRIVER, '_relocate_backing') - @mock.patch.object(VMDK_DRIVER, '_create_backing') - def test_initialize_connection_with_instance_and_no_backing( - self, create_backing, relocate_backing, vops): - self._test_initialize_connection_with_instance_and_no_backing( - create_backing, relocate_backing, vops) - - def _test_initialize_connection_with_instance_and_no_backing( - self, create_backing, relocate_backing, vops): - instance = mock.sentinel.instance - connector = {'instance': instance} - - vops.get_backing.return_value = None - - host = mock.sentinel.host - vops.get_host.return_value = host - - backing = mock.Mock(value=mock.sentinel.backing_value) - create_backing.return_value = backing - - volume = {'name': 'vol-1', 'id': 1} - conn_info = self._driver.initialize_connection(volume, connector) - - create_backing.assert_called_once_with(volume, host) - self.assertFalse(relocate_backing.called) - - self.assertEqual('vmdk', conn_info['driver_volume_type']) - self.assertEqual(backing.value, conn_info['data']['volume']) - self.assertEqual(volume['id'], - conn_info['data']['volume_id']) - - @mock.patch.object(VMDK_DRIVER, 'volumeops') - @mock.patch.object(VMDK_DRIVER, '_relocate_backing') - @mock.patch.object(VMDK_DRIVER, '_create_backing_in_inventory') - def test_initialize_connection_with_no_instance_and_no_backing( - self, create_backing_in_inventory, relocate_backing, vops): - self._test_initialize_connection_with_no_instance_and_no_backing( - create_backing_in_inventory, relocate_backing, vops) - - def _test_initialize_connection_with_no_instance_and_no_backing( - self, create_backing_in_inventory, relocate_backing, vops): - vops.get_backing.return_value = None - - host = mock.sentinel.host - vops.get_host.return_value = host - - backing = mock.Mock(value=mock.sentinel.backing_value) - create_backing_in_inventory.return_value = backing - - connector = {} - volume = {'name': 'vol-1', 'id': 1} - conn_info = self._driver.initialize_connection(volume, connector) - - create_backing_in_inventory.assert_called_once_with(volume) - self.assertFalse(relocate_backing.called) - - self.assertEqual('vmdk', conn_info['driver_volume_type']) - self.assertEqual(backing.value, conn_info['data']['volume']) - self.assertEqual(volume['id'], - conn_info['data']['volume_id']) + 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.""" @@ -596,6 +529,71 @@ class VMwareEsxVmdkDriverTestCase(test.TestCase): vmdk.VMwareEsxVmdkDriver._get_disk_type, volume) + 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.Mi, + mox.IgnoreArg(), folder, + resource_pool, host, + mox.IgnoreArg(), + 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 @@ -2005,29 +2003,37 @@ class VMwareVcVmdkDriverTestCase(VMwareEsxVmdkDriverTestCase): self._test_create_backing_by_copying(volumeops, create_backing, extend_virtual_disk) - @mock.patch.object(VMDK_DRIVER, 'volumeops') - @mock.patch.object(VMDK_DRIVER, '_relocate_backing') - @mock.patch.object(VMDK_DRIVER, '_create_backing') - def test_initialize_connection_with_instance_and_backing( - self, create_backing, relocate_backing, vops): - self._test_initialize_connection_with_instance_and_backing( - create_backing, relocate_backing, vops) + 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) - @mock.patch.object(VMDK_DRIVER, 'volumeops') - @mock.patch.object(VMDK_DRIVER, '_relocate_backing') - @mock.patch.object(VMDK_DRIVER, '_create_backing') - def test_initialize_connection_with_instance_and_no_backing( - self, create_backing, relocate_backing, vops): - self._test_initialize_connection_with_instance_and_no_backing( - create_backing, relocate_backing, vops) - - @mock.patch.object(VMDK_DRIVER, 'volumeops') - @mock.patch.object(VMDK_DRIVER, '_relocate_backing') - @mock.patch.object(VMDK_DRIVER, '_create_backing_in_inventory') - def test_initialize_connection_with_no_instance_and_no_backing( - self, create_backing_in_inventory, relocate_backing, vops): - self._test_initialize_connection_with_no_instance_and_no_backing( - create_backing_in_inventory, relocate_backing, vops) + 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.""" @@ -2046,6 +2052,50 @@ class VMwareVcVmdkDriverTestCase(VMwareEsxVmdkDriverTestCase): 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) + 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): @@ -2641,86 +2691,6 @@ class VMwareVcVmdkDriverTestCase(VMwareEsxVmdkDriverTestCase): close.assert_called_once_with(fd) delete_if_exists.assert_called_once_with(tmp) - @mock.patch.object(VMDK_DRIVER, 'volumeops') - @mock.patch.object(VMDK_DRIVER, 'ds_sel') - def test_relocate_backing_nop(self, ds_sel, vops): - volume = {'name': 'vol-1', 'size': 1} - - datastore = mock.sentinel.datastore - vops.get_datastore.return_value = datastore - - profile = mock.sentinel.profile - vops.get_profile.return_value = profile - - vops.is_datastore_accessible.return_value = True - ds_sel.is_datastore_compliant.return_value = True - - backing = mock.sentinel.backing - host = mock.sentinel.host - self._driver._relocate_backing(volume, backing, host) - - vops.is_datastore_accessible.assert_called_once_with(datastore, host) - ds_sel.is_datastore_compliant.assert_called_once_with(datastore, - profile) - self.assertFalse(vops.relocate_backing.called) - - @mock.patch.object(VMDK_DRIVER, 'volumeops') - @mock.patch.object(VMDK_DRIVER, 'ds_sel') - def test_relocate_backing_with_no_datastore( - self, ds_sel, vops): - volume = {'name': 'vol-1', 'size': 1} - - profile = mock.sentinel.profile - vops.get_profile.return_value = profile - - vops.is_datastore_accessible.return_value = True - ds_sel.is_datastore_compliant.return_value = False - - ds_sel.select_datastore.return_value = [] - - backing = mock.sentinel.backing - host = mock.sentinel.host - - self.assertRaises(error_util.NoValidDatastoreException, - self._driver._relocate_backing, - volume, - backing, - host) - ds_sel.select_datastore.assert_called_once_with( - {hub.DatastoreSelector.SIZE_BYTES: volume['size'] * units.Gi, - hub.DatastoreSelector.PROFILE_NAME: profile}, hosts=[host]) - self.assertFalse(vops.relocate_backing.called) - - @mock.patch.object(VMDK_DRIVER, 'volumeops') - @mock.patch.object(VMDK_DRIVER, '_get_volume_group_folder') - @mock.patch.object(VMDK_DRIVER, 'ds_sel') - def test_relocate_backing( - self, ds_sel, get_volume_group_folder, vops): - volume = {'name': 'vol-1', 'size': 1} - - vops.is_datastore_accessible.return_value = False - ds_sel.is_datastore_compliant.return_value = True - - backing = mock.sentinel.backing - host = mock.sentinel.host - - rp = mock.sentinel.rp - datastore = mock.sentinel.datastore - summary = mock.Mock(datastore=datastore) - ds_sel.select_datastore.return_value = (host, rp, summary) - - folder = mock.sentinel.folder - get_volume_group_folder.return_value = folder - - self._driver._relocate_backing(volume, backing, host) - - vops.relocate_backing.assert_called_once_with(backing, - datastore, - rp, - host) - vops.move_backing_to_folder.assert_called_once_with(backing, - folder) - class ImageDiskTypeTest(test.TestCase): """Unit tests for ImageDiskType.""" diff --git a/cinder/tests/test_vmware_volumeops.py b/cinder/tests/test_vmware_volumeops.py index 7e2caaf8f33..3aef159ac4c 100644 --- a/cinder/tests/test_vmware_volumeops.py +++ b/cinder/tests/test_vmware_volumeops.py @@ -237,30 +237,6 @@ class VolumeOpsTestCase(test.TestCase): hosts = self.vops.get_connected_hosts(datastore) self.assertEqual([], hosts) - @mock.patch('cinder.volume.drivers.vmware.volumeops.VMwareVolumeOps.' - 'get_connected_hosts') - def test_is_datastore_accessible(self, get_connected_hosts): - host_1 = mock.Mock(value=mock.sentinel.host_1) - host_2 = mock.Mock(value=mock.sentinel.host_2) - get_connected_hosts.return_value = [host_1, host_2] - - ds = mock.sentinel.datastore - host = mock.Mock(value=mock.sentinel.host_1) - self.assertTrue(self.vops.is_datastore_accessible(ds, host)) - get_connected_hosts.assert_called_once_with(ds) - - @mock.patch('cinder.volume.drivers.vmware.volumeops.VMwareVolumeOps.' - 'get_connected_hosts') - def test_is_datastore_accessible_with_inaccessible(self, - get_connected_hosts): - host_1 = mock.Mock(value=mock.sentinel.host_1) - get_connected_hosts.return_value = [host_1] - - ds = mock.sentinel.datastore - host = mock.Mock(value=mock.sentinel.host_2) - self.assertFalse(self.vops.is_datastore_accessible(ds, host)) - get_connected_hosts.assert_called_once_with(ds) - def test_is_valid(self): with mock.patch.object(self.vops, 'get_summary') as get_summary: summary = mock.Mock(spec=object) @@ -1309,52 +1285,6 @@ class VolumeOpsTestCase(test.TestCase): datacenter=dc_ref) self.session.wait_for_task.assert_called_once_with(task) - def test_get_profile(self): - server_obj = mock.Mock() - self.session.pbm.client.factory.create.return_value = server_obj - - profile_ids = [mock.sentinel.profile_id] - profile_name = mock.sentinel.profile_name - profile = mock.Mock() - profile.name = profile_name - self.session.invoke_api.side_effect = [profile_ids, [profile]] - - value = mock.sentinel.value - backing = mock.Mock(value=value) - self.assertEqual(profile_name, self.vops.get_profile(backing)) - - pbm = self.session.pbm - profile_manager = pbm.service_content.profileManager - exp_calls = [mock.call(pbm, 'PbmQueryAssociatedProfile', - profile_manager, entity=server_obj), - mock.call(pbm, 'PbmRetrieveContent', profile_manager, - profileIds=profile_ids)] - self.assertEqual(exp_calls, self.session.invoke_api.call_args_list) - - self.assertEqual(value, server_obj.key) - self.assertEqual('virtualMachine', server_obj.objectType) - self.session.invoke_api.side_effect = None - - def test_get_profile_with_no_profile(self): - server_obj = mock.Mock() - self.session.pbm.client.factory.create.return_value = server_obj - - self.session.invoke_api.side_effect = [[]] - - value = mock.sentinel.value - backing = mock.Mock(value=value) - self.assertIsNone(self.vops.get_profile(backing)) - - pbm = self.session.pbm - profile_manager = pbm.service_content.profileManager - exp_calls = [mock.call(pbm, 'PbmQueryAssociatedProfile', - profile_manager, entity=server_obj)] - self.assertEqual(exp_calls, self.session.invoke_api.call_args_list) - - self.assertEqual(value, server_obj.key) - self.assertEqual('virtualMachine', server_obj.objectType) - self.session.invoke_api.side_effect = None - def test_extend_virtual_disk(self): """Test volumeops.extend_virtual_disk.""" task = mock.sentinel.task diff --git a/cinder/volume/drivers/vmware/error_util.py b/cinder/volume/drivers/vmware/error_util.py index 1790d019771..5696bc700bd 100644 --- a/cinder/volume/drivers/vmware/error_util.py +++ b/cinder/volume/drivers/vmware/error_util.py @@ -93,8 +93,3 @@ class VirtualDiskNotFoundException(VMwareDriverException): class ProfileNotFoundException(VMwareDriverException): """Thrown when the given storage profile cannot be found.""" message = _("Storage profile: %(storage_profile)s not found.") - - -class NoValidDatastoreException(VMwareDriverException): - """Thrown when there are no valid datastores.""" - message = _("There are no valid datastores.") diff --git a/cinder/volume/drivers/vmware/vmdk.py b/cinder/volume/drivers/vmware/vmdk.py index c95056721c0..b8f48ec517d 100644 --- a/cinder/volume/drivers/vmware/vmdk.py +++ b/cinder/volume/drivers/vmware/vmdk.py @@ -1916,52 +1916,38 @@ class VMwareVcVmdkDriver(VMwareEsxVmdkDriver): return self.volumeops.create_folder(vm_folder, volume_folder) def _relocate_backing(self, volume, backing, host): - """Relocate volume backing to a datastore accessible to the given host. + """Relocate volume backing under host and move to volume_group folder. - The backing is not relocated if the current datastore is already - accessible to the host and compliant with the backing's storage - profile. + 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 volume: volume to be relocated :param backing: Reference to the backing :param host: Reference to the host """ - # Check if current datastore is visible to host managing - # the instance and compliant with the storage profile. + # 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) - backing_profile = self.volumeops.get_profile(backing) - if (self.volumeops.is_datastore_accessible(datastore, host) and - self.ds_sel.is_datastore_compliant(datastore, - backing_profile)): - LOG.debug("Datastore: %(datastore)s of backing: %(backing)s is " - "already accessible to instance's host: %(host)s and " - "compliant with storage profile: %(profile)s.", - {'backing': backing, - 'datastore': datastore, - 'host': host, - 'profile': backing_profile}) + + visible_to_host = False + for _datastore in datastores: + if _datastore.value == datastore.value: + visible_to_host = True + break + if visible_to_host: return - # We need to relocate the backing to an accessible and profile - # compliant datastore. - req = {} - req[hub.DatastoreSelector.SIZE_BYTES] = (volume['size'] * - units.Gi) - req[hub.DatastoreSelector.PROFILE_NAME] = backing_profile - - # Select datastore satisfying the requirements. - best_candidate = self.ds_sel.select_datastore(req, hosts=[host]) - if not best_candidate: - # No candidate datastore to relocate. - msg = _("There are no datastores matching volume requirements;" - " can't relocate volume: %s.") % volume['name'] - LOG.error(msg) - raise error_util.NoValidDatastoreException(msg) - - (host, resource_pool, summary) = best_candidate - dc = self.volumeops.get_dc(resource_pool) - folder = self._get_volume_group_folder(dc) + # 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) diff --git a/cinder/volume/drivers/vmware/volumeops.py b/cinder/volume/drivers/vmware/volumeops.py index 775314624af..1eef770704c 100644 --- a/cinder/volume/drivers/vmware/volumeops.py +++ b/cinder/volume/drivers/vmware/volumeops.py @@ -388,15 +388,6 @@ class VMwareVolumeOps(object): return connected_hosts - def is_datastore_accessible(self, datastore, host): - """Check if the datastore is accessible to the given host. - - :param datastore: datastore reference - :return: True if the datastore is accessible - """ - hosts = self.get_connected_hosts(datastore) - return host.value in [host_ref.value for host_ref in hosts] - def _in_maintenance(self, summary): """Check if a datastore is entering maintenance or in maintenance. @@ -1391,27 +1382,3 @@ class VMwareVolumeOps(object): profile=profile_id) LOG.debug("Filtered hubs: %s", filtered_hubs) return filtered_hubs - - def get_profile(self, backing): - """Query storage profile associated with the given backing. - - :param backing: backing reference - :return: profile name - """ - pbm = self._session.pbm - profile_manager = pbm.service_content.profileManager - - object_ref = pbm.client.factory.create('ns0:PbmServerObjectRef') - object_ref.key = backing.value - object_ref.objectType = 'virtualMachine' - - profile_ids = self._session.invoke_api(pbm, - 'PbmQueryAssociatedProfile', - profile_manager, - entity=object_ref) - if profile_ids: - profiles = self._session.invoke_api(pbm, - 'PbmRetrieveContent', - profile_manager, - profileIds=profile_ids) - return profiles[0].name From f7ee62cc58d8b642af67510a310f6259492a4508 Mon Sep 17 00:00:00 2001 From: Mitsuhiro Tanino Date: Tue, 14 Oct 2014 12:41:41 -0400 Subject: [PATCH 15/16] Export cinder volumes only if the status is 'in-use' Currently, cinder volumes are exported both 'in-use' and 'available' after restarting cinder-volume service. This behavior was introduced following commit. commit ffefe18334a9456250e1b6ff88b7b47fb366f374 Author: Zhiteng Huang Date: Sat Aug 23 18:32:57 2014 +0000 If the volumes are attached to nova instances, they should be exported via tgtd after restarting cinder-volume. But the volumes which are not attached to instances must not be exported because everyone can connect these volumes. This patch changes volume export behavior that exports a volume only if the volume status is 'in-use'. Change-Id: I4c598c240b9290c81bd8001e5a0720c8c329aeb9 Signed-off-by: Mitsuhiro Tanino Closes-bug: #1381106 (cherry picked from commit e2f28b967910625432be0eab6a851adf53ac58ea) --- cinder/volume/manager.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cinder/volume/manager.py b/cinder/volume/manager.py index a4ec45123f9..8859807bd8c 100644 --- a/cinder/volume/manager.py +++ b/cinder/volume/manager.py @@ -272,7 +272,8 @@ class VolumeManager(manager.SchedulerDependentManager): self._count_allocated_capacity(ctxt, volume) try: - self.driver.ensure_export(ctxt, volume) + if volume['status'] in ['in-use']: + 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']) From be3d4604dc0566e0838959d998ff1d37755de6d3 Mon Sep 17 00:00:00 2001 From: Tomoki Sekiyama Date: Tue, 14 Oct 2014 19:09:44 -0400 Subject: [PATCH 16/16] Fix LVM iSCSI driver tgtadm CHAP authentication Currently CHAP Authentication in LVM iSCSI driver with tgtadm does not work. This is because the tgtadm helper creates the target configuration file with an 'IncomingUser' entry, which is ignored by tgtd. This patch fixes it to 'incominguser'. Change-Id: I14871985a2a916834122f849238f05b75726bc1a Closes-Bug: #1329214 (cherry picked from commit e3563891545c801726d227f752cf99488ed5c7dd) --- cinder/brick/iscsi/iscsi.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cinder/brick/iscsi/iscsi.py b/cinder/brick/iscsi/iscsi.py index f557e61724f..e94a3438e59 100644 --- a/cinder/brick/iscsi/iscsi.py +++ b/cinder/brick/iscsi/iscsi.py @@ -171,8 +171,9 @@ class TgtAdm(TargetAdmin): if chap_auth is None: volume_conf = self.VOLUME_CONF % (name, path, write_cache) else: + chap_str = re.sub('^IncomingUser ', 'incominguser ', chap_auth) volume_conf = self.VOLUME_CONF_WITH_CHAP_AUTH % (name, - path, chap_auth, + path, chap_str, write_cache) LOG.info(_('Creating iscsi_target for: %s') % vol_id)