diff --git a/nova/tests/unit/virt/vmwareapi/test_volumeops.py b/nova/tests/unit/virt/vmwareapi/test_volumeops.py index fd77337b08..7a14b1ff57 100644 --- a/nova/tests/unit/virt/vmwareapi/test_volumeops.py +++ b/nova/tests/unit/virt/vmwareapi/test_volumeops.py @@ -538,6 +538,8 @@ class VMwareVolumeOpsTestCase(test.NoDBTestCase): rp = mock.sentinel.rp get_res_pool_of_host.return_value = rp + detach_disk_from_vm.side_effect = [ + oslo_vmw_exceptions.FileNotFoundException] instance = self._instance volume_ref = mock.sentinel.volume_ref vm_ref = mock.sentinel.vm_ref diff --git a/nova/virt/vmwareapi/volumeops.py b/nova/virt/vmwareapi/volumeops.py index 7aa1b1193a..221fa4a7bc 100644 --- a/nova/virt/vmwareapi/volumeops.py +++ b/nova/virt/vmwareapi/volumeops.py @@ -491,8 +491,12 @@ class VMwareVolumeOps(object): # Volume's backing is relocated now; detach the old vmdk if not done # already. if not detached: - self.detach_disk_from_vm(volume_ref, instance, original_device, - destroy_disk=True) + try: + self.detach_disk_from_vm(volume_ref, instance, + original_device, destroy_disk=True) + except oslo_vmw_exceptions.FileNotFoundException: + LOG.debug("Original volume backing %s is missing, no need " + "to detach it", original_device.backing.fileName) # Attach the current volume to the volume_ref self.attach_disk_to_vm(volume_ref, instance,