package org.ovirt.engine.core.vdsbroker.monitoring;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import org.ovirt.engine.core.common.businessentities.VmBalloonInfo;
import org.ovirt.engine.core.common.businessentities.VmDynamic;
import org.ovirt.engine.core.common.businessentities.VmGuestAgentInterface;
import org.ovirt.engine.core.common.businessentities.VmJob;
import org.ovirt.engine.core.common.businessentities.VmStatistics;
import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface;
import org.ovirt.engine.core.common.businessentities.storage.DiskImageDynamic;
import org.ovirt.engine.core.common.businessentities.storage.LUNs;
import org.ovirt.engine.core.compat.Guid;
/**
* This class represents the internal data of a VM, including {@link VmDynamic}, {@link VmStatistics} and
* {@link VmGuestAgentInterface}, to manage data received from the VM's host.
*/
public class VdsmVm {
private VmDynamic vmDynamic;
private VmStatistics vmStatistics;
private List<VmGuestAgentInterface> vmGuestAgentInterfaces;
/** Timestamp on the dynamic data we get from VDSM */
private Double timestamp;
private String devicesHash;
// A map represents VM's LUN disks (LUN ID -> LUNs object)
private Map<String, LUNs> lunsMap;
private List<VmJob> vmJobs;
private List<VmNetworkInterface> interfaceStatistics;
private VmBalloonInfo vmBalloonInfo;
private List<DiskImageDynamic> diskStatistics;
public VdsmVm(Double timestamp) {
this.lunsMap = Collections.emptyMap();
this.timestamp = timestamp;
}
public Guid getId() {
return vmDynamic.getId();
}
public VmDynamic getVmDynamic() {
return vmDynamic;
}
public VdsmVm setVmDynamic(VmDynamic vmDynamic) {
this.vmDynamic = vmDynamic;
return this;
}
public VmStatistics getVmStatistics() {
return vmStatistics;
}
public VdsmVm setVmStatistics(VmStatistics vmStatistics) {
this.vmStatistics = vmStatistics;
return this;
}
public List<VmGuestAgentInterface> getVmGuestAgentInterfaces() {
return vmGuestAgentInterfaces;
}
public VdsmVm setVmGuestAgentInterfaces(List<VmGuestAgentInterface> vmGuestAgentInterfaces) {
this.vmGuestAgentInterfaces = vmGuestAgentInterfaces;
return this;
}
public Map<String, LUNs> getLunsMap() {
return lunsMap;
}
public VdsmVm setLunsMap(Map<String, LUNs> lunsMap) {
this.lunsMap = lunsMap;
return this;
}
public List<VmJob> getVmJobs() {
return vmJobs;
}
public VdsmVm setVmJobs(List<VmJob> vmJobs) {
this.vmJobs = vmJobs;
return this;
}
public List<VmNetworkInterface> getInterfaceStatistics() {
return this.interfaceStatistics;
}
public VdsmVm setInterfaceStatistics(List<VmNetworkInterface> interfaceStatistics) {
this.interfaceStatistics = interfaceStatistics;
return this;
}
public VmBalloonInfo getVmBalloonInfo() {
return vmBalloonInfo;
}
public VdsmVm setVmBalloonInfo(VmBalloonInfo vmBalloonInfo) {
this.vmBalloonInfo = vmBalloonInfo;
return this;
}
public List<DiskImageDynamic> getDiskStatistics() {
return diskStatistics;
}
public VdsmVm setDiskStatistics(List<DiskImageDynamic> value) {
diskStatistics = value;
return this;
}
@Override
public int hashCode() {
return Objects.hash(
vmDynamic,
vmGuestAgentInterfaces,
vmStatistics,
lunsMap,
interfaceStatistics,
diskStatistics
);
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!(obj instanceof VdsmVm)) {
return false;
}
VdsmVm other = (VdsmVm) obj;
return Objects.equals(vmDynamic, other.vmDynamic)
&& Objects.equals(vmGuestAgentInterfaces, other.vmGuestAgentInterfaces)
&& Objects.equals(vmStatistics, other.vmStatistics)
&& Objects.equals(lunsMap, other.lunsMap)
&& Objects.equals(diskStatistics, other.diskStatistics)
&& Objects.equals(interfaceStatistics, other.interfaceStatistics);
}
public Double getTimestamp() {
return timestamp;
}
public void setTimestamp(Double timestamp) {
this.timestamp = timestamp;
}
public String getDevicesHash() {
return devicesHash;
}
public VdsmVm setDevicesHash(String devicesHash) {
this.devicesHash = devicesHash;
return this;
}
}