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

Reply via email to