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
