Ravi Nori has uploaded a new change for review. Change subject: core: Persist all async task place holders ......................................................................
core: Persist all async task place holders Add the infra structure code for persisiting all async task place holder for all child commands before submitting any task to vdsm Change-Id: I66628b98298ed1f500946889604ad906f0a68022 Signed-off-by: Ravi Nori <rn...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AbstractSPMAsyncTaskHandler.java 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/Backend.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateCloneOfTemplateCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateImageTemplateCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateSnapshotCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HibernateVmCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyImageGroupCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MultipleActionsRunner.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveImageCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotSingleDiskCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveTemplateSnapshotCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreFromSnapshotCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommandBase.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateDiskCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateVmDisksCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/TaskHandlerCommand.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/CommandBaseTest.java 20 files changed, 142 insertions(+), 26 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/61/15561/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AbstractSPMAsyncTaskHandler.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AbstractSPMAsyncTaskHandler.java index c96b2ee..7a58726 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AbstractSPMAsyncTaskHandler.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AbstractSPMAsyncTaskHandler.java @@ -36,7 +36,8 @@ if (getEnclosingCommand().getParameters().getTaskGroupSuccess()) { getReturnValue().setSucceeded(false); beforeTask(); - Guid taskId = cmd.persistAsyncTaskPlaceHolder(cmd.getActionType()); + cmd.persistAsyncTaskPlaceHolder(cmd.getActionType()); + Guid taskId = cmd.getAsyncTaskId(); addTask(taskId, Backend.getInstance().getResourceManager() .RunVdsCommand(getVDSCommandType(), getVDSParameters()), false); 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 e2a4973..c60ff64 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 @@ -71,7 +71,8 @@ } protected boolean processImageInIrs() { - Guid taskId = persistAsyncTaskPlaceHolder(getParameters().getParentCommand()); + persistAsyncTaskPlaceHolder(getParameters().getParentCommand()); + Guid taskId = getAsyncTaskId(); getReturnValue().getTaskPlaceHolderIdList().add(taskId); VDSReturnValue vdsReturnValue = runVdsCommand( diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java index f1b2745..db3c6b0 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java @@ -329,6 +329,8 @@ command.setContext(context); ExecutionHandler.prepareCommandForMonitoring(command, actionType, runAsInternal); + command.checkCanDoAction(); + command.insertAsyncTaskPlaceHolders(); returnValue = command.executeAction(); returnValue.setCorrelationId(parameters.getCorrelationId()); returnValue.setJobId(command.getJobId()); @@ -483,6 +485,8 @@ case LoginUser: case LoginAdminUser: CommandBase<?> command = CommandsFactory.CreateCommand(parameters.getActionType(), parameters); + command.checkCanDoAction(); + command.insertAsyncTaskPlaceHolders(); return command.executeAction(); default: return getErrorCommandReturnValue(VdcBllMessages.USER_NOT_AUTHORIZED_TO_PERFORM_ACTION); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java index 3715b1e..1a2bc0b 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -106,6 +107,7 @@ * Multiplier used to convert GB to bytes or vice versa. */ protected static final long BYTES_IN_GB = 1024 * 1024 * 1024; + private static final String DEFAULT_TASK_KEY = "DEFAULT_TASK_KEY"; private static final Guid[] EMPTY_GUID_ARRAY = new Guid[0]; private T _parameters; private VdcReturnValueBase _returnValue; @@ -299,6 +301,12 @@ return _returnValue; } + private boolean actionAllowed = false; + + protected void checkCanDoAction() { + actionAllowed = getReturnValue().getCanDoAction() || internalCanDoAction(); + } + public VdcReturnValueBase executeAction() { determineExecutionReason(); _actionState = CommandActionState.EXECUTE; @@ -306,11 +314,9 @@ getReturnValue().setDescription((tempVar != null) ? tempVar : getReturnValue().getDescription()); setActionMessageParameters(); - boolean actionAllowed = false; Step validatingStep = ExecutionHandler.addStep(getExecutionContext(), StepEnum.VALIDATING, null); try { - actionAllowed = getReturnValue().getCanDoAction() || internalCanDoAction(); ExecutionHandler.endStep(getExecutionContext(), validatingStep, actionAllowed); if (actionAllowed) { @@ -1216,7 +1222,68 @@ return annotation != null && annotation.forceCompensation(); } + /** + * This method is called before executeAction and after checkCanDoAction + * to insert the async task place holders for the child commands. + */ + protected void insertAsyncTaskPlaceHolders() { + TransactionSupport.executeInNewTransaction(new TransactionMethod<Void>() { + @Override + public Void runInTransaction() { + Map<Guid, CommandBase<?>> childCommands = buildChildCommands(); + for (CommandBase<?> command : childCommands.values()) { + command.checkCanDoAction(); + command.insertAsyncTaskPlaceHolders(); + } + return null; + } + }); + } + protected abstract void executeCommand(); + + /** + * Commands can override this method to build a map of all child commands. + * Called from insertAsyncTaskPlaceHolders to build a list of all child + * commands and insert async task place holders for them + * @return + */ + protected Map<Guid, CommandBase<?>> buildChildCommands() { + return Collections.<Guid, CommandBase<?>>emptyMap(); + } + + /** + * Called to construct the child command. + * @param actionType + * @param parameters + * @param runAsInternal + * @param context + * @return + */ + protected CommandBase<?> constructCommand(VdcActionType actionType, + VdcActionParametersBase parameters, + boolean runAsInternal, + CommandContext context) { + ExecutionHandler.evaluateCorrelationId(parameters); + CommandBase<?> command = CommandsFactory.CreateCommand(actionType, parameters); + command.setInternalExecution(runAsInternal); + command.setContext(context); + ExecutionHandler.prepareCommandForMonitoring(command, actionType, runAsInternal); + return command; + } + + /** + * calls execute action the child command. + * @param command + * @param parameters + * @return + */ + protected VdcReturnValueBase runCommand(CommandBase<?> command) { + VdcReturnValueBase returnValue = command.executeAction(); + returnValue.setCorrelationId(command.getParameters().getCorrelationId()); + returnValue.setJobId(command.getJobId()); + return returnValue; + } private void logCommand() { Class<?> type = getClass(); @@ -1270,18 +1337,36 @@ _returnValue.setFault(fault); } - public Guid persistAsyncTaskPlaceHolder(VdcActionType parentCommand) { - Guid retValue = Guid.Empty; + Map<String, Guid> taskKeyToTaskIdMap = new HashMap<>(); + + public void persistAsyncTaskPlaceHolder(VdcActionType parentCommand) { + persistAsyncTaskPlaceHolder(parentCommand, DEFAULT_TASK_KEY); + } + + public void persistAsyncTaskPlaceHolder(VdcActionType parentCommand, String taskKey) { + if (taskKeyToTaskIdMap.containsKey(taskKey)) { + return; + } try { AsyncTasks task = createAsyncTask(new AsyncTaskCreationInfo(), parentCommand); - retValue = task.getTaskId(); + Guid taskId = task.getTaskId(); AsyncTaskUtils.addOrUpdateTaskInDB(task, null, EMPTY_GUID_ARRAY); + taskKeyToTaskIdMap.put(taskKey, taskId); } catch (RuntimeException ex) { - log.errorFormat("Error during persistAsyncTaskPlaceHolders for command: {0}. Exception {1}", this.getClass().getName(), ex); + log.errorFormat("Error during persistAsyncTaskPlaceHolder for command: {0}. Exception {1}", this.getClass().getName(), ex); } + } - return retValue; + public Guid getAsyncTaskId() { + return getAsyncTaskId(DEFAULT_TASK_KEY); + } + + public Guid getAsyncTaskId(String taskKey) { + if (!taskKeyToTaskIdMap.containsKey(taskKey)) { + return Guid.Empty; + } + return taskKeyToTaskIdMap.get(taskKey); } /** @@ -1427,6 +1512,7 @@ asyncTask = DbFacade.getInstance().getAsyncTaskDao().get(taskId); } if (asyncTask != null) { + asyncTask.setaction_type(parentCommand); asyncTask.setVdsmTaskId(asyncTaskCreationInfo.getVdsmTaskId()); asyncTask.setActionParameters(getParentParameters(parentCommand)); asyncTask.setTaskParameters(getParameters()); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateCloneOfTemplateCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateCloneOfTemplateCommand.java index 2c5f9bf..2c51587 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateCloneOfTemplateCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateCloneOfTemplateCommand.java @@ -52,7 +52,8 @@ VDSReturnValue vdsReturnValue = null; try { - Guid taskId = persistAsyncTaskPlaceHolder(VdcActionType.AddVmFromTemplate); + persistAsyncTaskPlaceHolder(VdcActionType.AddVmFromTemplate); + Guid taskId = getAsyncTaskId(); getReturnValue().getTaskPlaceHolderIdList().add(taskId); vdsReturnValue = Backend diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateImageTemplateCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateImageTemplateCommand.java index e8ba26e..0914b25 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateImageTemplateCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateImageTemplateCommand.java @@ -47,7 +47,8 @@ DiskImage newImage = cloneDiskImage(getDestinationImageId()); fillVolumeInformation(newImage); - Guid taskId = persistAsyncTaskPlaceHolder(VdcActionType.AddVmTemplate); + persistAsyncTaskPlaceHolder(VdcActionType.AddVmTemplate); + Guid taskId = getAsyncTaskId(); getReturnValue().getTaskPlaceHolderIdList().add(taskId); VDSReturnValue vdsReturnValue = Backend 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 996d093..ba6051b 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 @@ -88,7 +88,8 @@ VDSReturnValue vdsReturnValue = null; try { - Guid taskId = persistAsyncTaskPlaceHolder(getParameters().getParentCommand()); + persistAsyncTaskPlaceHolder(getParameters().getParentCommand()); + Guid taskId = getAsyncTaskId(); getReturnValue().getTaskPlaceHolderIdList().add(taskId); vdsReturnValue = diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HibernateVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HibernateVmCommand.java index a5d654a..a9d9c48 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HibernateVmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HibernateVmCommand.java @@ -36,6 +36,8 @@ @DisableInPrepareMode @NonTransactiveCommandAttribute(forceCompensation = true) public class HibernateVmCommand<T extends HibernateVmParameters> extends VmOperationCommandBase<T> { + private static final String SAVE_IMAGE_TASK_KEY = "SAVE_IMAGE_TASK_KEY"; + private static final String SAVE_RAM_STATE_TASK_KEY = "SAVE_RAM_STATE_TASK_KEY"; private boolean isHibernateVdsProblematic = false; /** * Constructor for command creation when compensation is applied on startup @@ -101,7 +103,8 @@ } }); - final Guid taskId1 = persistAsyncTaskPlaceHolder(VdcActionType.HibernateVm); + persistAsyncTaskPlaceHolder(VdcActionType.HibernateVm, SAVE_IMAGE_TASK_KEY); + final Guid taskId1 = getAsyncTaskId(SAVE_IMAGE_TASK_KEY); getReturnValue().getTaskPlaceHolderIdList().add(taskId1); Guid image1GroupId = Guid.NewGuid(); @@ -146,7 +149,8 @@ getReturnValue().getVdsmTaskIdList().add(guid1); - Guid taskId2 = persistAsyncTaskPlaceHolder(VdcActionType.HibernateVm); + persistAsyncTaskPlaceHolder(VdcActionType.HibernateVm, SAVE_RAM_STATE_TASK_KEY); + Guid taskId2 = getAsyncTaskId(SAVE_RAM_STATE_TASK_KEY); getReturnValue().getTaskPlaceHolderIdList().add(taskId2); // second vol should be 10kb diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyImageGroupCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyImageGroupCommand.java index 8578a2b..6572838 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyImageGroupCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyImageGroupCommand.java @@ -59,7 +59,8 @@ .getValue() : getDiskImage().getStorageIds().get(0); - Guid taskId = persistAsyncTaskPlaceHolder(getParameters().getParentCommand()); + persistAsyncTaskPlaceHolder(getParameters().getParentCommand()); + Guid taskId = getAsyncTaskId(); getReturnValue().getTaskPlaceHolderIdList().add(taskId); if (getParameters().getUseCopyCollapse()) { diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MultipleActionsRunner.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MultipleActionsRunner.java index 8450d17..27283cc 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MultipleActionsRunner.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MultipleActionsRunner.java @@ -171,6 +171,8 @@ command.isInternalExecution()); } ThreadLocalParamsContainer.setCorrelationId(command.getCorrelationId()); + command.checkCanDoAction(); + command.insertAsyncTaskPlaceHolders(); command.executeAction(); } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveImageCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveImageCommand.java index dfaad32..dfa53dc 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveImageCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveImageCommand.java @@ -78,7 +78,8 @@ protected void executeCommand() { if (getDiskImage() != null) { try { - Guid taskId = persistAsyncTaskPlaceHolder(getParameters().getParentCommand()); + persistAsyncTaskPlaceHolder(getParameters().getParentCommand()); + Guid taskId = getAsyncTaskId(); getReturnValue().getTaskPlaceHolderIdList().add(taskId); VDSReturnValue vdsReturnValue = performImageVdsmOperation(); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotSingleDiskCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotSingleDiskCommand.java index c4f14c3..423e57d 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotSingleDiskCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotSingleDiskCommand.java @@ -33,7 +33,8 @@ Guid imageGroupId = getDiskImage().getimage_group_id() != null ? getDiskImage().getimage_group_id().getValue() : Guid.Empty; - Guid taskId = persistAsyncTaskPlaceHolder(VdcActionType.RemoveSnapshot); + persistAsyncTaskPlaceHolder(VdcActionType.RemoveSnapshot); + Guid taskId = getAsyncTaskId(); getReturnValue().getTaskPlaceHolderIdList().add(taskId); VDSReturnValue vdsReturnValue = Backend diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveTemplateSnapshotCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveTemplateSnapshotCommand.java index 65e50eb..caf4dce 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveTemplateSnapshotCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveTemplateSnapshotCommand.java @@ -20,7 +20,8 @@ @Override protected void executeCommand() { - Guid taskId = persistAsyncTaskPlaceHolder(VdcActionType.RemoveVmTemplate); + persistAsyncTaskPlaceHolder(VdcActionType.RemoveVmTemplate); + Guid taskId = getAsyncTaskId(); getReturnValue().getTaskPlaceHolderIdList().add(taskId); VDSReturnValue vdsReturnValue = Backend diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreFromSnapshotCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreFromSnapshotCommand.java index 5b2c151..39c3110 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreFromSnapshotCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreFromSnapshotCommand.java @@ -104,7 +104,8 @@ Guid imageGroupId = getDiskImage().getimage_group_id() != null ? getDiskImage().getimage_group_id() .getValue() : Guid.Empty; - Guid taskId = persistAsyncTaskPlaceHolder(VdcActionType.RestoreAllSnapshots); + persistAsyncTaskPlaceHolder(VdcActionType.RestoreAllSnapshots); + Guid taskId = getAsyncTaskId(); getReturnValue().getTaskPlaceHolderIdList().add(taskId); vdsReturnValue = runVdsCommand( diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommandBase.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommandBase.java index 62478a7..699f7eb 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommandBase.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommandBase.java @@ -171,6 +171,8 @@ // set the _isRerun flag to false before calling executeAction so that we'll know if // there is another rerun attempt within the method _isRerun = false; + checkCanDoAction(); + insertAsyncTaskPlaceHolders(); executeAction(); // if there was no rerun attempt in the previous executeAction call and the command diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java index 4446490..1296088 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java @@ -44,6 +44,8 @@ public abstract class VmCommand<T extends VmOperationParameterBase> extends CommandBase<T> { + private static final String DELETE_PRIMARY_IMAGE_TASK_KEY = "DELETE_PRIMARY_IMAGE_TASK_KEY"; + private static final String DELETE_SECONDARY_IMAGES_TASK_KEY = "DELETE_SECONDARY_IMAGES_TASK_KEY"; private static final int Kb = 1024; protected final static int MAX_NETWORK_INTERFACES_SUPPORTED = 8; @@ -252,7 +254,8 @@ } }).size() > 0; - Guid taskId1 = persistAsyncTaskPlaceHolder(parentCommand); + persistAsyncTaskPlaceHolder(parentCommand, DELETE_PRIMARY_IMAGE_TASK_KEY); + Guid taskId1 = getAsyncTaskId(DELETE_PRIMARY_IMAGE_TASK_KEY); getReturnValue().getTaskPlaceHolderIdList().add(taskId1); // delete first image @@ -271,7 +274,8 @@ createTask(taskId1, vdsRetValue1.getCreationInfo(), parentCommand, VdcObjectType.Storage, imagesList[0]); getTaskIdList().add(guid1); - Guid taskId2 = persistAsyncTaskPlaceHolder(parentCommand); + persistAsyncTaskPlaceHolder(parentCommand, DELETE_SECONDARY_IMAGES_TASK_KEY); + Guid taskId2 = getAsyncTaskId(DELETE_SECONDARY_IMAGES_TASK_KEY); getReturnValue().getTaskPlaceHolderIdList().add(taskId2); // delete second image diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateDiskCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateDiskCommand.java index 0acabf8..e9c8ec8 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateDiskCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateDiskCommand.java @@ -75,8 +75,8 @@ } @Override - public Guid persistAsyncTaskPlaceHolder(VdcActionType parentCommand) { - return super.persistAsyncTaskPlaceHolder(parentCommand); + public void persistAsyncTaskPlaceHolder(VdcActionType parentCommand) { + super.persistAsyncTaskPlaceHolder(parentCommand); } @Override diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateVmDisksCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateVmDisksCommand.java index e9f41e7..583bf99 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateVmDisksCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateVmDisksCommand.java @@ -81,8 +81,8 @@ } @Override - public Guid persistAsyncTaskPlaceHolder(VdcActionType parentCommand) { - return super.persistAsyncTaskPlaceHolder(parentCommand); + public void persistAsyncTaskPlaceHolder(VdcActionType parentCommand) { + super.persistAsyncTaskPlaceHolder(parentCommand); } @Override diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/TaskHandlerCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/TaskHandlerCommand.java index e35e6d0..719f3fa 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/TaskHandlerCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/TaskHandlerCommand.java @@ -28,5 +28,7 @@ VdcObjectType entityType, Guid... entityIds); - Guid persistAsyncTaskPlaceHolder(VdcActionType parentCommand); + void persistAsyncTaskPlaceHolder(VdcActionType parentCommand); + + Guid getAsyncTaskId(); } diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/CommandBaseTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/CommandBaseTest.java index fbd8894..503f52f 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/CommandBaseTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/CommandBaseTest.java @@ -119,6 +119,8 @@ when(parameterMock.getTransactionScopeOption()).thenReturn(TransactionScopeOption.Required); CommandBase<VdcActionParametersBase> command = spy(new CommandBaseDummy(parameterMock)); + command.checkCanDoAction(); + command.insertAsyncTaskPlaceHolders(); command.executeAction(); verify(command).executeCommand(); } -- To view, visit http://gerrit.ovirt.org/15561 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I66628b98298ed1f500946889604ad906f0a68022 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