@@ -9546,6 +9546,7 @@ def fake_bdm():
95469546 bdm.connection_info = new_attachment_id
95479547 bdms = objects.BlockDeviceMappingList(objects=[bdm])
95489548
9549+ @mock.patch('nova.objects.InstancePCIRequests.get_by_instance_uuid')
95499550 @mock.patch.object(compute.volume_api, 'attachment_delete')
95509551 @mock.patch.object(compute_utils, 'notify_about_instance_action')
95519552 @mock.patch.object(instance, 'save')
@@ -9557,11 +9558,12 @@ def fake_bdm():
95579558 @mock.patch.object(objects.Instance, 'drop_migration_context')
95589559 def _test(mock_drop_mig_ctxt, mock_get_bdms, mock_net_api,
95599560 mock_remove_conn, mock_usage, mock_instance_save,
9560- mock_action, mock_attach_delete):
9561+ mock_action, mock_attach_delete, mock_get_pci ):
95619562 # this tests that _rollback_live_migration replaces the bdm's
95629563 # attachment_id with the original attachment id that is in
95639564 # migrate_data.
95649565 mock_get_bdms.return_value = bdms
9566+ mock_get_pci.return_value = objects.InstancePCIRequests()
95659567
95669568 compute._rollback_live_migration(self.context, instance, None,
95679569 migrate_data=migrate_data,
@@ -9575,6 +9577,8 @@ def _test(mock_drop_mig_ctxt, mock_get_bdms, mock_net_api,
95759577 self.assertEqual(orig_attachment_id, bdm.connection_info)
95769578 bdm.save.assert_called_once_with()
95779579 mock_drop_mig_ctxt.assert_called_once_with()
9580+ mock_get_pci.assert_called_once_with(self.context, instance.uuid)
9581+ self.assertEqual(mock_get_pci.return_value, instance.pci_requests)
95789582
95799583 _test()
95809584
@@ -9591,13 +9595,14 @@ def test_rollback_live_migration_port_binding_delete_fails(
95919595 migration=self.migration, is_shared_instance_path=True,
95929596 is_shared_block_storage=True)
95939597
9598+ @mock.patch('nova.objects.InstancePCIRequests.get_by_instance_uuid')
95949599 @mock.patch.object(self.compute, '_revert_allocation')
95959600 @mock.patch.object(self.instance, 'save')
95969601 @mock.patch.object(self.compute, 'network_api')
95979602 @mock.patch.object(self.compute, '_notify_about_instance_usage')
95989603 @mock.patch.object(objects.Instance, 'drop_migration_context')
95999604 def _do_test(drop_mig_ctxt, legacy_notify, network_api, instance_save,
9600- _revert_allocation):
9605+ _revert_allocation, mock_get_pci ):
96019606 # setup_networks_on_host is called two times:
96029607 # 1. set the migrating_to attribute in the port binding profile,
96039608 # which is a no-op in this case for neutron
@@ -9606,13 +9611,18 @@ def _do_test(drop_mig_ctxt, legacy_notify, network_api, instance_save,
96069611 None,
96079612 exception.PortBindingDeletionFailed(
96089613 port_id=uuids.port_id, host='fake-dest-host')]
9614+ mock_get_pci.return_value = objects.InstancePCIRequests()
96099615 self.compute._rollback_live_migration(
96109616 self.context, self.instance, 'fake-dest-host', migrate_data,
96119617 source_bdms=objects.BlockDeviceMappingList())
96129618 self.assertEqual(1, mock_log_error.call_count)
96139619 self.assertIn('Network cleanup failed for destination host',
96149620 mock_log_error.call_args[0][0])
96159621 drop_mig_ctxt.assert_called_once_with()
9622+ mock_get_pci.assert_called_once_with(
9623+ self.context, self.instance.uuid)
9624+ self.assertEqual(
9625+ mock_get_pci.return_value, self.instance.pci_requests)
96169626
96179627 _do_test()
96189628
0 commit comments