Ravi Nori has uploaded a new change for review.

Change subject: engine : Introduce getVolumeInfoAsync method
......................................................................

engine : Introduce getVolumeInfoAsync method

Introduce getVolumeInfoAsync at IIrsServer so the
command can asynchronously retrieve the image volume
info. Using the isRequestCompleted method at
OneImageInfoReturnForXmlRpc the command can determine
if the request has been completed.

Change-Id: I6e0ef961927c3fb17656ecac12d245c25b2ee367
Signed-off-by: Ravi Nori <[email protected]>
---
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/GetImageInfoVDSCommand.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IIrsServer.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IrsServerWrapper.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/OneImageInfoReturnForXmlRpc.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/StatusReturnForXmlRpc.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/FutureMap.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcIIrsServer.java
7 files changed, 60 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/73/39373/1

diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/GetImageInfoVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/GetImageInfoVDSCommand.java
index 7b04ed9..8777789 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/GetImageInfoVDSCommand.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/GetImageInfoVDSCommand.java
@@ -41,7 +41,7 @@
         DiskImage di = null;
         try {
             proceedProxyReturnValue();
-            di = buildImageEntity(imageInfoReturn.mInfo);
+            di = buildImageEntity(imageInfoReturn.getInfo());
         } catch (Exception e) {
             printReturnValue();
             // nothing to do - logging inside upper functions
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IIrsServer.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IIrsServer.java
index a09da95..9349264 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IIrsServer.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IIrsServer.java
@@ -30,6 +30,8 @@
 
     OneImageInfoReturnForXmlRpc getVolumeInfo(String sdUUID, String spUUID, 
String imgGUID, String volUUID);
 
+    OneImageInfoReturnForXmlRpc getVolumeInfoAsync(String sdUUID, String 
spUUID, String imgGUID, String volUUID);
+
     StatusOnlyReturnForXmlRpc setVolumeDescription(String sdUUID, String 
spUUID, String imgGUID, String volUUID, String description);
 
     IrsStatsAndStatusXmlRpc getIrsStats();
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IrsServerWrapper.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IrsServerWrapper.java
index 7388e88..d4934f3 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IrsServerWrapper.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IrsServerWrapper.java
@@ -86,6 +86,13 @@
     }
 
     @Override
+    public OneImageInfoReturnForXmlRpc getVolumeInfoAsync(String sdUUID, 
String spUUID, String imgGUID, String volUUID) {
+        Map<String, Object> xmlRpcReturnValue = 
irsServer.getVolumeInfo(sdUUID, spUUID, imgGUID, volUUID);
+        OneImageInfoReturnForXmlRpc wrapper = new 
OneImageInfoReturnForXmlRpc(xmlRpcReturnValue);
+        return wrapper;
+    }
+
+    @Override
     public StatusOnlyReturnForXmlRpc setVolumeDescription(String sdUUID, 
String spUUID, String imgGUID, String volUUID, String description) {
         Map<String, Object> xmlRpcReturnValue = 
irsServer.setVolumeDescription(sdUUID, spUUID, imgGUID, volUUID, description);
         StatusOnlyReturnForXmlRpc wrapper = new 
StatusOnlyReturnForXmlRpc(xmlRpcReturnValue);
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/OneImageInfoReturnForXmlRpc.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/OneImageInfoReturnForXmlRpc.java
index 7c8cad6..4cd1e59 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/OneImageInfoReturnForXmlRpc.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/OneImageInfoReturnForXmlRpc.java
@@ -2,6 +2,8 @@
 
 import java.util.Map;
 
+import org.ovirt.engine.core.vdsbroker.jsonrpc.FutureMap;
+import org.ovirt.engine.core.vdsbroker.vdsbroker.StatusForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.xmlrpc.XmlRpcObjectDescriptor;
 
 //-----------------------------------------------------
@@ -11,10 +13,13 @@
 public final class OneImageInfoReturnForXmlRpc extends StatusReturnForXmlRpc {
 
     private static final String INFO = "info";
+
+    Map<String, Object> innerMap;
+
     // We are ignoring missing fields after the status, because on failure it 
is
     // not sent.
     // [XmlRpcMissingMapping(MappingAction.Ignore), XmlRpcMember("info")]
-    public Map<String, Object> mInfo;
+    private Map<String, Object> mInfo;
 
     @Override
     public String toString() {
@@ -22,14 +27,36 @@
         builder.append("\n");
         builder.append(super.toString());
         builder.append("\n");
-        XmlRpcObjectDescriptor.toStringBuilder(mInfo, builder);
+        if (mInfo != null) {
+            XmlRpcObjectDescriptor.toStringBuilder(mInfo, builder);
+        }
         return builder.toString();
     }
 
     @SuppressWarnings("unchecked")
     public OneImageInfoReturnForXmlRpc(Map<String, Object> innerMap) {
-        super(innerMap);
+        super();
+        this.innerMap = innerMap;
+    }
+
+    public boolean isRequestCompleted() {
+        if (innerMap instanceof FutureMap) {
+            return ((FutureMap) innerMap).isRequestCompleted();
+        }
+        return true;
+    }
+
+    public StatusForXmlRpc getStatus() {
+        if (innerMap instanceof FutureMap && super.mStatus == null) {
+            Map<String, Object> statusMap = (Map<String, Object>) 
innerMap.get(STATUS);
+            mStatus = new StatusForXmlRpc(statusMap);
+        }
+        return super.mStatus;
+    }
+
+    public Map<String, Object> getInfo() {
         mInfo = (Map<String, Object>) innerMap.get(INFO);
+        return mInfo;
     }
 
 }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/StatusReturnForXmlRpc.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/StatusReturnForXmlRpc.java
index 81031bd..f803be8 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/StatusReturnForXmlRpc.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/StatusReturnForXmlRpc.java
@@ -5,10 +5,12 @@
 import org.ovirt.engine.core.vdsbroker.vdsbroker.StatusForXmlRpc;
 
 public class StatusReturnForXmlRpc {
-    private static final String STATUS = "status";
+    protected static final String STATUS = "status";
 
     public StatusForXmlRpc mStatus;
 
+    public StatusReturnForXmlRpc() {}
+
     public StatusReturnForXmlRpc(Map<String, Object> innerMap) {
         Map<String, Object> statusMap = (Map<String, Object>) 
innerMap.get(STATUS);
         mStatus = new StatusForXmlRpc(statusMap);
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/FutureMap.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/FutureMap.java
index c1027b4..51ea380 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/FutureMap.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/FutureMap.java
@@ -239,6 +239,10 @@
         return this.responseMap.get(key);
     }
 
+    public boolean isRequestCompleted() {
+        return response.isDone() || response.isCancelled();
+    }
+
     @Override
     public Object remove(Object key) {
         lazyEval();
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcIIrsServer.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcIIrsServer.java
index 1b5580f..b3e67c4 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcIIrsServer.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcIIrsServer.java
@@ -208,6 +208,19 @@
     }
 
     @Override
+    public OneImageInfoReturnForXmlRpc getVolumeInfoAsync(String sdUUID, 
String spUUID, String imgGUID, String volUUID) {
+        JsonRpcRequest request =
+                new RequestBuilder("Volume.getInfo").withParameter("volumeID", 
volUUID)
+                        .withParameter("storagepoolID", spUUID)
+                        .withParameter("storagedomainID", sdUUID)
+                        .withParameter("imageID", imgGUID)
+                        .build();
+        Map<String, Object> response =
+                new FutureMap(this.client, request);
+        return new OneImageInfoReturnForXmlRpc(response);
+    }
+
+    @Override
     public IrsStatsAndStatusXmlRpc getIrsStats() {
         JsonRpcRequest request = new 
RequestBuilder("Host.getStorageRepoStats").build();
         Map<String, Object> response =


-- 
To view, visit https://gerrit.ovirt.org/39373
To unsubscribe, visit https://gerrit.ovirt.org/settings

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

Reply via email to