diff --git a/cinder/tests/unit/volume/drivers/ibm/test_ds8k_proxy.py b/cinder/tests/unit/volume/drivers/ibm/test_ds8k_proxy.py index 2a79fac1cea..35ddcece93c 100644 --- a/cinder/tests/unit/volume/drivers/ibm/test_ds8k_proxy.py +++ b/cinder/tests/unit/volume/drivers/ibm/test_ds8k_proxy.py @@ -4464,3 +4464,52 @@ class DS8KProxyTest(test.TestCase): pprc_pairs_3] self.driver.failover_replication(self.ctxt, group, [volume], 'default') self.assertTrue(mock_get_pprc_pairs.called) + + @mock.patch('cinder.volume.volume_utils.CONF') + def test_create_volume_with_template(self, mock_conf): + self.driver = FakeDS8KProxy(self.storage_info, self.logger, + self.exception, self) + self.driver.setup(self.ctxt) + mock_conf.volume_name_template = 'volume-%s' + vol_id = 'd403b4d9-473a-42d0-94c5-be45a1268928' + vol_name = mock_conf.volume_name_template % vol_id + volume = self._create_volume(id=vol_id) + lun = ds8kproxy.Lun(volume) + exp_vol_name = helper.filter_alnum(vol_name)[:16] + self.assertEqual(lun.ds_name, exp_vol_name) + + @mock.patch.object(eventlet, 'sleep') + @mock.patch.object(helper.DS8KCommonHelper, 'get_flashcopy') + def test_create_snapshot_with_tmpt(self, mock_get_flashcopy, mock_sleep): + """test a successful creation of snapshot.""" + self.driver = FakeDS8KProxy(self.storage_info, self.logger, + self.exception, self) + self.driver.setup(self.ctxt) + + vol_type = volume_types.create(self.ctxt, 'VOL_TYPE', {}) + location = six.text_type({'vol_hex_id': '0002'}) + volume = self._create_volume(volume_type_id=vol_type.id, + provider_location=location) + snapshot = self._create_snapshot(volume_id=volume.id) + mock_get_flashcopy.side_effect = [[TEST_FLASHCOPY], {}] + snapshot_update = self.driver.create_snapshot(snapshot) + location = ast.literal_eval(snapshot_update['provider_location']) + self.assertEqual(TEST_VOLUME_ID, location['vol_hex_id']) + lun = ds8kproxy.Lun(snapshot, is_snapshot=True) + exp_snap_name = helper.filter_alnum(snapshot.name)[:16] + self.assertIn(lun.ds_name, exp_snap_name) + + @mock.patch.object(eventlet, 'sleep') + def test_create_fb_replicated_volume_with_tmpt(self, mock_sleep): + """create FB volume when enable replication.""" + self.configuration.replication_device = [TEST_REPLICATION_DEVICE] + self.driver = FakeDS8KProxy(self.storage_info, self.logger, + self.exception, self) + self.driver.setup(self.ctxt) + + extra_spec = {'replication_enabled': ' True'} + vol_type = volume_types.create(self.ctxt, 'VOL_TYPE', extra_spec) + volume = self._create_volume(volume_type_id=vol_type.id) + lun = ds8kproxy.Lun(volume) + exp_repl_name = helper.filter_alnum(volume.name)[:16] + self.assertEqual(lun.replica_ds_name, exp_repl_name) diff --git a/cinder/volume/drivers/ibm/ibm_storage/ds8k_proxy.py b/cinder/volume/drivers/ibm/ibm_storage/ds8k_proxy.py index 4aea35a1a5f..6f97bf7e43b 100644 --- a/cinder/volume/drivers/ibm/ibm_storage/ds8k_proxy.py +++ b/cinder/volume/drivers/ibm/ibm_storage/ds8k_proxy.py @@ -222,7 +222,7 @@ class Lun(object): self.ds_id = provider_location['vol_hex_id'] else: self.ds_id = None - self.cinder_name = volume.display_name + self.cinder_name = volume.name self.pool_lss_pair = {} self.is_snapshot = is_snapshot if self.is_snapshot: @@ -230,20 +230,14 @@ class Lun(object): if volume.group_snapshot else None) self.size = volume.volume_size # ds8k supports at most 16 chars - self.ds_name = ( - "OS%s:%s" % ('snap', helper.filter_alnum(self.cinder_name)) - )[:16] + self.ds_name = helper.filter_alnum(self.cinder_name)[:16] self.metadata = self._get_snapshot_metadata(volume) self.source_volid = volume.volume_id else: self.group = Group(volume.group) if volume.group else None self.size = volume.size - self.ds_name = ( - "OS%s:%s" % ('vol', helper.filter_alnum(self.cinder_name)) - )[:16] - self.replica_ds_name = ( - "OS%s:%s" % ('Replica', helper.filter_alnum(self.cinder_name)) - )[:16] + self.ds_name = helper.filter_alnum(self.cinder_name)[:16] + self.replica_ds_name = helper.filter_alnum(self.cinder_name)[:16] self.previous_status = volume.previous_status self.replication_status = volume.replication_status self.replication_driver_data = ( diff --git a/releasenotes/notes/bug-1884030-ds8k_support_volume_name_template-91e1b70ece172ef8.yaml b/releasenotes/notes/bug-1884030-ds8k_support_volume_name_template-91e1b70ece172ef8.yaml new file mode 100644 index 00000000000..2ccea9fb192 --- /dev/null +++ b/releasenotes/notes/bug-1884030-ds8k_support_volume_name_template-91e1b70ece172ef8.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + IBM DS8000 Driver `Bug #1884030 + `_: + Support for volume_name_template configuration option.