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.

(cherry picked from commit 25a4f0dc530951e87fe357313dc983cb75aa8972)
Signed-off-by: Rohit Yadav <[email protected]>


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/865940d0
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/865940d0
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/865940d0

Branch: refs/heads/4.5
Commit: 865940d0888f5727597874575fff1140dab41839
Parents: d928f5b
Author: Likitha Shetty <[email protected]>
Authored: Tue Dec 30 14:16:00 2014 +0530
Committer: Rohit Yadav <[email protected]>
Committed: Mon Apr 13 15:44:09 2015 +0530

----------------------------------------------------------------------
 .../hypervisor/vmware/manager/VmwareStorageManagerImpl.java   | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/865940d0/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java
----------------------------------------------------------------------
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 1981303..3aec7a4 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);
+                    }
                 }
             }
 

Reply via email to