Arik Hadas has uploaded a new change for review. Change subject: core: move vdsm timestamp to VmInternalData ......................................................................
core: move vdsm timestamp to VmInternalData Move the timestamp we get from VDSM on List/VmStats/AllVmStats to be in VmInternalData instead of VmDynamic. This information does not belong to VmDynamic since it neither describes a dynamic property of a VM nor something else about the properties of the VM. This field represents kind of meta-data about the message that was received. Change-Id: I1a1f37ca4ce4d0af0ff05bc7531074e3adfafa4e Signed-off-by: Arik Hadas <aha...@redhat.com> --- M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDynamic.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/ResourceManager.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/VmAnalyzer.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmsMonitoring.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/EventVMStatsRefresher.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/ListVDSCommand.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/VmStatsVdsBrokerCommand.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/entities/VmInternalData.java 11 files changed, 47 insertions(+), 65 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/64/42464/1 diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java index f8652cc..deb1b8d 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java @@ -647,14 +647,6 @@ this.vmDynamic.setSession(value); } - public Double getStatusUpdatedTime() { - return this.vmDynamic.getStatusUpdatedTime(); - } - - public void setStatusUpdatedTime(Double statusUpdatedTime) { - this.vmDynamic.setStatusUpdatedTime(statusUpdatedTime); - } - public BootSequence getBootSequence() { return this.vmDynamic.getBootSequence(); } @@ -1418,7 +1410,6 @@ getDynamicData().setGuestMemoryBuffered(vm.getGuestMemoryBuffered()); getDynamicData().setGuestMemoryCached(vm.getGuestMemoryCached()); getDynamicData().setGuestMemoryFree(vm.getGuestMemoryFree()); - getDynamicData().setStatusUpdatedTime(vm.getStatusUpdatedTime()); setGuestOsArch(vm.getGuestOsArch()); setGuestOsCodename(vm.getGuestOsCodename()); setGuestOsDistribution(vm.getGuestOsDistribution()); diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDynamic.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDynamic.java index c390221..a196dbb 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDynamic.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDynamic.java @@ -2,15 +2,15 @@ import java.util.ArrayList; import java.util.Date; - import java.util.HashMap; import java.util.Map; + +import org.codehaus.jackson.annotate.JsonIgnore; import org.ovirt.engine.core.common.businessentities.comparators.BusinessEntityComparator; import org.ovirt.engine.core.common.businessentities.storage.DiskImageDynamic; import org.ovirt.engine.core.common.utils.EnumUtils; import org.ovirt.engine.core.common.utils.ObjectUtils; import org.ovirt.engine.core.compat.Guid; -import org.codehaus.jackson.annotate.JsonIgnore; public class VmDynamic implements BusinessEntityWithStatus<Guid, VMStatus>, Comparable<VmDynamic> { private static final long serialVersionUID = 7789482445091432555L; @@ -76,7 +76,6 @@ private Long guestMemoryCached; private Long guestMemoryBuffered; private Long guestMemoryFree; - private Double statusUpdatedTime; private String guestOsVersion; private String guestOsDistribution; private String guestOsCodename; @@ -271,7 +270,6 @@ exitReason = VmExitReason.Unknown; graphicsInfos = new HashMap<GraphicsType, GraphicsInfo>(); guestAgentStatus = GuestAgentStatus.DoesntExist; - statusUpdatedTime = -1d; guestOsTimezoneName = ""; guestOsTimezoneOffset = 0; guestOsVersion = ""; @@ -328,7 +326,6 @@ guestMemoryCached = template.getGuestMemoryCached(); guestMemoryBuffered = template.getGuestMemoryBuffered(); guestMemoryFree = template.getGuestMemoryFree(); - statusUpdatedTime = template.getStatusUpdatedTime(); guestOsVersion = template.getGuestOsVersion(); guestOsDistribution = template.getGuestOsDistribution(); guestOsCodename = template.getGuestOsCodename(); @@ -659,14 +656,6 @@ public void setGuestMemoryFree(Long guestMemoryFree) { this.guestMemoryFree = guestMemoryFree; - } - - public void setStatusUpdatedTime(Double statusUpdatedTime) { - this.statusUpdatedTime = statusUpdatedTime; - } - - public Double getStatusUpdatedTime() { - return this.statusUpdatedTime; } public int getGuestOsTimezoneOffset() { diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/ResourceManager.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/ResourceManager.java index 2cb1d86..1aec2c6 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/ResourceManager.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/ResourceManager.java @@ -352,25 +352,19 @@ * @param vm * @param status */ - public void InternalSetVmStatus(VM vm, final VMStatus status, final Double statusUpdatedTime) { - InternalSetVmStatus(vm, status, VmExitStatus.Normal, StringUtils.EMPTY, VmExitReason.Unknown, statusUpdatedTime); - } - public void InternalSetVmStatus(VM vm, final VMStatus status) { - InternalSetVmStatus(vm, status, VmExitStatus.Normal, StringUtils.EMPTY, VmExitReason.Unknown, vm.getStatusUpdatedTime()); + InternalSetVmStatus(vm, status, VmExitStatus.Normal, StringUtils.EMPTY, VmExitReason.Unknown); } public void InternalSetVmStatus(VM vm, final VMStatus status, VmExitStatus exitStatus) { - InternalSetVmStatus(vm, status, exitStatus, StringUtils.EMPTY, VmExitReason.Unknown, vm.getStatusUpdatedTime()); + InternalSetVmStatus(vm, status, exitStatus, StringUtils.EMPTY, VmExitReason.Unknown); } - public void InternalSetVmStatus(VM vm, final VMStatus status, final VmExitStatus exitStaus, final String exitMessage, final VmExitReason exitReason, - final Double statusUpdatedTime) { + public void InternalSetVmStatus(VM vm, final VMStatus status, final VmExitStatus exitStaus, final String exitMessage, final VmExitReason exitReason) { vm.setStatus(status); vm.setExitStatus(exitStaus); vm.setExitMessage(exitMessage); vm.setExitReason(exitReason); - vm.setStatusUpdatedTime(statusUpdatedTime); boolean isVmNotRunning = status.isNotRunning(); 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 12181d1..eb89c2c 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 @@ -64,6 +64,7 @@ import org.ovirt.engine.core.vdsbroker.vdsbroker.IVdsServer; import org.ovirt.engine.core.vdsbroker.vdsbroker.VDSNetworkException; import org.ovirt.engine.core.vdsbroker.vdsbroker.VDSRecoveringException; +import org.ovirt.engine.core.vdsbroker.vdsbroker.entities.VmInternalData; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -170,14 +171,14 @@ return Injector.get(SchedulerUtilQuartzImpl.class); } - public boolean shouldUpdateVmStatus(VmDynamic vmDynamic) { - Guid id = vmDynamic.getId(); + public boolean shouldUpdateVmStatus(VmInternalData vmInternalData) { + Guid id = vmInternalData.getVmDynamic().getId(); if (!vmStatusUpdated.containsKey(id)) { - vmStatusUpdated.put(id, vmDynamic.getStatusUpdatedTime()); + vmStatusUpdated.put(id, vmInternalData.getTimestamp()); return true; } Double knownStatusUpdate = vmStatusUpdated.get(id); - Double statusUpdateTime = vmDynamic.getStatusUpdatedTime(); + Double statusUpdateTime = vmInternalData.getTimestamp(); if (knownStatusUpdate <= statusUpdateTime) { vmStatusUpdated.replace(id, statusUpdateTime); return true; diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmAnalyzer.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmAnalyzer.java index 3575bc0..8f6c7b8 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmAnalyzer.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmAnalyzer.java @@ -151,14 +151,13 @@ // when going to suspend, delete vm from cache later if (status == VMStatus.SavingState) { - vmsMonitoring.getResourceManager().InternalSetVmStatus(dbVm, VMStatus.Suspended, vdsmVm.getVmDynamic().getStatusUpdatedTime()); + vmsMonitoring.getResourceManager().InternalSetVmStatus(dbVm, VMStatus.Suspended); } clearVm(vdsmVm.getVmDynamic().getExitStatus(), vdsmVm.getVmDynamic().getExitMessage(), - vdsmVm.getVmDynamic().getExitReason(), - vdsmVm.getVmDynamic().getStatusUpdatedTime()); + vdsmVm.getVmDynamic().getExitReason()); } VmStatistics vmStatistics = vmsMonitoring.getDbFacade().getVmStatisticsDao().get(vdsmVm.getVmDynamic() @@ -237,7 +236,7 @@ ResourceManager.getInstance().RemoveAsyncRunningVm(vm.getId()); } - private void clearVm(VmExitStatus exitStatus, String exitMessage, VmExitReason vmExistReason, Double statusUpdatedTime) { + private void clearVm(VmExitStatus exitStatus, String exitMessage, VmExitReason vmExistReason) { if (dbVm.getStatus() != VMStatus.MigratingFrom) { // we must check that vm.getStatus() != VMStatus.Down because if it was set to down // the exit status and message were set, and we don't want to override them here. @@ -247,8 +246,7 @@ VMStatus.Down, exitStatus, exitMessage, - vmExistReason, - statusUpdatedTime); + vmExistReason); } saveDynamic(dbVm.getDynamicData()); saveStatistics(); @@ -294,8 +292,7 @@ VMStatus.Down, vdsmVm.getVmDynamic().getExitStatus(), vdsmVm.getVmDynamic().getExitMessage(), - vdsmVm.getVmDynamic().getExitReason(), - vdsmVm.getVmDynamic().getStatusUpdatedTime()); + vdsmVm.getVmDynamic().getExitReason()); saveDynamic(dbVm.getDynamicData()); saveStatistics(); saveVmInterfaces(); @@ -611,7 +608,7 @@ clearVm(VmExitStatus.Error, String.format("Could not find VM %s on host, assuming it went down unexpectedly", dbVm.getName()), - VmExitReason.GenericError, dbVm.getStatusUpdatedTime()); + VmExitReason.GenericError); } log.info("VM '{}({}) is running in db and not running in VDS '{}'", @@ -656,7 +653,7 @@ newVmStatus); // if the DST host goes unresponsive it will take care all MigratingTo and unknown VMs - vmsMonitoring.getResourceManager().InternalSetVmStatus(vmToRemove, newVmStatus, vmToRemove.getStatusUpdatedTime()); + vmsMonitoring.getResourceManager().InternalSetVmStatus(vmToRemove, newVmStatus); // save the VM state saveDynamic(vmToRemove.getDynamicData()); diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmsMonitoring.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmsMonitoring.java index 9752de8..1e4bd17 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmsMonitoring.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmsMonitoring.java @@ -148,7 +148,7 @@ if (vmId != null) { VmManager vmManager = getResourceManager().getVmManager(vmId); - if (vdsManager.shouldUpdateVmStatus(pair.getSecond().getVmDynamic()) && vmManager.trylock()) { + if (vdsManager.shouldUpdateVmStatus(pair.getSecond()) && vmManager.trylock()) { if (fetchTime - vmManager.getVmDataChangedTime() <= 0) { log.warn("skipping VM '{}' from this monitoring cycle" + " - the VM data has changed since fetching the data", vmId); diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/EventVMStatsRefresher.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/EventVMStatsRefresher.java index de3dcbb..d82c24a 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/EventVMStatsRefresher.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/EventVMStatsRefresher.java @@ -106,8 +106,6 @@ vmDynamic.setStatus(convertToVmStatus((String) xmlRpcStruct.get(VdsProperties.status))); } - vmDynamic.setStatusUpdatedTime(notifyTime); - if (xmlRpcStruct.containsKey(VdsProperties.hash)) { vmDynamic.setHash((String) xmlRpcStruct.get(VdsProperties.hash)); } @@ -127,7 +125,7 @@ vmDynamic.setExitReason(VmExitReason.Unknown); } - return new VmInternalData(vmDynamic, dbVm.getStatisticsData()); + return new VmInternalData(vmDynamic, dbVm.getStatisticsData(), notifyTime); } private Double parseDouble(Object value) { diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/ListVDSCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/ListVDSCommand.java index e85942f..1add093 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/ListVDSCommand.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/ListVDSCommand.java @@ -24,8 +24,9 @@ proceedProxyReturnValue(); Map<Guid, VmInternalData> returnVMs = new HashMap<Guid, VmInternalData>(); for (int idx = 0; idx < mVmListReturn.mVmList.length; ++idx) { - VmDynamic dynamicData = VdsBrokerObjectsBuilder.buildVMDynamicDataFromList(mVmListReturn.mVmList[idx]); - VmInternalData vmData = new VmInternalData(dynamicData); + Map<String, Object> vm = mVmListReturn.mVmList[idx]; + VmDynamic dynamicData = VdsBrokerObjectsBuilder.buildVMDynamicDataFromList(vm); + VmInternalData vmData = new VmInternalData(dynamicData, VdsBrokerObjectsBuilder.getVdsmTimestamp(vm)); returnVMs.put(dynamicData.getId(), vmData); } setReturnValue(returnVMs); 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 c36d847..74abe1e 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 @@ -198,11 +198,14 @@ if (xmlRpcStruct.containsKey(VdsProperties.status)) { vmdynamic.setStatus(convertToVmStatus((String) xmlRpcStruct.get(VdsProperties.status))); } - if (xmlRpcStruct.containsKey(VdsProperties.statusTime)) { - vmdynamic.setStatusUpdatedTime(VdsBrokerObjectsBuilder.AssignDoubleValue(xmlRpcStruct, - VdsProperties.statusTime)); - } return vmdynamic; + } + + public static Double getVdsmTimestamp(Map<String, Object> xmlRpcStruct) { + if (xmlRpcStruct.containsKey(VdsProperties.statusTime)) { + return AssignDoubleValue(xmlRpcStruct, VdsProperties.statusTime); + } + return -1d; } public static VmDynamic buildVMDynamicData(Map<String, Object> xmlRpcStruct) { @@ -281,10 +284,6 @@ } if (xmlRpcStruct.containsKey(VdsProperties.status)) { vm.setStatus(convertToVmStatus((String) xmlRpcStruct.get(VdsProperties.status))); - } - if (xmlRpcStruct.containsKey(VdsProperties.statusTime)) { - vm.setStatusUpdatedTime(VdsBrokerObjectsBuilder.AssignDoubleValue(xmlRpcStruct, - VdsProperties.statusTime)); } boolean hasGraphicsInfo = updateGraphicsInfo(vm, xmlRpcStruct); diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmStatsVdsBrokerCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmStatsVdsBrokerCommand.java index 5a4dfb0..3241dd7 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmStatsVdsBrokerCommand.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmStatsVdsBrokerCommand.java @@ -33,7 +33,8 @@ return new VmInternalData(vmDynamic, VdsBrokerObjectsBuilder.buildVMStatisticsData(xmlRpcStruct), VdsBrokerObjectsBuilder.buildVmGuestAgentInterfacesData(vmDynamic.getId(), xmlRpcStruct), - VdsBrokerObjectsBuilder.buildVmLunDisksData(xmlRpcStruct)); + VdsBrokerObjectsBuilder.buildVmLunDisksData(xmlRpcStruct), + VdsBrokerObjectsBuilder.getVdsmTimestamp(xmlRpcStruct)); } /** diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/entities/VmInternalData.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/entities/VmInternalData.java index 95b8f1e..7a6c167 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/entities/VmInternalData.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/entities/VmInternalData.java @@ -18,26 +18,30 @@ private VmDynamic vmDynamic; private VmStatistics vmStatistics; private List<VmGuestAgentInterface> vmGuestAgentInterfaces; + /** Timestamp on the dynamic data we get from VDSM */ + private Double timestamp; // A map represents VM's LUN disks (LUN ID -> LUNs object) private Map<String, LUNs> lunsMap; - public VmInternalData(VmDynamic vmDynamic) { - this(vmDynamic, null, null, null); + public VmInternalData(VmDynamic vmDynamic, Double timestamp) { + this(vmDynamic, null, timestamp); } - public VmInternalData(VmDynamic vmDynamic, VmStatistics vmStatistics) { - this(vmDynamic, vmStatistics, null, Collections.<String, LUNs>emptyMap()); + public VmInternalData(VmDynamic vmDynamic, VmStatistics vmStatistics, Double timestamp) { + this(vmDynamic, vmStatistics, null, Collections.<String, LUNs>emptyMap(), timestamp); } public VmInternalData(VmDynamic vmDynamic, VmStatistics vmStatistics, List<VmGuestAgentInterface> vmGuestAgentInterfaces, - Map<String, LUNs> lunsMap) { + Map<String, LUNs> lunsMap, + Double timestamp) { this.vmDynamic = vmDynamic; this.vmStatistics = vmStatistics; this.vmGuestAgentInterfaces = vmGuestAgentInterfaces; this.lunsMap = lunsMap; + this.timestamp = timestamp; } public VmDynamic getVmDynamic() { @@ -126,4 +130,11 @@ return true; } + public Double getTimestamp() { + return timestamp; + } + + public void setTimestamp(Double timestamp) { + this.timestamp = timestamp; + } } -- To view, visit https://gerrit.ovirt.org/42464 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1a1f37ca4ce4d0af0ff05bc7531074e3adfafa4e Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Arik Hadas <aha...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches