Liron Ar has uploaded a new change for review.

Change subject: core: Introducing RetrieveImageDataVDSCommand
......................................................................

core: Introducing RetrieveImageDataVDSCommand

This patch adds RetrieveImageDataVDSCommand which is used to download
image data to the engine up to a given size.
The data is returned by the command as a byte array.

Change-Id: I87be49262b1e06a12f55055360a6c7ddc7486897
Signed-off-by: Liron Aravot <[email protected]>
---
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/asynctasks/AsyncTaskType.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllErrors.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
A 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/RetrieveImageDataVDSCommand.java
4 files changed, 75 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/75/26675/1

diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/asynctasks/AsyncTaskType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/asynctasks/AsyncTaskType.java
index a5c9e94..8a9b75a 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/asynctasks/AsyncTaskType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/asynctasks/AsyncTaskType.java
@@ -11,7 +11,8 @@
     cloneImageStructure,
     syncImageData,
     extendImageSize,
-    downloadImageFromStream;
+    downloadImageFromStream,
+    uploadImage;
 
     public int getValue() {
         return this.ordinal();
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllErrors.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllErrors.java
index c64ab25..298c0ee 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllErrors.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllErrors.java
@@ -404,6 +404,7 @@
     UPLOAD_FAILURE(5003),
     // The VDS does not exist in memory
     RESOURCE_MANAGER_VDS_NOT_FOUND(5004),
+    RETRIEVE_FAILURE(5005),
     IRS_IMAGE_STATUS_ILLEGAL(5006),
     IRS_REPOSITORY_NOT_FOUND(5009),
     MAC_POOL_INITIALIZATION_FAILED(5010),
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
index 9910ba6..21dcb00 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
@@ -105,6 +105,7 @@
     SPMRevertTask("org.ovirt.engine.core.vdsbroker.irsbroker"),
     UpdateVM("org.ovirt.engine.core.vdsbroker.irsbroker"),
     UploadStream("org.ovirt.engine.core.vdsbroker.irsbroker"),
+    RetrieveImageData("org.ovirt.engine.core.vdsbroker.irsbroker"),
     RemoveVM("org.ovirt.engine.core.vdsbroker.irsbroker"),
     SpmStopOnIrs("org.ovirt.engine.core.vdsbroker.irsbroker"),
     ResetISOPath("org.ovirt.engine.core.vdsbroker.vdsbroker"),
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/RetrieveImageDataVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/RetrieveImageDataVDSCommand.java
new file mode 100644
index 0000000..e024d9e
--- /dev/null
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/RetrieveImageDataVDSCommand.java
@@ -0,0 +1,71 @@
+package org.ovirt.engine.core.vdsbroker.irsbroker;
+
+import java.io.IOException;
+
+import org.apache.commons.httpclient.methods.GetMethod;
+import org.ovirt.engine.core.common.asynctasks.AsyncTaskType;
+import org.ovirt.engine.core.common.config.ConfigValues;
+import org.ovirt.engine.core.common.errors.VdcBllErrors;
+import 
org.ovirt.engine.core.common.vdscommands.ImageHttpAccessVDSCommandParameters;
+
+public class RetrieveImageDataVDSCommand<P extends 
ImageHttpAccessVDSCommandParameters> extends HttpImageTaskVDSCommand<GetMethod, 
P> {
+
+    public RetrieveImageDataVDSCommand(P parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected void beforeExecution() {
+        getMethod().setRequestHeader("Size", 
getParameters().getSize().toString());
+    }
+
+    @Override
+    protected void afterExecution() {
+        String response;
+        try {
+            response = getMethod().getResponseHeader("Result").getValue();
+        } catch (Exception e) {
+            throw createNetworkException(e);
+        }
+
+        handleJsonResponse(response);
+
+        processResponseHeaderValue(getMethod(), "Content-Length", 
getParameters().getSize().toString());
+        byte[] result;
+        try {
+            result = getMethod().getResponseBody();
+        } catch (IOException e) {
+            log.debug(e);
+            throw createNetworkException(e);
+        }
+
+        if (result.length != getParameters().getSize()) {
+            throwVdsErrorException(String.format("retrieving failed: requested 
%s bytes, received %s bytes ",
+                    result.length,
+                    getParameters().getSize()), VdcBllErrors.RETRIEVE_FAILURE);
+        }
+
+        getVDSReturnValue().setReturnValue(result);
+        getVDSReturnValue().setSucceeded(true);
+    }
+
+    @Override
+    protected AsyncTaskType getTaskType() {
+        return AsyncTaskType.uploadImage;
+    }
+
+    @Override
+    protected VdcBllErrors getCommandError() {
+        return VdcBllErrors.RETRIEVE_FAILURE;
+    }
+
+    @Override
+    protected ConfigValues getConfigValueTimeLimitForOperation() {
+        return ConfigValues.RetrieveDataMaxTimeInMinutes;
+    }
+
+    @Override
+    protected GetMethod concreteCreateMethod(String url) {
+        return new GetMethod(url);
+    }
+}


-- 
To view, visit http://gerrit.ovirt.org/26675
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I87be49262b1e06a12f55055360a6c7ddc7486897
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Liron Ar <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to