Arik Hadas has uploaded a new change for review.

Change subject: core: introduce v2v jobs
......................................................................

core: introduce v2v jobs

Introduce jobs that represent a conversion done by virt-v2v. VDSM
reports these jobs in the statistics, they are received by the
host-monitoring and stored in VdsManager so they will be available later
on for monitoring by the convert-command.

Change-Id: Id289c99db807a359b195127736326d9d1b1bbd23
Signed-off-by: Arik Hadas <[email protected]>
---
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/V2VJob.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VdsStatistics.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/HostMonitoring.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
M 
frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml
7 files changed, 125 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/50/40650/1

diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/V2VJob.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/V2VJob.java
new file mode 100644
index 0000000..4e6be36
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/V2VJob.java
@@ -0,0 +1,62 @@
+package org.ovirt.engine.core.common.businessentities;
+
+import org.ovirt.engine.core.compat.Guid;
+
+public class V2VJob implements BusinessEntity<Guid> {
+
+    private Guid id;
+    private String status;
+    private String step;
+    private int progress;
+
+    @Override
+    public Guid getId() {
+        return id;
+    }
+
+    @Override
+    public void setId(Guid id) {
+        this.id = id;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public boolean isDone() {
+        return "done".equals(step);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof V2VJob) {
+            return id.equals(((V2VJob) obj).id);
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return id.hashCode();
+    }
+
+    public String getStep() {
+        return step;
+    }
+
+    public void setStep(String step) {
+        this.step = step;
+    }
+
+    public int getProgress() {
+        return progress;
+    }
+
+    public void setProgress(int progress) {
+        this.progress = progress;
+    }
+}
\ No newline at end of file
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VdsStatistics.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VdsStatistics.java
index b1ceb4e..4204297 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VdsStatistics.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VdsStatistics.java
@@ -41,6 +41,7 @@
     private Date cpuOverCommitTimeStamp;
 
     private List<CpuStatistics> cpuCoreStatistics;
+    private List<V2VJob> v2vJobs;
 
     public VdsStatistics() {
         cpuIdle = BigDecimal.ZERO;
@@ -342,4 +343,12 @@
     public void setCpuOverCommitTimeStamp(Date value) {
         cpuOverCommitTimeStamp = value;
     }
+
+    public List<V2VJob> getV2VJobs() {
+        return v2vJobs;
+    }
+
+    public void setV2VJobs(List<V2VJob> v2vJobs) {
+        this.v2vJobs = v2vJobs;
+    }
 }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/HostMonitoring.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/HostMonitoring.java
index b0e33b7f..659a304 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/HostMonitoring.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/HostMonitoring.java
@@ -16,6 +16,7 @@
 import org.ovirt.engine.core.common.businessentities.Entities;
 import org.ovirt.engine.core.common.businessentities.IVdsEventListener;
 import org.ovirt.engine.core.common.businessentities.NonOperationalReason;
+import org.ovirt.engine.core.common.businessentities.V2VJob;
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.businessentities.VDSStatus;
 import org.ovirt.engine.core.common.businessentities.VM;
@@ -462,6 +463,7 @@
         VDSReturnValue statsReturnValue = 
getResourceManager().runVdsCommand(VDSCommandType.GetStats,
                 new VdsIdAndVdsVDSCommandParametersBase(vds));
         getVdsEventListener().updateSchedulingStats(vds);
+        updateV2VJobs();
         if (!statsReturnValue.getSucceeded()
                 && statsReturnValue.getExceptionObject() != null) {
             log.error(" Failed getting vds stats,  vds='{}'({}): {}",
@@ -482,6 +484,19 @@
         }
     }
 
+    protected void updateV2VJobs() {
+        if (vds.getStatisticsData().getV2VJobs() == null) {
+            return;
+        }
+
+        Map<Guid, V2VJob> v2vJobs = new HashMap<>();
+        for (V2VJob v2vJob : vds.getStatisticsData().getV2VJobs()) {
+            log.debug("got vds job: " + v2vJob.getId());
+            v2vJobs.put(v2vJob.getId(), v2vJob);
+        }
+        vdsManager.setV2VJobs(v2vJobs);
+    }
+
     private void fetchHostInterfaces() {
         List<VdsNetworkInterface> nics;
         if (vds.getInterfaces().isEmpty()) {
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java
index 1a34292..a8e7709 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsManager.java
@@ -3,6 +3,7 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
@@ -15,6 +16,7 @@
 import org.ovirt.engine.core.common.FeatureSupported;
 import org.ovirt.engine.core.common.businessentities.NonOperationalReason;
 import org.ovirt.engine.core.common.businessentities.SELinuxMode;
+import org.ovirt.engine.core.common.businessentities.V2VJob;
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.businessentities.VDSDomainsData;
 import org.ovirt.engine.core.common.businessentities.VDSStatus;
@@ -87,6 +89,7 @@
     private HostMonitoring hostMonitoring;
     private boolean monitoringNeeded;
     private List<Pair<VM, VmInternalData>> lastVmsList = 
Collections.emptyList();
+    private Map<Guid, V2VJob> v2vJobs = new HashMap<>();
 
     public VdsManager(VDS vds, AuditLogDirector auditLogDirector) {
         this.auditLogDirector = auditLogDirector;
@@ -954,4 +957,12 @@
             setInitialized(true);
         }
     }
+
+    public V2VJob getV2VJobForVm(Guid vmId) {
+        return v2vJobs.get(vmId);
+    }
+
+    void setV2VJobs(Map<Guid, V2VJob> v2vJobs) {
+        this.v2vJobs = v2vJobs;
+    }
 }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java
index 8699cb4..2e53803 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java
@@ -32,6 +32,7 @@
 import org.ovirt.engine.core.common.businessentities.NumaNodeStatistics;
 import org.ovirt.engine.core.common.businessentities.SessionState;
 import org.ovirt.engine.core.common.businessentities.StoragePool;
+import org.ovirt.engine.core.common.businessentities.V2VJob;
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.businessentities.VDSDomainsData;
 import org.ovirt.engine.core.common.businessentities.VM;
@@ -1011,7 +1012,28 @@
         vds.setBootTime(AssignLongValue(xmlRpcStruct, VdsProperties.bootTime));
 
         updateNumaStatisticsData(vds, xmlRpcStruct);
+        updateV2VJobs(vds, xmlRpcStruct);
+    }
 
+    private static void updateV2VJobs(VDS vds, Map<String, Object> 
xmlRpcStruct) {
+        if (!xmlRpcStruct.containsKey(VdsProperties.v2vJobs)) {
+            return;
+        }
+
+        List<V2VJob> v2vJobs = new ArrayList<>();
+        for (Entry<String, Object> job : ((Map<String, Object>) 
xmlRpcStruct.get(VdsProperties.v2vJobs)).entrySet()) {
+            v2vJobs.add(buildV2VJobData(job.getKey(), (Map<String, Object>) 
job.getValue()));
+        }
+        vds.getStatisticsData().setV2vJobs(v2vJobs);
+    }
+
+    private static V2VJob buildV2VJobData(String jobId, Map<String, Object> 
xmlRpcStruct) {
+        V2VJob job = new V2VJob();
+        job.setId(Guid.createGuidFromString(jobId));
+        job.setStatus(AssignStringValue(xmlRpcStruct, VdsProperties.status));
+        job.setStep(AssignStringValue(xmlRpcStruct, VdsProperties.v2vStep));
+        job.setProgress(AssignIntValue(xmlRpcStruct, 
VdsProperties.v2vStepProgress));
+        return job;
     }
 
     private static void extractInterfaceStatistics(Map<String, Object> dict, 
NetworkInterface<?> iface) {
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 f647845..bc4487d 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
@@ -456,6 +456,11 @@
     public static final String serverType = "serverType";
     public static final String target = "target";
 
+    // V2V Jobs
+    public static final String v2vJobs = "v2vJobs";
+    public static final String v2vStep = "description";
+    public static final String v2vStepProgress = "progress";
+
     // VM Jobs
     public static final String vmJobs = "vmJobs";
     public static final String vmJobId = "id";
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 6cab8f8..019a4d7 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
@@ -17,6 +17,7 @@
         <include name="common/businessentities/aaa/AuthzGroup.java" />
         <include name="common/businessentities/aaa/DbGroup.java" />
         <include name="common/businessentities/aaa/DbUser.java" />
+        <include name="common/businessentities/V2VJob.java" />
         <include name="common/businessentities/EngineSession.java" />
         <include name="common/businessentities/UserSession.java" />
         <include name="aaa/AuthType.java" />


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

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

Reply via email to