diff --git a/nova_powervm/tests/virt/powervm/volume/test_npiv.py b/nova_powervm/tests/virt/powervm/volume/test_npiv.py index 2a560f44..0f19a838 100644 --- a/nova_powervm/tests/virt/powervm/volume/test_npiv.py +++ b/nova_powervm/tests/virt/powervm/volume/test_npiv.py @@ -469,6 +469,7 @@ class TestNPIVAdapter(test_vol.TestVolumeAdapter): dest_mig_data = {} mock_build_mig_map.side_effect = [['a'], ['b']] + self.vol_drv.stg_ftsk = mock.MagicMock() # Execute the test self.vol_drv.pre_live_migration_on_destination( @@ -481,6 +482,9 @@ class TestNPIVAdapter(test_vol.TestVolumeAdapter): self.assertEqual({'b', 'a'}, set(dest_mig_data.get('vfc_lpm_mappings'))) + # Verify that on migration, the WWPNs are reversed. + self.assertEqual(2, self.vol_drv.stg_ftsk.feed.reverse.call_count) + def test_set_fabric_meta(self): port_map = [('1', 'aa AA'), ('2', 'bb BB'), ('3', 'cc CC'), ('4', 'dd DD'), diff --git a/nova_powervm/virt/powervm/volume/npiv.py b/nova_powervm/virt/powervm/volume/npiv.py index 35501425..557646ca 100644 --- a/nova_powervm/virt/powervm/volume/npiv.py +++ b/nova_powervm/virt/powervm/volume/npiv.py @@ -145,6 +145,9 @@ class NPIVVolumeAdapter(v_driver.FibreChannelVolumeAdapter): fabric_mapping = pvm_vfcm.build_migration_mappings_for_fabric( vios_wraps, self._fabric_ports(fabric), slots) dest_mig_data['npiv_fabric_mapping_%s' % fabric] = fabric_mapping + # Reverse the vios wrapper so that the other fabric will get the + # on the second vios. + vios_wraps.reverse() # Collate all of the individual fabric mappings into a single element. full_map = []