From 366d107a93a9f752e4074bd6d2d4e860a5ae6c29 Mon Sep 17 00:00:00 2001 From: odonos12 Date: Mon, 14 Sep 2020 15:30:37 +0100 Subject: [PATCH] PowerMax Driver - Promotion RDF Group number fix Use remote array SID when finding rdf group number when performing retype during failover. The remote array may potentially be unavailable at this point. Closes-Bug: #1908922 Change-Id: Ie5645e4664b794cfea6babcaa5b483c059b21985 (cherry picked from commit f0652209f4bb54e93206ff01bbc0b3ce281ec36c) --- .../dell_emc/powermax/test_powermax_replication.py | 14 ++++++++++++++ cinder/volume/drivers/dell_emc/powermax/common.py | 4 +++- .../promotion_rdfg_num_fix-65a5838277ac8edf.yaml | 6 ++++++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 releasenotes/notes/promotion_rdfg_num_fix-65a5838277ac8edf.yaml diff --git a/cinder/tests/unit/volume/drivers/dell_emc/powermax/test_powermax_replication.py b/cinder/tests/unit/volume/drivers/dell_emc/powermax/test_powermax_replication.py index fab53262560..6595e85b80f 100644 --- a/cinder/tests/unit/volume/drivers/dell_emc/powermax/test_powermax_replication.py +++ b/cinder/tests/unit/volume/drivers/dell_emc/powermax/test_powermax_replication.py @@ -494,6 +494,20 @@ class PowerMaxReplicationTest(test.TestCase): extra_specs1, rep_config) self.assertEqual(ref_specs2, rep_extra_specs2) + @mock.patch.object(common.PowerMaxCommon, 'get_rdf_details', + return_value=(1, True)) + @mock.patch.object(rest.PowerMaxRest, + 'get_array_model_info', + return_value=('VMAX250F', False)) + def test_get_replication_extra_specs_get_rdf_group_promotion( + self, mock_model, mck_rdf): + self.common.promotion = True + remote_array = self.data.remote_array + rep_config = self.data.rep_config_sync + extra_specs1 = deepcopy(self.extra_specs) + self.common._get_replication_extra_specs(extra_specs1, rep_config) + mck_rdf.assert_called_with(remote_array, rep_config) + @mock.patch.object(rest.PowerMaxRest, 'get_array_model_info', return_value=('PowerMax 2000', True)) diff --git a/cinder/volume/drivers/dell_emc/powermax/common.py b/cinder/volume/drivers/dell_emc/powermax/common.py index 5d7e6551a9f..aa3fa933ae7 100644 --- a/cinder/volume/drivers/dell_emc/powermax/common.py +++ b/cinder/volume/drivers/dell_emc/powermax/common.py @@ -5386,9 +5386,11 @@ class PowerMaxCommon(object): rep_extra_specs[utils.PORTGROUPNAME] = rep_config['portgroup'] # Get the RDF Group label & number + array = (rep_config[utils.ARRAY] if self.promotion else + extra_specs[utils.ARRAY]) rep_extra_specs['rdf_group_label'] = rep_config['rdf_group_label'] rdf_group_no, __ = self.get_rdf_details( - extra_specs['array'], rep_config) + array, rep_config) rep_extra_specs['rdf_group_no'] = rdf_group_no # Get the SRDF wait/retries settings rep_extra_specs['sync_retries'] = rep_config['sync_retries'] diff --git a/releasenotes/notes/promotion_rdfg_num_fix-65a5838277ac8edf.yaml b/releasenotes/notes/promotion_rdfg_num_fix-65a5838277ac8edf.yaml new file mode 100644 index 00000000000..9d803d773d8 --- /dev/null +++ b/releasenotes/notes/promotion_rdfg_num_fix-65a5838277ac8edf.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + PowerMax Driver - Promotion RDF Group number fix uses remote array + SID when finding rdf group number when performing retype during + failover.