Ravi Nori has uploaded a new change for review.

Change subject: core: Change CreateAllSnapshotsFromVmCommand to persist all 
placeholders
......................................................................

core: Change CreateAllSnapshotsFromVmCommand to persist all placeholders

This patch changes CreateAllSnapshotsFromVmCommand and its child
CreateSnapshotCommand to persist all async task placeholders
before executing the command on vdsm.

Change-Id: Ia0dda1086792f40a487488ac8a02b6b89dcfa9da
Signed-off-by: Ravi Nori <rn...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddImageFromScratchCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateSnapshotCommand.java
3 files changed, 26 insertions(+), 6 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/63/15563/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddImageFromScratchCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddImageFromScratchCommand.java
index c60ff64..49b4e9b 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddImageFromScratchCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddImageFromScratchCommand.java
@@ -30,6 +30,11 @@
     }
 
     @Override
+    protected void insertAsyncTaskPlaceHolders() {
+        persistAsyncTaskPlaceHolder(getParameters().getParentCommand());
+    }
+
+    @Override
     protected void executeCommand() {
         setImageGroupId(getParameters().getDiskInfo().getId());
         setDestinationImageId(Guid.NewGuid());
@@ -71,7 +76,6 @@
     }
 
     protected boolean processImageInIrs() {
-        persistAsyncTaskPlaceHolder(getParameters().getParentCommand());
         Guid taskId = getAsyncTaskId();
         getReturnValue().getTaskPlaceHolderIdList().add(taskId);
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java
index 0868b18..370cd6f 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java
@@ -3,6 +3,7 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -55,6 +56,7 @@
 public class CreateAllSnapshotsFromVmCommand<T extends 
CreateAllSnapshotsFromVmParameters> extends VmCommand<T> implements 
QuotaStorageDependent {
 
     List<DiskImage> selectedActiveDisks;
+    private Map<Guid, CommandBase<?>> commandsMap = new HashMap<>();
 
     protected CreateAllSnapshotsFromVmCommand(Guid commandId) {
         super(commandId);
@@ -91,6 +93,19 @@
 
     private void incrementVmGeneration() {
         getVmStaticDAO().incrementDbGeneration(getVm().getId());
+    }
+
+    @Override
+    protected Map<Guid, CommandBase<?>> buildChildCommands() {
+        Guid vmSnapshotId = Guid.NewGuid();
+        for (DiskImage image : getDisksList()) {
+            commandsMap.put(image.getImageId(),
+                    constructCommand(VdcActionType.CreateSnapshot,
+                    buildCreateSnapshotParameters(image, vmSnapshotId),
+                    true,
+                    
ExecutionHandler.createDefaultContexForTasks(getExecutionContext())));
+        }
+        return commandsMap;
     }
 
     @Override
@@ -136,10 +151,7 @@
     private void createSnapshotsForDisks(Guid vmSnapshotId) {
         for (DiskImage image : getDisksList()) {
 
-            VdcReturnValueBase vdcReturnValue = 
Backend.getInstance().runInternalAction(
-                            VdcActionType.CreateSnapshot,
-                            buildCreateSnapshotParameters(image, vmSnapshotId),
-                            
ExecutionHandler.createDefaultContexForTasks(getExecutionContext()));
+            VdcReturnValueBase vdcReturnValue = 
runCommand(commandsMap.get(image.getImageId()));
 
             if (vdcReturnValue.getSucceeded()) {
                 
getTaskIdList().addAll(vdcReturnValue.getInternalVdsmTaskIdList());
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateSnapshotCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateSnapshotCommand.java
index ba6051b..924cd58 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateSnapshotCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateSnapshotCommand.java
@@ -47,6 +47,11 @@
     }
 
     @Override
+    protected void insertAsyncTaskPlaceHolders() {
+        persistAsyncTaskPlaceHolder(getParameters().getParentCommand());
+    }
+
+    @Override
     protected void executeCommand() {
         if (canCreateSnapshot()) {
             VDSReturnValue vdsReturnValue = performImageVdsmOperation();
@@ -88,7 +93,6 @@
         VDSReturnValue vdsReturnValue = null;
 
         try {
-            persistAsyncTaskPlaceHolder(getParameters().getParentCommand());
             Guid taskId = getAsyncTaskId();
             getReturnValue().getTaskPlaceHolderIdList().add(taskId);
 


-- 
To view, visit http://gerrit.ovirt.org/15563
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia0dda1086792f40a487488ac8a02b6b89dcfa9da
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Ravi Nori <rn...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to