From d4bbc6a4741e89039cccc8557919fa3678b155c8 Mon Sep 17 00:00:00 2001 From: PaulPickhardt Date: Fri, 3 Jul 2026 15:33:10 +0200 Subject: [PATCH] libvirt: ignore InstanceNotFound for BFV cold migration For boot-from-volume instances there are no local disks to copy to the destination host, so InstanceNotFound is safe to ignore and an empty disk list is returned instead. Change-Id: If20d5802aa1d17f6252e52ad66c7b0c3c42a29d7 --- nova/virt/libvirt/driver.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py index bf39a475310..527a1de140a 100644 --- a/nova/virt/libvirt/driver.py +++ b/nova/virt/libvirt/driver.py @@ -11795,7 +11795,21 @@ def migrate_disk_and_power_off(self, context, instance, migration, connection_info = vol['connection_info'] self._disconnect_volume(context, connection_info, instance) - disk_info = self._get_instance_disk_info(instance, block_device_info) + # For boot-from-volume instances the domain may already be gone from + # libvirt (e.g. on a migration retry) but there are no local disks to + # copy, so InstanceNotFound is safe to ignore here. + if booted_from_volume: + try: + disk_info = self._get_instance_disk_info(instance, + block_device_info) + except exception.InstanceNotFound: + LOG.debug('Libvirt domain not found for boot-from-volume ' + 'instance during migration, no local disks to ' + 'copy.', instance=instance) + disk_info = [] + else: + disk_info = self._get_instance_disk_info(instance, + block_device_info) try: # If cleanup failed in previous resize attempts we try to remedy