summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHelen Walsh <helen.walsh@emc.com>2020-03-12 15:30:20 +0000
committerHelen Walsh <helen.walsh@emc.com>2020-04-17 10:18:53 +0100
commit748fc29254785d22c4623c0e5ec9bd71f0ef6365 (patch)
treeb0bf5c94136899075296eb0d2c3aed61b7994ca9
parent4f385b0401b2fb8a3ca432455df0bbae7090bda1 (diff)
downloadcinder-748fc29254785d22c4623c0e5ec9bd71f0ef6365.tar.gz
PowerMax Driver - Legacy volume not found
The equals check is too stringent for legacy pre Pike volumes after an upgrade. Pre PIke is SMI-S, Pike and later is REST and identifier name is persisted differently. Change-Id: I963ad219c2e3b1c9c5edaa8f7e0d3dea911ecd8e Closes-Bug: #1867163 (cherry picked from commit 4296ea130e1055d608b11b44cbff21358804ae7d) (cherry picked from commit b2d61850b0826ec258e8c645ac6c8a9bb71a3966) (cherry picked from commit db58c6c9026265737667391a7b833076ce210639) (cherry picked from commit 917e0b0cef91686787fe7cf4185cd4efb03d6361)
-rw-r--r--cinder/tests/unit/volume/drivers/dell_emc/vmax/test_vmax.py29
-rw-r--r--cinder/volume/drivers/dell_emc/vmax/fc.py3
-rw-r--r--cinder/volume/drivers/dell_emc/vmax/iscsi.py3
-rw-r--r--cinder/volume/drivers/dell_emc/vmax/rest.py19
-rw-r--r--releasenotes/notes/bug-fix-1867163-27afa39ac77b9e15.yaml5
5 files changed, 50 insertions, 9 deletions
diff --git a/cinder/tests/unit/volume/drivers/dell_emc/vmax/test_vmax.py b/cinder/tests/unit/volume/drivers/dell_emc/vmax/test_vmax.py
index 563e3dee1..22171432d 100644
--- a/cinder/tests/unit/volume/drivers/dell_emc/vmax/test_vmax.py
+++ b/cinder/tests/unit/volume/drivers/dell_emc/vmax/test_vmax.py
@@ -685,6 +685,15 @@ class VMAXCommonData(object):
headroom = {"headroom": [{"headroomCapacity": 20348.29}]}
+ volume_details_legacy = {'cap_gb': 2,
+ 'num_of_storage_groups': 1,
+ 'volumeId': device_id,
+ 'volume_identifier': test_volume.id,
+ 'wwn': volume_wwn,
+ 'snapvx_target': 'false',
+ 'snapvx_source': 'false',
+ 'storageGroupId': []}
+
class FakeLookupService(object):
def get_device_mapping_from_network(self, initiator_wwns, target_wwns):
@@ -2953,6 +2962,26 @@ class VMAXRestTest(test.TestCase):
self.assertEqual(self.rest.get_vmax_model(self.data.array),
reference)
+ def test_check_volume_device_id_legacy_case(self):
+ element_name = self.utils.get_volume_element_name(
+ self.data.test_volume.id)
+ with mock.patch.object(self.rest, 'get_volume',
+ return_value=self.data.volume_details_legacy):
+ found_dev_id = self.rest.check_volume_device_id(
+ self.data.array, self.data.device_id, element_name)
+ self.assertEqual(self.data.device_id, found_dev_id)
+
+ def test_check_volume_device_id_legacy_case_no_match(self):
+ element_name = self.utils.get_volume_element_name(
+ self.data.test_volume.id)
+ volume_details_no_match = deepcopy(self.data.volume_details_legacy)
+ volume_details_no_match['volume_identifier'] = 'no_match'
+ with mock.patch.object(self.rest, 'get_volume',
+ return_value=volume_details_no_match):
+ found_dev_id = self.rest.check_volume_device_id(
+ self.data.array, self.data.device_id, element_name)
+ self.assertIsNone(found_dev_id)
+
class VMAXProvisionTest(test.TestCase):
def setUp(self):
diff --git a/cinder/volume/drivers/dell_emc/vmax/fc.py b/cinder/volume/drivers/dell_emc/vmax/fc.py
index 66f52ee79..a81658376 100644
--- a/cinder/volume/drivers/dell_emc/vmax/fc.py
+++ b/cinder/volume/drivers/dell_emc/vmax/fc.py
@@ -101,9 +101,10 @@ class VMAXFCDriver(san.SanDriver, driver.FibreChannelDriver):
- Fix for initiator retrieval and short hostname unmapping
(bugs #1783855 #1783867)
- Fix for HyperMax OS Upgrade Bug (bug #1790141)
+ 3.1.2 - Legacy volume not found fix (#1867163)
"""
- VERSION = "3.1.1"
+ VERSION = "3.1.2"
# ThirdPartySystems wiki
CI_WIKI_NAME = "EMC_VMAX_CI"
diff --git a/cinder/volume/drivers/dell_emc/vmax/iscsi.py b/cinder/volume/drivers/dell_emc/vmax/iscsi.py
index 1656330ea..21ae7b3f3 100644
--- a/cinder/volume/drivers/dell_emc/vmax/iscsi.py
+++ b/cinder/volume/drivers/dell_emc/vmax/iscsi.py
@@ -106,9 +106,10 @@ class VMAXISCSIDriver(san.SanISCSIDriver):
- Fix for initiator retrieval and short hostname unmapping
(bugs #1783855 #1783867)
- Fix for HyperMax OS Upgrade Bug (bug #1790141)
+ 3.1.2 - Legacy volume not found fix (#1867163)
"""
- VERSION = "3.1.1"
+ VERSION = "3.1.2"
# ThirdPartySystems wiki
CI_WIKI_NAME = "EMC_VMAX_CI"
diff --git a/cinder/volume/drivers/dell_emc/vmax/rest.py b/cinder/volume/drivers/dell_emc/vmax/rest.py
index 5c0055a13..f60b884fc 100644
--- a/cinder/volume/drivers/dell_emc/vmax/rest.py
+++ b/cinder/volume/drivers/dell_emc/vmax/rest.py
@@ -754,14 +754,19 @@ class VMAXRest(object):
LOG.debug('Element name = %(en)s, Vol identifier = %(vi)s, '
'Device id = %(di)s, vol details = %(vd)s',
{'en': element_name, 'vi': vol_identifier,
- 'di': device_id, 'vd': vol_details})
- if vol_identifier == element_name:
- found_device_id = device_id
- elif name_id:
- # This may be host-assisted migration case
- element_name = self.utils.get_volume_element_name(name_id)
- if vol_identifier == element_name:
+ 'di': device_id})
+ if vol_identifier:
+ if vol_identifier in element_name:
found_device_id = device_id
+ if vol_identifier != element_name:
+ LOG.debug("Device %(di)s is a legacy volume created "
+ "using SMI-S.",
+ {'di': device_id})
+ elif name_id:
+ # This may be host-assisted migration case
+ element_name = self.utils.get_volume_element_name(name_id)
+ if vol_identifier == element_name:
+ found_device_id = device_id
return found_device_id
def add_vol_to_sg(self, array, storagegroup_name, device_id, extra_specs):
diff --git a/releasenotes/notes/bug-fix-1867163-27afa39ac77b9e15.yaml b/releasenotes/notes/bug-fix-1867163-27afa39ac77b9e15.yaml
new file mode 100644
index 000000000..f10eb92d9
--- /dev/null
+++ b/releasenotes/notes/bug-fix-1867163-27afa39ac77b9e15.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+ - |
+ PowerMax Driver - Issue with upgrades from pre Pike to Pike and later.
+ The device is not found when trying to snapshot a legacy volume.