Ravi Nori has uploaded a new change for review. Change subject: core : Change AddVmTemplateCommand ......................................................................
core : Change AddVmTemplateCommand This patch changes AddVmTemplateCommand and its child CreateImageTemplateCommand to persist all async task placeholders before executing the command on vdsm Change-Id: I2d61e6b2a0f7967bcee463ff2384cb6daba892b9 Signed-off-by: Ravi Nori <rn...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateImageTemplateCommand.java 2 files changed, 35 insertions(+), 16 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/62/15562/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java index a90647b..1264dc6 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java @@ -64,6 +64,7 @@ private List<PermissionSubject> permissionCheckSubject; protected Map<Guid, DiskImage> diskInfoDestinationMap; private boolean isVmInDb; + private Map<Guid, CommandBase<?>> commandsMap = new HashMap<>(); /** * A list of the new disk images which were saved for the Template. @@ -121,6 +122,34 @@ default: return AuditLogType.USER_ADD_VM_TEMPLATE_FINISHED_FAILURE; } + } + + @Override + protected Map<Guid, CommandBase<?>> buildChildCommands() { + Guid vmSnapshotId = Guid.NewGuid(); + for (DiskImage diskImage : mImages) { + commandsMap.put(diskImage.getImageId(), constructCommand( + VdcActionType.CreateImageTemplate, + buildChildCommandParameters(diskImage, vmSnapshotId), + true, + ExecutionHandler.createDefaultContexForTasks(getExecutionContext()))); + } + return commandsMap; + } + + private CreateImageTemplateParameters buildChildCommandParameters(DiskImage diskImage, Guid vmSnapshotId) { + CreateImageTemplateParameters createParams = new CreateImageTemplateParameters(diskImage.getImageId(), + getVmTemplateId(), getVmTemplateName(), getVmId()); + createParams.setStorageDomainId(diskImage.getStorageIds().get(0)); + createParams.setVmSnapshotId(vmSnapshotId); + createParams.setEntityId(getParameters().getEntityId()); + createParams.setDestinationStorageDomainId(diskInfoDestinationMap.get(diskImage.getId()) + .getStorageIds() + .get(0)); + createParams.setDiskAlias(diskInfoDestinationMap.get(diskImage.getId()).getDiskAlias()); + createParams.setParentParameters(getParameters()); + createParams.setQuotaId(getQuotaIdForDisk(diskImage)); + return createParams; } @Override @@ -402,22 +431,8 @@ Guid vmSnapshotId = Guid.NewGuid(); for (DiskImage diskImage : mImages) { - CreateImageTemplateParameters createParams = new CreateImageTemplateParameters(diskImage.getImageId(), - getVmTemplateId(), getVmTemplateName(), getVmId()); - createParams.setStorageDomainId(diskImage.getStorageIds().get(0)); - createParams.setVmSnapshotId(vmSnapshotId); - createParams.setEntityId(getParameters().getEntityId()); - createParams.setDestinationStorageDomainId(diskInfoDestinationMap.get(diskImage.getId()) - .getStorageIds() - .get(0)); - createParams.setDiskAlias(diskInfoDestinationMap.get(diskImage.getId()).getDiskAlias()); - createParams.setParentParameters(getParameters()); - createParams.setQuotaId(getQuotaIdForDisk(diskImage)); // The return value of this action is the 'copyImage' task GUID: - VdcReturnValueBase retValue = Backend.getInstance().runInternalAction( - VdcActionType.CreateImageTemplate, - createParams, - ExecutionHandler.createDefaultContexForTasks(getExecutionContext())); + VdcReturnValueBase retValue = runCommand(commandsMap.get(diskImage.getImageId())); if (!retValue.getSucceeded()) { throw new VdcBLLException(retValue.getFault().getError(), retValue.getFault().getMessage()); 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 0914b25..cfb88ef 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 @@ -31,6 +31,11 @@ } @Override + protected void insertAsyncTaskPlaceHolders() { + persistAsyncTaskPlaceHolder(VdcActionType.AddVmTemplate); + } + + @Override protected void executeCommand() { Guid storagePoolId = getDiskImage().getStoragePoolId() != null ? getDiskImage().getStoragePoolId() .getValue() : Guid.Empty; @@ -47,7 +52,6 @@ DiskImage newImage = cloneDiskImage(getDestinationImageId()); fillVolumeInformation(newImage); - persistAsyncTaskPlaceHolder(VdcActionType.AddVmTemplate); Guid taskId = getAsyncTaskId(); getReturnValue().getTaskPlaceHolderIdList().add(taskId); -- To view, visit http://gerrit.ovirt.org/15562 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2d61e6b2a0f7967bcee463ff2384cb6daba892b9 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