PowerMax Driver - Fix assign SRP during promotion retype

SRP is not assigned during failover-promotion retype. In cases
where SRP is different between primary and remote arrays this
can lead to issues once failover-promotion is finalized. Fixed
by adding SRP assignment when generating volume's model update.

Change-Id: Id0500c2f85974818fa2a841c9dca77f1fef4df04
Closes-Bug: 1905564
This commit is contained in:
odonos12 2020-11-25 13:20:51 +00:00
parent 30501b9ecd
commit 00ad39a600
3 changed files with 13 additions and 2 deletions

View File

@ -1186,15 +1186,16 @@ class PowerMaxReplicationTest(test.TestCase):
return_value=(True, tpd.PowerMaxData.defaultstoragegroup_name)) return_value=(True, tpd.PowerMaxData.defaultstoragegroup_name))
def test_migrate_volume_success_rep_promotion( def test_migrate_volume_success_rep_promotion(
self, mck_retype, mck_get, mck_break, mck_valid): self, mck_retype, mck_get, mck_break, mck_valid):
array_id = self.data.array array_id = self.data.remote_array
volume = self.data.test_rep_volume volume = self.data.test_rep_volume
device_id = self.data.device_id device_id = self.data.device_id
srp = self.data.srp srp = 'SRP_2'
target_slo = self.data.slo_silver target_slo = self.data.slo_silver
target_workload = self.data.workload target_workload = self.data.workload
volume_name = volume.name volume_name = volume.name
new_type = {'extra_specs': {}} new_type = {'extra_specs': {}}
extra_specs = self.data.rep_extra_specs_rep_config extra_specs = self.data.rep_extra_specs_rep_config
updated_host = 'HostX@Backend#Diamond+DSS+SRP_2+000197800124'
self.common.promotion = True self.common.promotion = True
target_extra_specs = { target_extra_specs = {
utils.SRP: srp, utils.ARRAY: array_id, utils.SLO: target_slo, utils.SRP: srp, utils.ARRAY: array_id, utils.SLO: target_slo,
@ -1205,6 +1206,7 @@ class PowerMaxReplicationTest(test.TestCase):
success, model_update = self.common._migrate_volume( success, model_update = self.common._migrate_volume(
array_id, volume, device_id, srp, target_slo, target_workload, array_id, volume, device_id, srp, target_slo, target_workload,
volume_name, new_type, extra_specs) volume_name, new_type, extra_specs)
self.assertEqual(model_update['host'], updated_host)
mck_break.assert_called_once_with( mck_break.assert_called_once_with(
array_id, device_id, volume_name, extra_specs) array_id, device_id, volume_name, extra_specs)
mck_retype.assert_called_once_with( mck_retype.assert_called_once_with(

View File

@ -4086,7 +4086,9 @@ class PowerMaxCommon(object):
previous_host = volume.get('host') previous_host = volume.get('host')
host_details = previous_host.split('+') host_details = previous_host.split('+')
array_index = len(host_details) - 1 array_index = len(host_details) - 1
srp_index = len(host_details) - 2
host_details[array_index] = array host_details[array_index] = array
host_details[srp_index] = srp
updated_host = '+'.join(host_details) updated_host = '+'.join(host_details)
model_update['host'] = updated_host model_update['host'] = updated_host

View File

@ -0,0 +1,7 @@
---
fixes:
- |
PowerMax Driver `bug #1905564
<https://bugs.launchpad.net/cinder/+bug/1905564>`_: Fix
Fix remote SRP not being assigned to volume's Host when
performing retype during failover-promotion.