Muli Salem has uploaded a new change for review. Change subject: engine: Update VmGuestAgentInterfaces ......................................................................
engine: Update VmGuestAgentInterfaces This patch changes the objects that are returned from GetAllVmStats and GetVmStats to hold a list of VmGuestAgentInterfaces as well as VmDynamic and VmStatistics. This is meant to support the Vm Internal Information feature. Change-Id: I9a550ae0f1984e87a68c52e4da1a2a19469eb050 Signed-off-by: Muli Salem <msa...@redhat.com> --- M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetAllVmStatsVDSCommand.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetVmStatsVDSCommand.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java A backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInternalData.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmStatsVdsBrokerCommand.java 6 files changed, 133 insertions(+), 32 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/23/10123/1 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 a53b9ec..96ff2b2 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 @@ -72,11 +72,12 @@ import org.ovirt.engine.core.vdsbroker.vdsbroker.VDSRecoveringException; import org.ovirt.engine.core.vdsbroker.vdsbroker.VdsBrokerCommand; import org.ovirt.engine.core.vdsbroker.vdsbroker.VdsProperties; +import org.ovirt.engine.core.vdsbroker.vdsbroker.VmInternalData; import org.ovirt.engine.core.vdsbroker.xmlrpc.XmlRpcStruct; @SuppressWarnings({ "synthetic-access", "unchecked" }) public class VdsUpdateRunTimeInfo { - private Map<Guid, Entry<VmDynamic, VmStatistics>> _runningVms; + private Map<Guid, VmInternalData> _runningVms; private final Map<Guid, VmDynamic> _vmDynamicToSave = new HashMap<Guid, VmDynamic>(); private final Map<Guid, VmStatistics> _vmStatisticsToSave = new HashMap<Guid, VmStatistics>(); private final Map<Guid, List<VmNetworkInterface>> _vmInterfaceStatisticsToSave = @@ -811,7 +812,7 @@ command = new GetAllVmStatsVDSCommand<VdsIdAndVdsVDSCommandParametersBase>( new VdsIdAndVdsVDSCommandParametersBase(_vds)); } - _runningVms = (Map<Guid, Entry<VmDynamic, VmStatistics>>) command.ExecuteWithReturnValue(); + _runningVms = (Map<Guid, VmInternalData>) command.ExecuteWithReturnValue(); if (command.getVDSReturnValue().getSucceeded()) { List<VM> running = checkVmsStatusChanged(); @@ -855,8 +856,8 @@ private void handleVmDeviceChange() { // Go over all the vms and detemine which ones require updating List<String> vmsToUpdateFromVds = new ArrayList<String>(); - for (Entry<VmDynamic, VmStatistics> vmHelper : _runningVms.values()) { - VmDynamic vmDynamic = vmHelper.getKey(); + for (VmInternalData vmInternalData : _runningVms.values()) { + VmDynamic vmDynamic = vmInternalData.getVmDynamic(); if (vmDynamic != null) { VM vm = _vmDict.get(vmDynamic.getId()); if (vm != null) { @@ -1047,8 +1048,8 @@ List<VM> running = new ArrayList<VM>(); if (!_vdsManager.getRefreshStatistics()) { List<VmDynamic> tempRunningList = new ArrayList<VmDynamic>(); - for (Entry<VmDynamic, VmStatistics> runningVm : _runningVms.values()) { - tempRunningList.add(runningVm.getKey()); + for (VmInternalData runningVm : _runningVms.values()) { + tempRunningList.add(runningVm.getVmDynamic()); } for (VmDynamic runningVm : tempRunningList) { VM vmToUpdate = null; @@ -1063,7 +1064,7 @@ command.Execute(); if (command.getVDSReturnValue().getSucceeded()) { _runningVms.put(runningVm.getId(), - (Entry<VmDynamic, VmStatistics>) command.getReturnValue()); + (VmInternalData) command.getReturnValue()); } else { _runningVms.remove(runningVm.getId()); } @@ -1081,8 +1082,8 @@ * Delete all vms with status Down */ private void proceedDownVms() { - for (Entry<VmDynamic, VmStatistics> vm_helper : _runningVms.values()) { - VmDynamic vm = vm_helper.getKey(); + for (VmInternalData vmInternalData : _runningVms.values()) { + VmDynamic vm = vmInternalData.getVmDynamic(); if (vm.getstatus() != VMStatus.Down) { continue; } @@ -1229,8 +1230,8 @@ } private void updateRepository(List<VM> running) { - for (Entry<VmDynamic, VmStatistics> vm_helper : _runningVms.values()) { - VmDynamic runningVm = vm_helper.getKey(); + for (VmInternalData vmInternalData : _runningVms.values()) { + VmDynamic runningVm = vmInternalData.getVmDynamic(); VM vmToUpdate = null; vmToUpdate = _vmDict.get(runningVm.getId()); @@ -1390,7 +1391,7 @@ else if (vmToRemove.isAutoStartup() && !_autoVmsToRun.contains(vmGuid) && (!_runningVms.containsKey(vmGuid) || (_runningVms.containsKey(vmGuid) && _runningVms.get(vmGuid) - .getKey() + .getVmDynamic() .getExitStatus() != VmExitStatus.Normal))) { _autoVmsToRun.add(vmGuid); } @@ -1538,12 +1539,12 @@ private void UpdateVmStatistics(VM vmToUpdate) { // check if time for vm statistics refresh - update cache and DB if (_vdsManager.getRefreshStatistics()) { - VmStatistics vmStatistics = _runningVms.get(vmToUpdate.getId()).getValue(); + VmStatistics vmStatistics = _runningVms.get(vmToUpdate.getId()).getVmStatistics(); vmToUpdate.updateRunTimeStatisticsData(vmStatistics, vmToUpdate); AddVmStatisticsToList(vmToUpdate.getStatisticsData()); UpdateInterfaceStatistics(vmToUpdate, vmStatistics); - for (DiskImageDynamic imageDynamic : _runningVms.get(vmToUpdate.getId()).getKey().getDisks()) { + for (DiskImageDynamic imageDynamic : _runningVms.get(vmToUpdate.getId()).getVmDynamic().getDisks()) { _vmDiskImageDynamicToSave.put(imageDynamic.getId(), imageDynamic); } } diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetAllVmStatsVDSCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetAllVmStatsVDSCommand.java index 2cbdc36..1b3fdc0 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetAllVmStatsVDSCommand.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetAllVmStatsVDSCommand.java @@ -1,10 +1,7 @@ package org.ovirt.engine.core.vdsbroker.vdsbroker; -import org.ovirt.engine.core.common.businessentities.VmDynamic; -import org.ovirt.engine.core.common.businessentities.VmStatistics; import org.ovirt.engine.core.common.vdscommands.VdsIdAndVdsVDSCommandParametersBase; import org.ovirt.engine.core.compat.Guid; -import org.ovirt.engine.core.compat.KeyValuePairCompat; import org.ovirt.engine.core.utils.log.Logged; import org.ovirt.engine.core.utils.log.Logged.LogLevel; @@ -18,14 +15,11 @@ protected void ExecuteVdsBrokerCommand() { mVmListReturn = getBroker().getAllVmStats(); ProceedProxyReturnValue(); - java.util.HashMap<Guid, java.util.Map.Entry<VmDynamic, VmStatistics>> returnVMs = - new java.util.HashMap<Guid, java.util.Map.Entry<VmDynamic, VmStatistics>>(); + java.util.HashMap<Guid, VmInternalData> returnVMs = + new java.util.HashMap<Guid, VmInternalData>(); for (int idx = 0; idx < mVmListReturn.mInfoList.length; ++idx) { - VmDynamic vmDynamic = new ExtendedVmDynamic(getVds()); - VdsBrokerObjectsBuilder.updateVMDynamicData(vmDynamic, mVmListReturn.mInfoList[idx]); - VmStatistics vmStatistics = VdsBrokerObjectsBuilder.buildVMStatisticsData(mVmListReturn.mInfoList[idx]); - returnVMs.put(vmDynamic.getId(), new KeyValuePairCompat<VmDynamic, VmStatistics>(vmDynamic, - vmStatistics)); + VmInternalData vmExternalData = getVmExternalDataFromInfoList(mVmListReturn.mInfoList[idx]); + returnVMs.put(vmExternalData.getVmDynamic().getId(), vmExternalData); } setReturnValue(returnVMs); } diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetVmStatsVDSCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetVmStatsVDSCommand.java index d956694..48213be 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetVmStatsVDSCommand.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/GetVmStatsVDSCommand.java @@ -1,9 +1,6 @@ package org.ovirt.engine.core.vdsbroker.vdsbroker; -import org.ovirt.engine.core.common.businessentities.VmDynamic; -import org.ovirt.engine.core.common.businessentities.VmStatistics; import org.ovirt.engine.core.common.vdscommands.GetVmStatsVDSCommandParameters; -import org.ovirt.engine.core.compat.KeyValuePairCompat; import org.ovirt.engine.core.utils.log.Logged; import org.ovirt.engine.core.utils.log.Logged.LogLevel; @@ -17,10 +14,6 @@ protected void ExecuteVdsBrokerCommand() { mVmListReturn = getBroker().getVmStats(getParameters().getVmId().toString()); ProceedProxyReturnValue(); - VmDynamic vmDynamic = new ExtendedVmDynamic(getVds()); - VdsBrokerObjectsBuilder.updateVMDynamicData(vmDynamic, mVmListReturn.mInfoList[0]); - setReturnValue(new KeyValuePairCompat<VmDynamic, VmStatistics>( - vmDynamic, - VdsBrokerObjectsBuilder.buildVMStatisticsData(mVmListReturn.mInfoList[0]))); + setReturnValue(getVmExternalDataFromInfoList(mVmListReturn.mInfoList[0])); } } 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 9c8d3fe..169c2a3 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.VdsTransparentHugePagesState; 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.VmNetworkInterface; import org.ovirt.engine.core.common.businessentities.VmPauseStatus; import org.ovirt.engine.core.common.businessentities.VmStatistics; @@ -1296,4 +1297,9 @@ } private static final Log log = LogFactory.getLog(VdsBrokerObjectsBuilder.class); + + public static List<VmGuestAgentInterface> buildVmGuestAgentInterfacesData(XmlRpcStruct xmlRpcStruct) { + // TODO: implement + return null; + } } diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInternalData.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInternalData.java new file mode 100644 index 0000000..8d6c0a5 --- /dev/null +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInternalData.java @@ -0,0 +1,97 @@ +package org.ovirt.engine.core.vdsbroker.vdsbroker; + +import java.util.List; + +import org.ovirt.engine.core.common.businessentities.VmDynamic; +import org.ovirt.engine.core.common.businessentities.VmGuestAgentInterface; +import org.ovirt.engine.core.common.businessentities.VmStatistics; + +/** + * This class represents the dynamic data of a VM, including {@link VmDynamic}, {@link VmStatistics} and + * {@link VmGuestAgentInterface}, to manage data received from the VM's host. + */ +public class VmInternalData { + + private VmDynamic vmDynamic; + private VmStatistics vmStatistics; + private List<VmGuestAgentInterface> vmGuestAgentInterfaces; + + public VmInternalData(VmDynamic vmDynamic, + VmStatistics vmStatistics, + List<VmGuestAgentInterface> vmGuestAgentInterfaces) { + this.vmDynamic = vmDynamic; + this.vmStatistics = vmStatistics; + this.vmGuestAgentInterfaces = vmGuestAgentInterfaces; + } + + public VmDynamic getVmDynamic() { + return vmDynamic; + } + + public void setVmDynamic(VmDynamic vmDynamic) { + this.vmDynamic = vmDynamic; + } + + public VmStatistics getVmStatistics() { + return vmStatistics; + } + + public void setVmStatistics(VmStatistics vmStatistics) { + this.vmStatistics = vmStatistics; + } + + public List<VmGuestAgentInterface> getVmGuestAgentInterfaces() { + return vmGuestAgentInterfaces; + } + + public void setVmGuestAgentInterfaces(List<VmGuestAgentInterface> vmGuestAgentInterfaces) { + this.vmGuestAgentInterfaces = vmGuestAgentInterfaces; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((vmDynamic == null) ? 0 : vmDynamic.hashCode()); + result = prime * result + ((vmGuestAgentInterfaces == null) ? 0 : vmGuestAgentInterfaces.hashCode()); + result = prime * result + ((vmStatistics == null) ? 0 : vmStatistics.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + VmInternalData other = (VmInternalData) obj; + if (vmDynamic == null) { + if (other.vmDynamic != null) { + return false; + } + } else if (!vmDynamic.equals(other.vmDynamic)) { + return false; + } + if (vmGuestAgentInterfaces == null) { + if (other.vmGuestAgentInterfaces != null) { + return false; + } + } else if (!vmGuestAgentInterfaces.equals(other.vmGuestAgentInterfaces)) { + return false; + } + if (vmStatistics == null) { + if (other.vmStatistics != null) { + return false; + } + } else if (!vmStatistics.equals(other.vmStatistics)) { + return false; + } + return true; + } + +} 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 6b0f491..5446f52 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 @@ -1,7 +1,9 @@ package org.ovirt.engine.core.vdsbroker.vdsbroker; import org.ovirt.engine.core.common.businessentities.VDS; +import org.ovirt.engine.core.common.businessentities.VmDynamic; import org.ovirt.engine.core.common.vdscommands.VdsIdVDSCommandParametersBase; +import org.ovirt.engine.core.vdsbroker.xmlrpc.XmlRpcStruct; public abstract class VmStatsVdsBrokerCommand<P extends VdsIdVDSCommandParametersBase> extends VdsBrokerCommand<P> { protected VMInfoListReturnForXmlRpc mVmListReturn; @@ -24,4 +26,12 @@ protected Object getReturnValueFromBroker() { return mVmListReturn; } + + protected VmInternalData getVmExternalDataFromInfoList(XmlRpcStruct xmlRpcStruct) { + VmDynamic vmDynamic = new ExtendedVmDynamic(getVds()); + VdsBrokerObjectsBuilder.updateVMDynamicData(vmDynamic, xmlRpcStruct); + return new VmInternalData(vmDynamic, + VdsBrokerObjectsBuilder.buildVMStatisticsData(xmlRpcStruct), + VdsBrokerObjectsBuilder.buildVmGuestAgentInterfacesData(xmlRpcStruct)); + } } -- To view, visit http://gerrit.ovirt.org/10123 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9a550ae0f1984e87a68c52e4da1a2a19469eb050 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Muli Salem <msa...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches