From 25a4f0dc530951e87fe357313dc983cb75aa8972 Mon Sep 17 00:00:00 2001 From: Likitha Shetty Date: Tue, 30 Dec 2014 14:16:00 +0530 Subject: [PATCH] CLOUDSTACK-8136. [VMware] Create VM snapshot fails if a previous attempt to take the snapshot failed. While looking for an ongoing VM snapshot task, check the task status to identify if the task is still running. --- .../vmware/manager/VmwareStorageManagerImpl.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java index 19813038300..3aec7a43bc5 100644 --- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java +++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java @@ -37,6 +37,7 @@ import com.vmware.vim25.HostDatastoreBrowserSearchResults; import com.vmware.vim25.HostDatastoreBrowserSearchSpec; import com.vmware.vim25.ManagedObjectReference; import com.vmware.vim25.TaskInfo; +import com.vmware.vim25.TaskInfoState; import com.vmware.vim25.VirtualDisk; import org.apache.cloudstack.storage.to.TemplateObjectTO; @@ -1181,8 +1182,10 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager { TaskInfo info = (TaskInfo)(context.getVimClient().getDynamicProperty(taskMor, "info")); if (info.getEntityName().equals(cmd.getVmName()) && info.getName().equalsIgnoreCase("CreateSnapshot_Task")) { - s_logger.debug("There is already a VM snapshot task running, wait for it"); - context.getVimClient().waitForTask(taskMor); + if (!(info.getState().equals(TaskInfoState.SUCCESS) || info.getState().equals(TaskInfoState.ERROR))) { + s_logger.debug("There is already a VM snapshot task running, wait for it"); + context.getVimClient().waitForTask(taskMor); + } } }