Adam Litke has uploaded a new change for review.

Change subject: [WIP] core: initial support for the getVmJobs API
......................................................................

[WIP] core: initial support for the getVmJobs API

Change-Id: Iaf43c0860599436d4a2c2a512a06ee12cbed69ac
Signed-off-by: Adam Litke <[email protected]>
---
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBlockJobInfo.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBlockJobType.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmJobInfo.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmJobState.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmJobType.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatistics.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/GetVmJobsVDSCommandParameters.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java
A 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetVmJobsVDSCommand.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
A 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmJobsReturnForXmlRpc.java
M 
frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml
15 files changed, 329 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/76/24876/1

diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBlockJobInfo.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBlockJobInfo.java
new file mode 100644
index 0000000..482b41d
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBlockJobInfo.java
@@ -0,0 +1,61 @@
+package org.ovirt.engine.core.common.businessentities;
+
+import org.ovirt.engine.core.compat.Guid;
+
+public class VmBlockJobInfo extends VmJobInfo {
+
+    private static final long serialVersionUID = -7009231492231684166L;
+
+    private VmBlockJobType blockJobType;
+    private Long bandwidth;
+    private Long cursorCur;
+    private Long cursorEnd;
+    private Guid imageUUID;
+
+    public VmBlockJobInfo() {
+        super();
+        blockJobType = VmBlockJobType.UNKNOWN;
+        bandwidth = cursorCur = cursorEnd = 0L;
+        imageUUID = Guid.Empty;
+    }
+
+    public VmBlockJobType getBlockJobType() {
+        return blockJobType;
+    }
+
+    public void setBlockJobType(VmBlockJobType blockJobType) {
+        this.blockJobType = blockJobType;
+    }
+
+    public Long getBandwidth() {
+        return bandwidth;
+    }
+
+    public void setBandwidth(Long bandwidth) {
+        this.bandwidth = bandwidth;
+    }
+
+    public Long getCursorCur() {
+        return cursorCur;
+    }
+
+    public void setCursorCur(Long cursorCur) {
+        this.cursorCur = cursorCur;
+    }
+
+    public Long getCursorEnd() {
+        return cursorEnd;
+    }
+
+    public void setCursorEnd(Long cursorEnd) {
+        this.cursorEnd = cursorEnd;
+    }
+
+    public Guid getImageUUID() {
+        return imageUUID;
+    }
+
+    public void setImageUUID(Guid imageUUID) {
+        this.imageUUID = imageUUID;
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBlockJobType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBlockJobType.java
new file mode 100644
index 0000000..528913a
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBlockJobType.java
@@ -0,0 +1,21 @@
+package org.ovirt.engine.core.common.businessentities;
+
+public enum VmBlockJobType {
+    UNKNOWN,
+    COPY,
+    REBASE,
+    COMMIT;
+
+    public static VmBlockJobType getByName(String name) {
+        if (name == null || name.length() == 0) {
+            return null;
+        } else {
+            for (VmBlockJobType vmBlockJobType : VmBlockJobType.values()) {
+                if (vmBlockJobType.name().equalsIgnoreCase(name)) {
+                    return vmBlockJobType;
+                }
+            }
+        }
+        return null;
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmJobInfo.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmJobInfo.java
new file mode 100644
index 0000000..bd03930
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmJobInfo.java
@@ -0,0 +1,21 @@
+package org.ovirt.engine.core.common.businessentities;
+
+import java.io.Serializable;
+
+public class VmJobInfo implements Serializable {
+
+    private static final long serialVersionUID = -1748312497527481706L;
+    private VmJobState jobState;
+
+    protected VmJobInfo() {
+        jobState = VmJobState.UNKNOWN;
+    }
+
+    public VmJobState getJobState() {
+        return jobState;
+    }
+
+    public void setJobState(VmJobState jobState) {
+        this.jobState = jobState;
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmJobState.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmJobState.java
new file mode 100644
index 0000000..af4197a
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmJobState.java
@@ -0,0 +1,19 @@
+package org.ovirt.engine.core.common.businessentities;
+
+public enum VmJobState {
+    UNKNOWN,
+    NORMAL;
+
+    public static VmJobState getByName(String name) {
+        if (name == null || name.length() == 0) {
+            return null;
+        } else {
+            for (VmJobState vmJobState : VmJobState.values()) {
+                if (vmJobState.name().equalsIgnoreCase(name)) {
+                    return vmJobState;
+                }
+            }
+        }
+        return null;
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmJobType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmJobType.java
new file mode 100644
index 0000000..4e10ed6
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmJobType.java
@@ -0,0 +1,19 @@
+package org.ovirt.engine.core.common.businessentities;
+
+public enum VmJobType {
+    UNKNOWN,
+    BLOCK;
+
+    public static VmJobType getByName(String name) {
+        if (name == null || name.length() == 0) {
+            return null;
+        } else {
+            for (VmJobType vmJobType : VmJobType.values()) {
+                if (vmJobType.name().equalsIgnoreCase(name)) {
+                    return vmJobType;
+                }
+            }
+        }
+        return null;
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatistics.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatistics.java
index 7dd6484..080042a 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatistics.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatistics.java
@@ -197,4 +197,6 @@
     public void setVmBalloonInfo(VmBalloonInfo vmBalloonInfo) {
         this.vmBalloonInfo = vmBalloonInfo;
     }
+
+
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/GetVmJobsVDSCommandParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/GetVmJobsVDSCommandParameters.java
new file mode 100644
index 0000000..20a1035
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/GetVmJobsVDSCommandParameters.java
@@ -0,0 +1,23 @@
+package org.ovirt.engine.core.common.vdscommands;
+
+import org.ovirt.engine.core.common.businessentities.VDS;
+import org.ovirt.engine.core.compat.Guid;
+
+public class GetVmJobsVDSCommandParameters extends VdsAndVmIDVDSParametersBase 
{
+    private VDS vds;
+
+    public GetVmJobsVDSCommandParameters(VDS vds, Guid vmId) {
+        super(vds.getId(), vmId);
+        this.vds = vds;
+    }
+
+    public GetVmJobsVDSCommandParameters() {
+    }
+
+    /**
+     * @return the vds
+     */
+    public VDS getVds() {
+        return vds;
+    }
+}
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java
index a970511..070a2d3 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java
@@ -35,12 +35,14 @@
 import org.ovirt.engine.core.common.businessentities.VdsDynamic;
 import org.ovirt.engine.core.common.businessentities.VdsStatistics;
 import org.ovirt.engine.core.common.businessentities.VmBalloonInfo;
+import org.ovirt.engine.core.common.businessentities.VmBlockJobInfo;
 import org.ovirt.engine.core.common.businessentities.VmDevice;
 import org.ovirt.engine.core.common.businessentities.VmDeviceGeneralType;
 import org.ovirt.engine.core.common.businessentities.VmDeviceId;
 import org.ovirt.engine.core.common.businessentities.VmDynamic;
 import org.ovirt.engine.core.common.businessentities.VmExitStatus;
 import org.ovirt.engine.core.common.businessentities.VmGuestAgentInterface;
+import org.ovirt.engine.core.common.businessentities.VmJobInfo;
 import org.ovirt.engine.core.common.businessentities.VmPauseStatus;
 import org.ovirt.engine.core.common.businessentities.VmStatic;
 import org.ovirt.engine.core.common.businessentities.VmStatistics;
@@ -58,6 +60,7 @@
 import org.ovirt.engine.core.common.utils.VmDeviceType;
 import org.ovirt.engine.core.common.vdscommands.DestroyVmVDSCommandParameters;
 import org.ovirt.engine.core.common.vdscommands.FullListVDSCommandParameters;
+import org.ovirt.engine.core.common.vdscommands.GetVmJobsVDSCommandParameters;
 import org.ovirt.engine.core.common.vdscommands.GetVmStatsVDSCommandParameters;
 import 
org.ovirt.engine.core.common.vdscommands.SetVdsStatusVDSCommandParameters;
 import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
@@ -80,6 +83,7 @@
 import org.ovirt.engine.core.vdsbroker.vdsbroker.FullListVdsCommand;
 import org.ovirt.engine.core.vdsbroker.vdsbroker.GetAllVmStatsVDSCommand;
 import org.ovirt.engine.core.vdsbroker.vdsbroker.GetStatsVDSCommand;
+import org.ovirt.engine.core.vdsbroker.vdsbroker.GetVmJobsVDSCommand;
 import org.ovirt.engine.core.vdsbroker.vdsbroker.GetVmStatsVDSCommand;
 import org.ovirt.engine.core.vdsbroker.vdsbroker.ListVDSCommand;
 import org.ovirt.engine.core.vdsbroker.vdsbroker.VDSErrorException;
@@ -929,6 +933,31 @@
         }
     }
 
+    private void refreshVmJobs() {
+        GetVmJobsVDSCommand<GetVmJobsVDSCommandParameters> command;
+        ArrayList<VmJobInfo> infoList;
+
+        for (VmInternalData vmInternalData : _runningVms.values()) {
+            Guid vmId = vmInternalData.getVmDynamic().getId();
+            if (_vmDict.get(vmId) == null) {
+                continue; // if vm is unknown - continue
+            }
+
+            command = new GetVmJobsVDSCommand<GetVmJobsVDSCommandParameters>(
+                            new GetVmJobsVDSCommandParameters(_vds, vmId));
+            infoList = (ArrayList<VmJobInfo>) command.executeWithReturnValue();
+            if (command.getVDSReturnValue().getSucceeded()) {
+                for (VmJobInfo job: infoList) {
+                    if (!(job instanceof VmBlockJobInfo)) {
+                        continue;
+                    }
+                    VmBlockJobInfo blockJob = (VmBlockJobInfo) job;
+                    log.infoFormat("VmJob:  vmId:{0} imageId:{1}", vmId, 
blockJob.getImageUUID());
+                }
+            }
+        }
+    }
+
     private void refreshVmStats() {
         if (Config.<Boolean> getValue(ConfigValues.DebugTimerLogging)) {
             log.debug("vds::refreshVmList entered");
@@ -973,6 +1002,8 @@
 
             prepareGuestAgentNetworkDevicesForUpdate();
 
+            refreshVmJobs();
+
         } else if (command.getVDSReturnValue().getExceptionObject() != null) {
             if (command.getVDSReturnValue().getExceptionObject() instanceof 
VDSErrorException) {
                 log.errorFormat("Failed vds listing,  vds = {0} : {1}, error = 
{2}", _vds.getId(),
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetVmJobsVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetVmJobsVDSCommand.java
new file mode 100644
index 0000000..27a89b4
--- /dev/null
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetVmJobsVDSCommand.java
@@ -0,0 +1,65 @@
+package org.ovirt.engine.core.vdsbroker.vdsbroker;
+
+import java.util.ArrayList;
+import java.util.Map;
+
+import org.ovirt.engine.core.common.businessentities.VmBlockJobInfo;
+import org.ovirt.engine.core.common.businessentities.VmBlockJobType;
+import org.ovirt.engine.core.common.businessentities.VmJobInfo;
+import org.ovirt.engine.core.common.businessentities.VmJobState;
+import org.ovirt.engine.core.common.businessentities.VmJobType;
+import org.ovirt.engine.core.common.vdscommands.GetVmJobsVDSCommandParameters;
+import org.ovirt.engine.core.compat.Guid;
+
+public class GetVmJobsVDSCommand<P extends GetVmJobsVDSCommandParameters> 
extends VdsBrokerCommand<P> {
+    protected VmJobsReturnForXmlRpc _result;
+
+    public GetVmJobsVDSCommand(P parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected void executeVdsBrokerCommand() {
+        _result = getBroker().getVmJobs(getParameters().getVmId().toString());
+        proceedProxyReturnValue();
+        setReturnValue(parseVmJobList(_result.jobs));
+    }
+
+    @Override
+    protected StatusForXmlRpc getReturnStatus() {
+        return _result.mStatus;
+    }
+
+    @SuppressWarnings("unchecked")
+    protected ArrayList<VmJobInfo> parseVmJobList(Map<String, Object>[] jobs) {
+        ArrayList<VmJobInfo> result = new ArrayList<VmJobInfo>();
+        for (Map<String, Object> jobMap: jobs) {
+            Object infoObj = jobMap.get(VdsProperties.vmJobInfo);
+            Map<String, Object> infoMap = (Map<String, Object>) infoObj;
+
+            // The only jobType we support is BLOCK
+            String jobType = (String) infoMap.get(VdsProperties.vmJobType);
+            if (VmJobType.getByName(jobType) != VmJobType.BLOCK) {
+                continue;
+            }
+
+            VmBlockJobInfo job = new VmBlockJobInfo();
+            job.setJobState(VmJobState.getByName((String) 
jobMap.get(VdsProperties.vmJobState)));
+            job.setBlockJobType(VmBlockJobType.getByName((String) 
infoMap.get(VdsProperties.vmBlockJobType)));
+            Long bandwidth = 
Long.parseLong(infoMap.get(VdsProperties.vmJobBandwidth).toString());
+            Long cursorCur = 
Long.parseLong(infoMap.get(VdsProperties.vmJobCursorCur).toString());
+            Long cursorEnd = 
Long.parseLong(infoMap.get(VdsProperties.vmJobCursorEnd).toString());
+            job.setBandwidth(bandwidth);
+            job.setCursorCur(cursorCur);
+            job.setCursorEnd(cursorEnd);
+            job.setImageUUID(new Guid((String) 
infoMap.get(VdsProperties.vmJobImageUUID)));
+            result.add(job);
+        }
+        return result;
+    }
+
+    @Override
+    protected Object getReturnValueFromBroker() {
+        return _result;
+    }
+}
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
index 173c9e6..fc7334a 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
@@ -300,4 +300,6 @@
     GlusterVolumeTaskReturnForXmlRpc glusterVolumeRemoveBrickStatus(String 
volumeName, String[] bricksList);
 
     StatusOnlyReturnForXmlRpc setNumberOfCpus(String vmId, String 
numberOfCpus);
+
+    VmJobsReturnForXmlRpc getVmJobs(String vmId);
 }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
index 2c7cd65..70ebaa9 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
@@ -333,4 +333,16 @@
     // properties for ServerConnectionListReturnForXmlRpc
     public static final String serverType = "serverType";
     public static final String target = "target";
+
+    // VM Jobs
+    public static final String vmJobs = "jobs";
+    public static final String vmJobState = "state";
+    public static final String vmJobInfo = "info";
+    public static final String vmJobType = "jobType";
+    public static final String vmBlockJobType = "opType";
+    public static final String vmJobBandwidth = "bandwidth";
+    public static final String vmJobCursorCur = "cur";
+    public static final String vmJobCursorEnd = "end";
+    public static final String vmJobImageUUID = "imgUUID";
+
 }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
index 816de0f..cdb671a 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
@@ -283,4 +283,6 @@
     public Map<String, Object> glusterVolumeRemoveBrickStatus(String 
volumeName, String[] bricksList);
 
     public Map<String, Object> setNumberOfCpus(String vmId, String 
numberOfCpus);
+
+    public Map<String, Object> getVmJobs(String vmId);
 }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
index ae3727b..2dc3cb3 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
@@ -1395,4 +1395,15 @@
         StoragePoolInfoReturnForXmlRpc wrapper = new 
StoragePoolInfoReturnForXmlRpc(xmlRpcReturnValue);
         return wrapper;
     }
+
+    @Override
+    public VmJobsReturnForXmlRpc getVmJobs(String vmId) {
+        try {
+            Map<String, Object> xmlRpcReturnValue = vdsServer.getVmJobs(vmId);
+            VmJobsReturnForXmlRpc wrapper = new 
VmJobsReturnForXmlRpc(xmlRpcReturnValue);
+            return wrapper;
+        } catch (UndeclaredThrowableException ute) {
+            throw new XmlRpcRunTimeException(ute);
+        }
+    }
 }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmJobsReturnForXmlRpc.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmJobsReturnForXmlRpc.java
new file mode 100644
index 0000000..4f7676f
--- /dev/null
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmJobsReturnForXmlRpc.java
@@ -0,0 +1,35 @@
+package org.ovirt.engine.core.vdsbroker.vdsbroker;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.ovirt.engine.core.vdsbroker.irsbroker.StatusReturnForXmlRpc;
+import org.ovirt.engine.core.vdsbroker.xmlrpc.XmlRpcObjectDescriptor;
+
+@SuppressWarnings("unchecked")
+public class VmJobsReturnForXmlRpc extends StatusReturnForXmlRpc {
+    private static final String JOBS = "jobs";
+    public Map<String, Object>[] jobs;
+
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append("\n");
+        builder.append(super.toString());
+        builder.append("\n");
+        XmlRpcObjectDescriptor.toStringBuilder(jobs, builder);
+        return builder.toString();
+    }
+
+    public VmJobsReturnForXmlRpc(Map<String, Object> innerMap) {
+        super(innerMap);
+        Object[] temp = (Object[]) innerMap.get(JOBS);
+        if (temp != null) {
+            jobs = new HashMap[temp.length];
+            for (int i = 0; i < temp.length; i++) {
+                jobs[i] = (Map<String, Object>) temp[i];
+            }
+        }
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml
index 05e6623..ac940f8 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml
@@ -56,6 +56,11 @@
         <include name="common/businessentities/VmBalloonInfo.java" />
                <include name="common/businessentities/ArchitectureType.java" />
         <include name="common/businessentities/IscsiBond.java" />
+               <include name="common/businessentities/VmJobInfo.java" />
+               <include name="common/businessentities/VmJobState.java" />
+               <include name="common/businessentities/VmBlockJobInfo.java" />
+               <include name="common/businessentities/VmJobType.java" />
+               <include name="common/businessentities/VmBlockJobType.java" />
 
                <!-- Network business entities -->
                <include 
name="common/businessentities/network/VdsNetworkInterface.java" />


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

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

Reply via email to