Federico Simoncelli has uploaded a new change for review.

Change subject: backend: prevent live migrate on live snapshot failure
......................................................................

backend: prevent live migrate on live snapshot failure

Change-Id: I7c69f663836e74691c968f4a15c5f3012479a8b0
Signed-off-by: Federico Simoncelli <[email protected]>
---
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/lsm/LiveMigrateDisksTaskHandler.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveSnapshotTaskHandler.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/CreateAllSnapshotsFromVmParameters.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/LiveMigrateVmDisksParameters.java
5 files changed, 30 insertions(+), 4 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/68/20668/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 364d65b..9703995 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
@@ -308,15 +308,15 @@
     protected void performLiveSnapshot(final Snapshot snapshot) {
         try {
             TransactionSupport.executeInScope(TransactionScopeOption.Suppress, 
new TransactionMethod<Void>() {
-
                 @Override
                 public Void runInTransaction() {
-
                     runVdsCommand(VDSCommandType.Snapshot, 
buildLiveSnapshotParameters(snapshot));
+                    getParameters().setLiveSnapshotSucceeded(true);
                     return null;
                 }
             });
         } catch (VdcBLLException e) {
+            getParameters().setLiveSnapshotSucceeded(false);
             handleVdsLiveSnapshotFailure(e);
         }
     }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateDisksTaskHandler.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateDisksTaskHandler.java
index cee277d..74eea19 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateDisksTaskHandler.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateDisksTaskHandler.java
@@ -10,6 +10,8 @@
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.action.VdcReturnValueBase;
 import org.ovirt.engine.core.common.asynctasks.AsyncTaskType;
+import org.ovirt.engine.core.common.errors.VdcBLLException;
+import org.ovirt.engine.core.common.errors.VdcBllErrors;
 import org.ovirt.engine.core.utils.log.Log;
 import org.ovirt.engine.core.utils.log.LogFactory;
 
@@ -24,6 +26,11 @@
 
     @Override
     public void execute() {
+        if (!enclosingCommand.getParameters().getLiveSnapshotSucceeded()) {
+            throw new VdcBLLException(VdcBllErrors.imageErr,
+                "Auto-generated live snapshot for VM " + 
enclosingCommand.getParameters().getVmId() + " failed");
+        }
+
         for (LiveMigrateDiskParameters parameters : 
enclosingCommand.getParameters().getParametersList()) {
             CommandContext commandContext = 
ExecutionHandler.createInternalJobContext();
             ExecutionHandler.setAsyncJob(commandContext.getExecutionContext(), 
true);
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveSnapshotTaskHandler.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveSnapshotTaskHandler.java
index 8554c29..0e724d8 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveSnapshotTaskHandler.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveSnapshotTaskHandler.java
@@ -66,9 +66,10 @@
     }
 
     private void endCreateAllSnapshots() {
-        Backend.getInstance().endAction(VdcActionType.CreateAllSnapshotsFromVm,
-                getCreateSnapshotParameters(),
+        CreateAllSnapshotsFromVmParameters snapshotsParameters = 
getCreateSnapshotParameters();
+        
Backend.getInstance().endAction(VdcActionType.CreateAllSnapshotsFromVm, 
snapshotsParameters,
                 
ExecutionHandler.createDefaultContexForTasks(enclosingCommand.getExecutionContext()));
+        
enclosingCommand.getParameters().setLiveSnapshotSucceeded(snapshotsParameters.getLiveSnapshotSucceeded());
     }
 
     @Override
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/CreateAllSnapshotsFromVmParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/CreateAllSnapshotsFromVmParameters.java
index d445c77..c619034 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/CreateAllSnapshotsFromVmParameters.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/CreateAllSnapshotsFromVmParameters.java
@@ -27,6 +27,8 @@
     /** Used to indicate whether the memory should be saved as part of this 
snapshot or not */
     private boolean saveMemory;
 
+    private boolean liveSnapshotSucceeded;
+
     public CreateAllSnapshotsFromVmParameters() {
         needsLocking = true;
     }
@@ -74,4 +76,12 @@
     public void setNeedsLocking(boolean needsLocking) {
         this.needsLocking = needsLocking;
     }
+
+    public boolean getLiveSnapshotSucceeded() {
+        return liveSnapshotSucceeded;
+    }
+
+    public void setLiveSnapshotSucceeded(boolean liveSnapshotSucceeded) {
+        this.liveSnapshotSucceeded = liveSnapshotSucceeded;
+    }
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/LiveMigrateVmDisksParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/LiveMigrateVmDisksParameters.java
index 6bf2247..c67fce4 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/LiveMigrateVmDisksParameters.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/LiveMigrateVmDisksParameters.java
@@ -9,6 +9,7 @@
 
     private List<LiveMigrateDiskParameters> parametersList;
     private Guid vmId;
+    private boolean liveSnapshotSucceeded;
 
     public LiveMigrateVmDisksParameters() {
         // Empty constructor for serializing / deserializing
@@ -35,5 +36,12 @@
         this.vmId = vmId;
     }
 
+    public boolean getLiveSnapshotSucceeded() {
+        return liveSnapshotSucceeded;
+    }
+
+    public void setLiveSnapshotSucceeded(boolean liveSnapshotSucceeded) {
+        this.liveSnapshotSucceeded = liveSnapshotSucceeded;
+    }
 }
 


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

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

Reply via email to