diff --git a/cinder/tests/unit/volume/drivers/dell_emc/powermax/test_powermax_common.py b/cinder/tests/unit/volume/drivers/dell_emc/powermax/test_powermax_common.py index 9c5d146d68a..97788548894 100644 --- a/cinder/tests/unit/volume/drivers/dell_emc/powermax/test_powermax_common.py +++ b/cinder/tests/unit/volume/drivers/dell_emc/powermax/test_powermax_common.py @@ -1624,6 +1624,34 @@ class PowerMaxCommonTest(test.TestCase): self.data.extra_specs, snap_name) self.assertEqual(ref_response, (clone_dict, rep_update, rep_info_dict)) + @mock.patch.object( + rest.PowerMaxRest, 'get_slo_list', return_value=['Diamond']) + @mock.patch.object( + common.PowerMaxCommon, '_create_volume', + return_value=(tpd.PowerMaxData.rep_info_dict, + tpd.PowerMaxData.replication_update, + tpd.PowerMaxData.rep_info_dict)) + @mock.patch.object(rest.PowerMaxRest, 'rdf_resume_with_retries') + @mock.patch.object(rest.PowerMaxRest, 'srdf_suspend_replication') + @mock.patch.object(rest.PowerMaxRest, 'wait_for_rdf_pair_sync') + def test_create_replica_rep_enabled( + self, mck_wait, mck_susp, mck_res, mck_create, mck_slo): + array = self.data.array + clone_volume = self.data.test_clone_volume + source_device_id = self.data.device_id + snap_name = self.data.snap_location['snap_name'] + extra_specs = deepcopy(self.data.rep_extra_specs_rep_config) + __, rep_extra_specs, __, __ = self.common.prepare_replication_details( + extra_specs) + rdfg = extra_specs['rdf_group_no'] + self.common._create_replica( + array, clone_volume, source_device_id, rep_extra_specs, snap_name) + mck_wait.assert_called_once_with( + array, rdfg, source_device_id, rep_extra_specs) + mck_susp.assert_called_once_with( + array, rep_extra_specs['sg_name'], rdfg, rep_extra_specs) + mck_res.assert_called_once_with(array, rep_extra_specs) + def test_create_replica_no_snap_name(self): array = self.data.array clone_volume = self.data.test_clone_volume diff --git a/cinder/volume/drivers/dell_emc/powermax/common.py b/cinder/volume/drivers/dell_emc/powermax/common.py index 702565b5316..862225ac788 100644 --- a/cinder/volume/drivers/dell_emc/powermax/common.py +++ b/cinder/volume/drivers/dell_emc/powermax/common.py @@ -2721,6 +2721,9 @@ class PowerMaxCommon(object): rep_extra_specs['sg_name'] = ( self.utils.get_rdf_management_group_name( rep_extra_specs[utils.REP_CONFIG])) + self.rest.wait_for_rdf_pair_sync( + array, rep_extra_specs['rdf_group_no'], target_device_id, + rep_extra_specs) self.rest.srdf_suspend_replication( array, rep_extra_specs['sg_name'], rep_extra_specs['rdf_group_no'], rep_extra_specs) diff --git a/cinder/volume/drivers/dell_emc/powermax/fc.py b/cinder/volume/drivers/dell_emc/powermax/fc.py index 03ce880af40..e6ed3add694 100644 --- a/cinder/volume/drivers/dell_emc/powermax/fc.py +++ b/cinder/volume/drivers/dell_emc/powermax/fc.py @@ -131,9 +131,10 @@ class PowerMaxFCDriver(san.SanDriver, driver.FibreChannelDriver): 4.2.7 - Fix to enable legacy volumes to live migrate (#1867163) 4.2.8 - Force flag to add to rep enable storage groups (#1892057) 4.2.9 - Failover group volume update (#1888831) + 4.2.10 - Replica RDFG suspend fix (#1892718) """ - VERSION = "4.2.9" + VERSION = "4.2.10" # ThirdPartySystems wiki CI_WIKI_NAME = "EMC_VMAX_CI" diff --git a/cinder/volume/drivers/dell_emc/powermax/iscsi.py b/cinder/volume/drivers/dell_emc/powermax/iscsi.py index 8aea5c84b0c..3df5f8ac33a 100644 --- a/cinder/volume/drivers/dell_emc/powermax/iscsi.py +++ b/cinder/volume/drivers/dell_emc/powermax/iscsi.py @@ -136,9 +136,10 @@ class PowerMaxISCSIDriver(san.SanISCSIDriver): 4.2.7 - Fix to enable legacy volumes to live migrate (#1867163) 4.2.8 - Force flag to add to rep enable storage groups (#1892057) 4.2.9 - Failover group volume update (#1888831) + 4.2.10 - Replica RDFG suspend fix (#1892718) """ - VERSION = "4.2.9" + VERSION = "4.2.10" # ThirdPartySystems wiki CI_WIKI_NAME = "EMC_VMAX_CI"