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