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:
parent
30501b9ecd
commit
00ad39a600
@ -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(
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
7
releasenotes/notes/bug-1905564-e7dcf28fd734d3b2.yaml
Normal file
7
releasenotes/notes/bug-1905564-e7dcf28fd734d3b2.yaml
Normal 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.
|
Loading…
Reference in New Issue
Block a user