Maor Lipchuk has uploaded a new change for review.

Change subject: core: Support Cinder disks for snapshot in VM
......................................................................

core: Support Cinder disks for snapshot in VM

Add Cinder for Creating snapshot when CreateAllSnapshotsFromVmCommand is being 
called.

Change-Id: Ie60a82160db24c410e10d79da49f528bc2ed22fc
Bug-Url: https://bugzilla.redhat.com/??????
Signed-off-by: Maor Lipchuk <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java
1 file changed, 18 insertions(+), 13 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/83/40983/1

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 b02969c..4169a21 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
@@ -217,7 +217,11 @@
         fastForwardDisksToActiveSnapshot();
         memoryImageBuilder.build();
 
-        if (getTaskIdList().isEmpty()) {
+        // means that there are no asynchronous tasks to execute and that we 
can
+        // end the command synchronously
+        boolean pendingAsyncTasks = 
!getReturnValue().getVdsmTaskIdList().isEmpty() ||
+                
!CommandCoordinatorUtil.getChildCommandIds(getCommandId()).isEmpty();
+        if (!pendingAsyncTasks) {
             getParameters().setTaskGroupSuccess(true);
             incrementVmGeneration();
         }
@@ -265,33 +269,28 @@
     }
 
     private void createSnapshotsForDisks() {
-        for (DiskImage image : getDisksList()) {
-            if (image.getDiskStorageType() == DiskStorageType.CINDER) {
+        for (DiskImage disk : getDisksList()) {
+            if (disk.getDiskStorageType() == DiskStorageType.CINDER) {
                 ImagesContainterParametersBase params = 
buildChildCommandParameters(disk);
                 Future<VdcReturnValueBase> future = 
CommandCoordinatorUtil.executeAsyncCommand(
-                        VdcActionType.CloneSingleCinderDisk,
+                        VdcActionType.CreateCinderSnapshot,
                         params,
                         cloneContextAndDetachFromParent());
                 try {
                     VdcReturnValueBase vdcReturnValueBase = future.get();
                     if (!vdcReturnValueBase.getSucceeded()) {
-                        log.error("Error cloning Cinder disk '{}': {}", 
disk.getDiskAlias());
+                        log.error("Error creating snapshot for Cinder disk 
'{}'", disk.getDiskAlias());
                         
getReturnValue().setFault(vdcReturnValueBase.getFault());
-                        isSucceeded = false;
                         break;
                     }
-                    Guid imageId = vdcReturnValueBase.getActionReturnValue();
-                    diskImageMap.put(disk.getId(), imageId);
                 } catch (InterruptedException | ExecutionException e) {
-                    log.error("Error cloning Cinder disk '{}': {}", 
disk.getDiskAlias(), e.getMessage());
-                    isSucceeded = false;
+                    log.error("Error creating snapshot for Cinder disk '{}': 
{}", disk.getDiskAlias(), e.getMessage());
                 }
-
-
+                continue;
             }
             VdcReturnValueBase vdcReturnValue = 
Backend.getInstance().runInternalAction(
                     VdcActionType.CreateSnapshot,
-                    buildCreateSnapshotParameters(image),
+                    buildCreateSnapshotParameters(disk),
                     
ExecutionHandler.createDefaultContextForTasks(getContext()));
 
             if (vdcReturnValue.getSucceeded()) {
@@ -303,6 +302,12 @@
         }
     }
 
+    private ImagesContainterParametersBase 
buildChildCommandParameters(DiskImage cinderDisk) {
+        ImagesContainterParametersBase createParams = new 
ImagesContainterParametersBase(cinderDisk.getId());
+        
//createParams.setParentHasTasks(!getReturnValue().getVdsmTaskIdList().isEmpty());
+        return withRootCommandInfo(createParams, 
getParameters().getParentCommand());
+    }
+
     private void fastForwardDisksToActiveSnapshot() {
         if (getParameters().getDisks() != null) {
             // Remove disks included in snapshot


-- 
To view, visit https://gerrit.ovirt.org/40983
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie60a82160db24c410e10d79da49f528bc2ed22fc
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Maor Lipchuk <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to