diff --git a/nova/tests/unit/virt/vmwareapi/test_driver_api.py b/nova/tests/unit/virt/vmwareapi/test_driver_api.py index a0c20a9d467d..375d29cf495e 100644 --- a/nova/tests/unit/virt/vmwareapi/test_driver_api.py +++ b/nova/tests/unit/virt/vmwareapi/test_driver_api.py @@ -1593,6 +1593,17 @@ class VMwareAPIVMTestCase(test.NoDBTestCase, self._destroy_instance_without_vm_ref( task_state=task_states.RESIZE_REVERTING) + def test_destroy_instance_with_vm_ref_and_with_volumes(self): + self.destroy_disks = True + self._create_instance() + bdi = {'block_device_mapping': ['foo']} + with mock.patch.object(self.conn._vmops, + "destroy") as mock_destroy: + self.conn.destroy(self.context, self.instance, self.network_info, + bdi, self.destroy_disks) + mock_destroy.assert_called_once_with(self.instance, + self.destroy_disks) + def _rescue(self, config_drive=False): # validate that the power on is only called once self._power_on = vm_util.power_on_instance diff --git a/nova/virt/vmwareapi/driver.py b/nova/virt/vmwareapi/driver.py index 852c3d33a537..fee9bcc7005f 100644 --- a/nova/virt/vmwareapi/driver.py +++ b/nova/virt/vmwareapi/driver.py @@ -623,7 +623,8 @@ class VMwareVCDriver(driver.ComputeDriver): if block_device_info is not None: try: self._detach_instance_volumes(instance, block_device_info) - except vexc.ManagedObjectNotFoundException: + except (vexc.ManagedObjectNotFoundException, + exception.InstanceNotFound): LOG.warning('Instance does not exists. Proceeding to ' 'delete instance properties on datastore', instance=instance)