Liron Aravot has uploaded a new change for review. Change subject: core: adding RetrieveImageDataCommand ......................................................................
core: adding RetrieveImageDataCommand This patch adds RetrieveImageDataCommand and changes AttachStorageDomainToPoolCommand to use it instead of executing the vds command directly. This is done so that the needed CDA checks/locks will be taken. Furthermore, this patch takes care of polling the created upload task on vdsm side. Change-Id: I4ed10f1d3fc74e1deb6c69fc826f02abfd5d679e Bug-Url: https://bugzilla.redhat.com/1136840 Signed-off-by: Liron Aravot <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RetrieveImageDataCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AttachStorageDomainToPoolCommand.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/bll/RetrieveImageDataParameters.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java 4 files changed, 66 insertions(+), 14 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/45/32545/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RetrieveImageDataCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RetrieveImageDataCommand.java index e388b9a..129a124 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RetrieveImageDataCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RetrieveImageDataCommand.java @@ -1,7 +1,33 @@ package org.ovirt.engine.core.bll; -/** - * Created by laravot on 9/7/14. - */ -public class RetrieveImageDataCommand { +import org.ovirt.engine.core.bll.context.CommandContext; +import org.ovirt.engine.core.common.asynctasks.AsyncTaskType; +import org.ovirt.engine.core.common.vdscommands.ImageHttpAccessVDSCommandParameters; +import org.ovirt.engine.core.common.vdscommands.VDSCommandType; +import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; + +public class RetrieveImageDataCommand<T extends RetrieveImageDataParameters> extends SpmCommand<T> { + + public RetrieveImageDataCommand(T parameters, CommandContext cmdContext) { + super(parameters, cmdContext); + } + + @Override + protected VDSReturnValue executeVdsCommand() { + VDSReturnValue vdsReturnValue = runVdsCommand(VDSCommandType.RetrieveImageData, + new ImageHttpAccessVDSCommandParameters(getVdsId(), + getParameters().getStoragePoolId(), + getParameters().getStorageDomainId(), + getParameters().getImageGroupID(), + getParameters().getImageId(), + getParameters().getLength())); + + setActionReturnValue(vdsReturnValue.getReturnValue()); + return vdsReturnValue; + } + + @Override + protected AsyncTaskType getTaskType() { + return AsyncTaskType.uploadImageToStream; + } } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AttachStorageDomainToPoolCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AttachStorageDomainToPoolCommand.java index 2e3c33b..1db908c 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AttachStorageDomainToPoolCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AttachStorageDomainToPoolCommand.java @@ -9,6 +9,7 @@ import java.util.Map; import org.ovirt.engine.core.bll.NonTransactiveCommandAttribute; +import org.ovirt.engine.core.bll.RetrieveImageDataParameters; import org.ovirt.engine.core.bll.context.CommandContext; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.FeatureSupported; @@ -35,7 +36,6 @@ import org.ovirt.engine.core.common.vdscommands.AttachStorageDomainVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.DetachStorageDomainVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.HSMGetStorageDomainInfoVDSCommandParameters; -import org.ovirt.engine.core.common.vdscommands.ImageHttpAccessVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; import org.ovirt.engine.core.compat.Guid; @@ -201,17 +201,17 @@ DiskImage ovfDisk = ovfDiskAndSize.getFirst(); if (ovfDisk != null) { try { - VDSReturnValue retrievedByteData = runVdsCommand(VDSCommandType.RetrieveImageData, - new ImageHttpAccessVDSCommandParameters(getVdsId(), - getParameters().getStoragePoolId(), + VdcReturnValueBase vdcReturnValueBase = runInternalAction(VdcActionType.RetrieveImageData, + new RetrieveImageDataParameters(getParameters().getStoragePoolId(), getParameters().getStorageDomainId(), ovfDisk.getId(), ovfDisk.getImage().getId(), ovfDiskAndSize.getSecond())); - if (retrievedByteData.getSucceeded()) { + if (vdcReturnValueBase.getSucceeded()) { + getReturnValue().getVdsmTaskIdList().addAll(vdcReturnValueBase.getInternalVdsmTaskIdList()); ovfEntitiesFromTar = - OvfUtils.getOvfEntities((byte[]) retrievedByteData.getReturnValue(), + OvfUtils.getOvfEntities((byte[]) vdcReturnValueBase.getActionReturnValue(), getParameters().getStorageDomainId()); } else { log.errorFormat("Image data could not be retrieved for disk id {0} in storage domain id {1}", diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/bll/RetrieveImageDataParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/bll/RetrieveImageDataParameters.java index 9883802..1fdb365 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/bll/RetrieveImageDataParameters.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/bll/RetrieveImageDataParameters.java @@ -1,7 +1,32 @@ package org.ovirt.engine.core.bll; -/** - * Created by laravot on 9/7/14. - */ -public class RetrieveImageDataParameters { +import org.ovirt.engine.core.common.action.ImagesContainterParametersBase; +import org.ovirt.engine.core.compat.Guid; + +public class RetrieveImageDataParameters extends ImagesContainterParametersBase { + private Long length; + + public RetrieveImageDataParameters(Guid storagePoolId, + Guid storageDomainId, + Guid imageGroupId, + Guid imageId, + Long length) { + super(imageId); + this.length = length; + setStoragePoolId(storagePoolId); + setStorageDomainId(storageDomainId); + setImageGroupID(imageGroupId); + } + + public RetrieveImageDataParameters() { + super(); + } + + public Long getLength() { + return length; + } + + public void setLength(Long length) { + this.length = length; + } } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java index 0031b1a..e99a0ee 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java @@ -358,6 +358,7 @@ ProcessOvfUpdateForStorageDomain(1902, QuotaDependency.NONE), CreateOvfVolumeForStorageDomain(1903, QuotaDependency.NONE), CreateOvfStoresForStorageDomain(1904, QuotaDependency.NONE), + RetrieveImageData(1905, QuotaDependency.NONE), // Affinity Groups AddAffinityGroup(1950, ActionGroup.MANIPULATE_AFFINITY_GROUPS, false, QuotaDependency.NONE), -- To view, visit http://gerrit.ovirt.org/32545 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I4ed10f1d3fc74e1deb6c69fc826f02abfd5d679e Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Liron Aravot <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
