Ravi Nori has uploaded a new change for review. Change subject: engine : Change CreateAllSnapshotsFromVmCommand to persist all placeholders ......................................................................
engine : 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: I1f9524667922b99bfe47fc3659f7969efef72996 Signed-off-by: Ravi Nori <[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/CreateSnapshotCommand.java 2 files changed, 36 insertions(+), 8 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/41/14841/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 affbf5d..1436477 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; @@ -93,6 +94,30 @@ getVmStaticDAO().incrementDbGeneration(getVm().getId()); } + Map<Guid, CommandBase<?>> diskIdsToCommandMap = new HashMap<>(); + + @Override + protected void insertAsyncTaskPlaceHolders() { + Guid vmSnapshotId = Guid.NewGuid(); + for (DiskImage image : getDisksList()) { + diskIdsToCommandMap.put(image.getImageId(), + constructCommand(VdcActionType.CreateSnapshot, + buildCreateSnapshotParameters(image, vmSnapshotId), + true, + ExecutionHandler.createDefaultContexForTasks(getExecutionContext()))); + } + + TransactionSupport.executeInNewTransaction(new TransactionMethod<Void>() { + @Override + public Void runInTransaction() { + for (DiskImage diskImage : getDisksList()) { + checkCanDoActionInsertAsyncTaskPlaceHolders(diskIdsToCommandMap.get(diskImage.getImageId())); + } + return null; + } + }); + } + @Override protected void executeVmCommand() { Guid newActiveSnapshotId = Guid.NewGuid(); @@ -136,10 +161,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(diskIdsToCommandMap.get(image.getImageId())); if (vdcReturnValue.getSucceeded()) { getTaskIdList().addAll(vdcReturnValue.getInternalTaskIdList()); 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 57635a4..832fe0b 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 @@ -46,6 +46,16 @@ return (ImagesContainterParametersBase) ((tempVar instanceof ImagesContainterParametersBase) ? tempVar : null); } + Guid taskId; + + @Override + protected void insertAsyncTaskPlaceHolders() { + taskId = this.createAsyncTask(getParameters().getParentCommand(), + VdcObjectType.Storage, + getParameters().getStorageDomainId(), + getParameters().getDestinationImageId()); + } + @Override protected void executeCommand() { if (canCreateSnapshot()) { @@ -88,10 +98,6 @@ VDSReturnValue vdsReturnValue = null; try { - Guid taskId = this.createAsyncTask(getParameters().getParentCommand(), - VdcObjectType.Storage, - getParameters().getStorageDomainId(), - getParameters().getDestinationImageId()); getReturnValue().getAsyncTaskIdList().add(taskId); -- To view, visit http://gerrit.ovirt.org/14841 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1f9524667922b99bfe47fc3659f7969efef72996 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Ravi Nori <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
