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
