From bc4f90aa3e7d1e72b4d43d91784988e47faa596d Mon Sep 17 00:00:00 2001 From: Helen Walsh Date: Fri, 2 Apr 2021 18:14:10 +0100 Subject: [PATCH] PowerMax Driver - Get manageable volumes fix For a PowerMax volume to be manageable it can not be in more than one storage group. Filtering manageable volumes list to remove all devices that are in more than one storage group. Change-Id: I3b480b8f6f01925357651a5c5b2145b249706415 (cherry picked from commit e8e0f8756f071a29216ce8f099102af15a003256) --- .../unit/volume/drivers/dell_emc/powermax/powermax_data.py | 6 ++++++ .../volume/drivers/dell_emc/powermax/test_powermax_utils.py | 5 +++++ cinder/volume/drivers/dell_emc/powermax/utils.py | 3 +++ .../notes/powermax-manageable-volumes-3fb4e5dcf5cc18e3.yaml | 6 ++++++ 4 files changed, 20 insertions(+) create mode 100644 releasenotes/notes/powermax-manageable-volumes-3fb4e5dcf5cc18e3.yaml diff --git a/cinder/tests/unit/volume/drivers/dell_emc/powermax/powermax_data.py b/cinder/tests/unit/volume/drivers/dell_emc/powermax/powermax_data.py index 930797d6bf5..65793a13a69 100644 --- a/cinder/tests/unit/volume/drivers/dell_emc/powermax/powermax_data.py +++ b/cinder/tests/unit/volume/drivers/dell_emc/powermax/powermax_data.py @@ -1269,6 +1269,12 @@ class PowerMaxData(object): 'getDynamicRDFCapability': 'RDF1_Capable', 'RDFA': False}, 'timeFinderInfo': {'snapVXTgt': False, 'snapVXSrc': False}}] + priv_vol_func_response_multi_sg = deepcopy(priv_vol_func_response_single) + priv_vol_func_response_multi_sg[0].get('volumeHeader').update( + {'numStorageGroups': 2}) + priv_vol_func_response_multi_sg[0].get('volumeHeader').update( + {'storageGroup': ['SG1', 'SG2']}) + volume_create_info_dict = {utils.ARRAY: array, utils.DEVICE_ID: device_id} volume_info_dict = { diff --git a/cinder/tests/unit/volume/drivers/dell_emc/powermax/test_powermax_utils.py b/cinder/tests/unit/volume/drivers/dell_emc/powermax/test_powermax_utils.py index e79d9d94c0e..f1cff7afdc3 100644 --- a/cinder/tests/unit/volume/drivers/dell_emc/powermax/test_powermax_utils.py +++ b/cinder/tests/unit/volume/drivers/dell_emc/powermax/test_powermax_utils.py @@ -590,6 +590,11 @@ class PowerMaxUtilsTest(test.TestCase): self.assertFalse( self.utils.is_volume_manageable(volume)) + def test_is_volume_manageable_multi_sg(self): + for volume in self.data.priv_vol_func_response_multi_sg: + self.assertFalse( + self.utils.is_volume_manageable(volume)) + def test_is_snapshot_manageable(self): for volume in self.data.priv_vol_func_response_multi: self.assertTrue( diff --git a/cinder/volume/drivers/dell_emc/powermax/utils.py b/cinder/volume/drivers/dell_emc/powermax/utils.py index b0a7323d43f..6956329addc 100644 --- a/cinder/volume/drivers/dell_emc/powermax/utils.py +++ b/cinder/volume/drivers/dell_emc/powermax/utils.py @@ -1057,6 +1057,9 @@ class PowerMaxUtils(object): if vol_head['userDefinedIdentifier'][0:3] == 'OS-': return False + if vol_head.get('numStorageGroups', 0) > 1: + return False + return True @staticmethod diff --git a/releasenotes/notes/powermax-manageable-volumes-3fb4e5dcf5cc18e3.yaml b/releasenotes/notes/powermax-manageable-volumes-3fb4e5dcf5cc18e3.yaml new file mode 100644 index 00000000000..e917963f8a2 --- /dev/null +++ b/releasenotes/notes/powermax-manageable-volumes-3fb4e5dcf5cc18e3.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + PowerMax driver `bug #1979668 + `_: Fixed + visibility of manageable volumes in multiple storage groups.