From 7487e706426d74555d639146a188618fc1e103f2 Mon Sep 17 00:00:00 2001 From: Alon Marx Date: Thu, 9 Feb 2017 22:02:26 +0200 Subject: [PATCH] fix create_consistencygroup in xiv create_consistencygroup failed when extracting extra_specs. This is due to ConsistencyGroup.volume_type_id having an extra comma at the end (e.g. u'2ec11e39-881a-4392-a0dd-2254ec4b39a0,'). Change-Id: I52dd2d8c55afccb6734742a7ca4fe916eba0142d closes-bug: 1663356 --- .../tests/unit/volume/drivers/ibm/test_xiv_proxy.py | 11 +++++++---- cinder/volume/drivers/ibm/ibm_storage/xiv_proxy.py | 3 ++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/cinder/tests/unit/volume/drivers/ibm/test_xiv_proxy.py b/cinder/tests/unit/volume/drivers/ibm/test_xiv_proxy.py index e1f680c3599..720cfeceec1 100644 --- a/cinder/tests/unit/volume/drivers/ibm/test_xiv_proxy.py +++ b/cinder/tests/unit/volume/drivers/ibm/test_xiv_proxy.py @@ -21,6 +21,7 @@ from cinder import context from cinder import exception from cinder.objects import consistencygroup from cinder.objects import fields +from cinder.tests.unit import fake_constants as fake from cinder.tests.unit.volume.drivers.ibm import fake_pyxcli import cinder.volume.drivers.ibm.ibm_storage as storage from cinder.volume.drivers.ibm.ibm_storage import cryptish @@ -43,6 +44,7 @@ TEST_VOLUME = { 'name': 'BLA', 'id': 23, 'size': 17, + 'consistencygroup_id': fake.CONSISTENCY_GROUP_ID, } TEST_CLONED_VOLUME = { 'name': 'CLONE', @@ -135,7 +137,8 @@ class XIVProxyTest(unittest.TestCase): """Tests the main Proxy driver""" test_cg = consistencygroup.ConsistencyGroup( - context=None, name='WTF32', id='WTF32', volume_type_id='WTF32', + context=None, name='WTF32', id=fake.CONSISTENCY_GROUP_ID, + volume_type_id=fake.VOLUME_TYPE_ID, status=fields.ConsistencyGroupStatus.AVAILABLE) def setUp(self): @@ -1122,7 +1125,7 @@ class XIVProxyTest(unittest.TestCase): model_update = p.create_consistencygroup({}, self.test_cg) p.ibm_storage_cli.cmd.cg_create.assert_called_once_with( - cg='cg_WTF32', + cg=p._cg_name_from_id(fake.CONSISTENCY_GROUP_ID), pool='WTF32') self.assertEqual('available', model_update['status']) @@ -1213,7 +1216,7 @@ class XIVProxyTest(unittest.TestCase): TEST_CG_SNAPSHOT, [TEST_SNAPSHOT], None, None) p.ibm_storage_cli.cmd.cg_create.assert_called_once_with( - cg='cg_WTF32', + cg=p._cg_name_from_volume(TEST_VOLUME), pool='WTF32') self.assertEqual('available', model_update['status']) @@ -1240,7 +1243,7 @@ class XIVProxyTest(unittest.TestCase): None, None, TEST_CONS_GROUP, [TEST_CLONED_VOLUME]) p.ibm_storage_cli.cmd.cg_create.assert_called_once_with( - cg='cg_WTF32', + cg=p._cg_name_from_volume(TEST_VOLUME), pool='WTF32') self.assertEqual('available', model_update['status']) diff --git a/cinder/volume/drivers/ibm/ibm_storage/xiv_proxy.py b/cinder/volume/drivers/ibm/ibm_storage/xiv_proxy.py index a3e717196de..20dc25e3d6c 100644 --- a/cinder/volume/drivers/ibm/ibm_storage/xiv_proxy.py +++ b/cinder/volume/drivers/ibm/ibm_storage/xiv_proxy.py @@ -1645,12 +1645,13 @@ class XIVProxy(proxy.IBMStorageProxy): if isinstance(group, objects.Group): volume_type_ids = group.volume_type_ids elif isinstance(group, objects.ConsistencyGroup): - volume_type_ids = [group.volume_type_id] + volume_type_ids = [filter(None, group.volume_type_id.split(","))] else: msg = (_("Consistency group %(group)s has no volume_type_ids") % {'group': cgname}) LOG.error(msg) raise self.meta['exception'].VolumeBackendAPIException(data=msg) + LOG.debug("volume_type_ids: %s", volume_type_ids) for volume_type_id in volume_type_ids: specs = self._get_extra_specs(volume_type_id) replication_info = self._get_replication_info(specs)