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