package org.ovirt.engine.core.common.businessentities;
import java.math.BigDecimal;
import java.util.Date;
import java.util.HashSet;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.ovirt.engine.core.common.businessentities.mapping.GuidType;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.compat.LogCompat;
import org.ovirt.engine.core.compat.LogFactoryCompat;
import org.ovirt.engine.core.compat.StringFormat;
import org.ovirt.engine.core.compat.StringHelper;
import org.ovirt.engine.core.compat.Version;
@XmlAccessorType(XmlAccessType.NONE)
@XmlType(name = "VdsDynamic")
@Entity
@Table(name = "vds_dynamic")
@TypeDef(name = "guid", typeClass = GuidType.class)
public class VdsDynamic implements BusinessEntity<Guid> {
private static final long serialVersionUID = -6010035855157006935L;
@Id
// @GeneratedValue(generator = "system-uuid")
// @GenericGenerator(name = "system-uuid", strategy = "org.ovirt.engine.core.dao.GuidGenerator")
@Column(name = "Id")
@Type(type = "guid")
private Guid id;
@Column(name = "status")
private VDSStatus status = VDSStatus.Unassigned;
@Column(name = "cpu_cores")
private Integer cpu_cores;
@Column(name = "cpu_model")
private String cpu_model;
@Column(name = "cpu_speed_mh", scale = 18, precision = 0)
private BigDecimal cpu_speed_mh = BigDecimal.valueOf(0.0);
@Column(name = "if_total_speed")
private String if_total_speed;
@Column(name = "kvm_enabled")
private Boolean kvm_enabled;
@Column(name = "physical_mem_mb")
private Integer physical_mem_mb;
@Column(name = "mem_commited")
private Integer mem_commited;
@Column(name = "vm_active")
private Integer vm_active;
@Column(name = "vm_count")
private int vm_count;
@Column(name = "vm_migrating")
private Integer vm_migrating;
@Column(name = "reserved_mem")
private Integer reserved_mem ;
@Column(name = "guest_overhead")
private Integer guest_overhead;
@Column(name = "software_version")
private String softwareVersion;
@Column(name = "version_name")
private String versionName;
@Column(name = "build_name")
private String buildName;
@Column(name = "previous_status")
private VDSStatus previous_status = VDSStatus.Unassigned;
@Column(name = "cpu_flags")
private String cpu_flags;
@Column(name = "cpu_over_commit_time_stamp")
private Date cpu_over_commit_time_stamp;
@Column(name = "hypervisor_type")
private HypervisorType hypervisor_type = HypervisorType.KVM;
@Column(name = "vms_cores_count")
private Integer vms_cores_count;
@Column(name = "pending_vcpus_count")
private Integer pending_vcpus_count;
@Column(name = "cpu_sockets")
private Integer cpu_sockets;
@Column(name = "net_config_dirty")
private Boolean net_config_dirty;
@XmlElement(name = "supported_cluster_levels")
@Column(name = "supported_cluster_levels")
private String supported_cluster_levels;
@XmlElement(name = "supported_engines")
@Column(name = "supported_engines")
private String supported_engines;
@Column(name = "host_os")
private String host_os;
@Column(name = "kvm_version")
private String kvm_version;
@Column(name = "spice_version")
private String spice_version;
@Column(name = "kernel_version")
private String kernel_version;
@Column(name = "iscsi_initiator_name")
private String iScsiInitiatorName;
@Column(name = "transparent_hugepages_state")
private VdsTransparentHugePagesState transparentHugePagesState = VdsTransparentHugePagesState.Never;
@Column(name = "anonymous_hugepages")
private int anonymousHugePages;
@Column(name = "hooks")
private String hooksStr;
@XmlElement(name = "NonOperationalReason")
@Column(name = "non_operational_reason")
private NonOperationalReason nonOperationalReason = NonOperationalReason.NONE;
@Transient
private Integer pending_vmem_size;
@Transient
private VdsVersion mVdsVersion;
@Transient
private java.util.HashSet<Version> _supportedClusterVersionsSet;
@Transient
private java.util.HashSet<Version> _supportedENGINESVersionsSet;
@XmlElement(name = "Version")
public void setVersion(VdsVersion value) {
mVdsVersion = value;
}
public VdsVersion getVersion() {
return mVdsVersion;
}
public VdsDynamic() {
mVdsVersion = new VdsVersion();
mem_commited = 0;
reserved_mem = 1024;
pending_vcpus_count = 0;
pending_vmem_size = 0;
transparentHugePagesState = VdsTransparentHugePagesState.Never;
}
public VdsDynamic(Integer cpu_cores, String cpu_model, Double cpu_speed_mh, String if_total_speed,
Boolean kvm_enabled, Integer mem_commited, Integer physical_mem_mb, int status, Guid vds_id,
Integer vm_active, int vm_count, Integer vm_migrating, Integer reserved_mem, Integer guest_overhead,
VDSStatus previous_status, String software_version, String version_name, String build_name,
Date cpu_over_commit_time_stamp, HypervisorType hypervisor_type, Integer pending_vcpus_count,
Integer pending_vmem_sizeField, Boolean net_config_dirty) {
mVdsVersion = new VdsVersion();
this.cpu_cores = cpu_cores;
this.cpu_model = cpu_model;
this.cpu_speed_mh = BigDecimal.valueOf(cpu_speed_mh);
this.if_total_speed = if_total_speed;
this.kvm_enabled = kvm_enabled;
this.mem_commited = mem_commited;
this.physical_mem_mb = physical_mem_mb;
this.status = VDSStatus.forValue(status);
this.id = vds_id;
this.vm_active = vm_active;
this.vm_count = vm_count;
this.vm_migrating = vm_migrating;
this.reserved_mem = reserved_mem;
this.guest_overhead = guest_overhead;
this.previous_status = previous_status;
this.setsoftware_version(software_version);
this.setversion_name(version_name);
this.setbuild_name(build_name);
this.setcpu_over_commit_time_stamp(cpu_over_commit_time_stamp);
this.sethypervisor_type(hypervisor_type);
this.pending_vcpus_count = pending_vcpus_count;
this.pending_vmem_size = pending_vmem_sizeField;
this.net_config_dirty = net_config_dirty;
this.transparentHugePagesState = VdsTransparentHugePagesState.Never;
}
@XmlElement(nillable = true)
public Integer getcpu_cores() {
return this.cpu_cores;
}
public void setcpu_cores(Integer value) {
this.cpu_cores = value;
}
@XmlElement(nillable = true)
public Integer getcpu_sockets() {
return this.cpu_sockets;
}
public void setcpu_sockets(Integer value) {
this.cpu_sockets = value;
}
@XmlElement
public String getcpu_model() {
return this.cpu_model;
}
public void setcpu_model(String value) {
this.cpu_model = value;
}
@XmlElement(nillable = true)
public Double getcpu_speed_mh() {
return this.cpu_speed_mh.doubleValue();
}
public void setcpu_speed_mh(Double value) {
this.cpu_speed_mh = BigDecimal.valueOf(value);
}
@XmlElement
public String getif_total_speed() {
return this.if_total_speed;
}
public void setif_total_speed(String value) {
this.if_total_speed = value;
}
@XmlElement(nillable = true)
public Boolean getkvm_enabled() {
return this.kvm_enabled;
}
public void setkvm_enabled(Boolean value) {
this.kvm_enabled = value;
}
@XmlElement(nillable = true)
public Integer getmem_commited() {
return this.mem_commited;
}
public void setmem_commited(Integer value) {
this.mem_commited = value;
}
@XmlElement(nillable = true)
public Integer getphysical_mem_mb() {
return this.physical_mem_mb;
}
public void setphysical_mem_mb(Integer value) {
this.physical_mem_mb = value;
}
@XmlElement
public VDSStatus getstatus() {
return status;
}
public void setstatus(VDSStatus value) {
this.status = value;
}
@Override
@XmlElement(name = "Id")
public Guid getId() {
return this.id;
}
@Override
public void setId(Guid id) {
this.id = id;
}
@XmlElement(nillable = true)
public Integer getvm_active() {
return this.vm_active;
}
public void setvm_active(Integer value) {
this.vm_active = value;
}
@XmlElement
public int getvm_count() {
return this.vm_count;
}
public void setvm_count(int value) {
this.vm_count = value;
}
@XmlElement(nillable = true)
public Integer getvms_cores_count() {
return this.vms_cores_count;
}
public void setvms_cores_count(Integer value) {
this.vms_cores_count = value;
}
@XmlElement(nillable = true)
public Integer getvm_migrating() {
return this.vm_migrating;
}
public void setvm_migrating(Integer value) {
this.vm_migrating = value;
}
@XmlElement(nillable = true)
public Integer getreserved_mem() {
return this.reserved_mem;
}
public void setreserved_mem(Integer value) {
this.reserved_mem = value;
}
@XmlElement(nillable = true)
public Integer getguest_overhead() {
return this.guest_overhead;
}
public void setguest_overhead(Integer value) {
this.guest_overhead = value;
}
@XmlElement
public VDSStatus getprevious_status() {
return this.previous_status;
}
public void setprevious_status(VDSStatus value) {
this.previous_status = value;
}
@XmlElement
public String getsoftware_version() {
if (this.getVersion().getFullVersion() == null) {
return null;
}
return this.getVersion().getFullVersion().toString();
}
public void setsoftware_version(String value) {
this.softwareVersion = value;
if (!StringHelper.isNullOrEmpty(value)) {
String[] vers = value.split("[.]", -1);
this.getVersion().setSoftwareVersion(vers[0]);
if (vers.length > 1) {
this.getVersion().setSoftwareVersion(this.getVersion().getSoftwareVersion() + "." + vers[1]);
}
if (vers.length > 3) {
this.getVersion().setSoftwareRevision(StringFormat.format("%s.%s", vers[2], vers[3]));
}
}
}
@XmlElement
public String getversion_name() {
return this.getVersion().getVersionName();
}
public void setversion_name(String value) {
this.versionName = value;
this.getVersion().setVersionName(value);
}
@XmlElement
public String getbuild_name() {
return this.getVersion().getBuildName();
}
public void setbuild_name(String value) {
this.buildName = value;
this.getVersion().setBuildName(value);
}
@XmlElement
public String getcpu_flags() {
return this.cpu_flags;
}
public void setcpu_flags(String value) {
this.cpu_flags = value;
}
@XmlElement(nillable = true)
public Date getcpu_over_commit_time_stamp() {
return this.cpu_over_commit_time_stamp;
}
public void setcpu_over_commit_time_stamp(Date value) {
this.cpu_over_commit_time_stamp = value;
}
@XmlElement(nillable = true)
public HypervisorType gethypervisor_type() {
return this.hypervisor_type;
}
public void sethypervisor_type(HypervisorType value) {
this.hypervisor_type = value;
}
@XmlElement(nillable = true)
public Integer getpending_vcpus_count() {
return this.pending_vcpus_count;
}
public void setpending_vcpus_count(Integer value) {
this.pending_vcpus_count = value;
}
@XmlElement
public int getpending_vmem_size() {
return this.pending_vmem_size;
}
public void setpending_vmem_size(int value) {
this.pending_vmem_size = value;
}
@XmlElement(nillable = true)
public Boolean getnet_config_dirty() {
return this.net_config_dirty;
}
public void setnet_config_dirty(Boolean value) {
this.net_config_dirty = value;
}
public String getsupported_cluster_levels() {
return supported_cluster_levels;
}
public void setsupported_cluster_levels(String value) {
supported_cluster_levels = value;
}
public java.util.HashSet<Version> getSupportedClusterVersionsSet() {
if (_supportedClusterVersionsSet == null && !StringHelper.isNullOrEmpty(getsupported_cluster_levels())) {
_supportedClusterVersionsSet = new HashSet<Version>();
for (String ver : getsupported_cluster_levels().split("[,]", -1)) {
try {
_supportedClusterVersionsSet.add(new Version(ver));
} catch (java.lang.Exception e) {
log.errorFormat("Could not parse supported cluster version {0} for vds {1}", ver, getId());
}
}
}
return _supportedClusterVersionsSet;
}
public String getsupported_engines() {
return supported_engines;
}
public void setsupported_engines(String value) {
supported_engines = value;
}
public java.util.HashSet<Version> getSupportedENGINESVersionsSet() {
if (_supportedENGINESVersionsSet == null && !StringHelper.isNullOrEmpty(getsupported_engines())) {
_supportedENGINESVersionsSet = new HashSet<Version>();
for (String ver : getsupported_engines().split("[,]", -1)) {
try {
_supportedENGINESVersionsSet.add(new Version(ver));
} catch (java.lang.Exception e) {
log.errorFormat("Could not parse supported engine version {0} for vds {1}", ver, getId());
}
}
}
return _supportedENGINESVersionsSet;
}
@XmlElement
public String gethost_os() {
return this.host_os;
}
public void sethost_os(String value) {
this.host_os = value;
}
@XmlElement
public String getkvm_version() {
return this.kvm_version;
}
public void setkvm_version(String value) {
this.kvm_version = value;
}
@XmlElement
public String getspice_version() {
return this.spice_version;
}
public void setspice_version(String value) {
this.spice_version = value;
}
@XmlElement
public String getkernel_version() {
return this.kernel_version;
}
public void setkernel_version(String value) {
this.kernel_version = value;
}
@XmlElement(name = "IScsiInitiatorName")
public String getIScsiInitiatorName() {
return this.iScsiInitiatorName;
}
public void setIScsiInitiatorName(String value) {
this.iScsiInitiatorName = value;
}
@XmlElement(name = "TransparentHugePagesState")
public VdsTransparentHugePagesState getTransparentHugePagesState() {
return this.transparentHugePagesState;
}
public void setTransparentHugePagesState(VdsTransparentHugePagesState value) {
this.transparentHugePagesState = value;
}
@XmlElement(name = "AnonymousHugePages")
public int getAnonymousHugePages() {
return this.anonymousHugePages;
}
public void setAnonymousHugePages(int value) {
this.anonymousHugePages = value;
}
public void setHooksStr(String hooksStr) {
this.hooksStr = hooksStr;
}
public String getHooksStr() {
return hooksStr;
}
private static LogCompat log = LogFactoryCompat.getLog(VdsDynamic.class);
public NonOperationalReason getNonOperationalReason() {
return nonOperationalReason;
}
public void setNonOperationalReason(NonOperationalReason nonOperationalReason) {
this.nonOperationalReason = (nonOperationalReason == null ? NonOperationalReason.NONE : nonOperationalReason);
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result =
prime * result + ((_supportedClusterVersionsSet == null) ? 0 : _supportedClusterVersionsSet.hashCode());
result = prime * result + ((_supportedENGINESVersionsSet == null) ? 0 : _supportedENGINESVersionsSet.hashCode());
result = prime * result + anonymousHugePages;
result = prime * result + ((buildName == null) ? 0 : buildName.hashCode());
result = prime * result + ((cpu_cores == null) ? 0 : cpu_cores.hashCode());
result = prime * result + ((cpu_flags == null) ? 0 : cpu_flags.hashCode());
result = prime * result + ((cpu_model == null) ? 0 : cpu_model.hashCode());
result = prime * result + ((cpu_over_commit_time_stamp == null) ? 0 : cpu_over_commit_time_stamp.hashCode());
result = prime * result + ((cpu_sockets == null) ? 0 : cpu_sockets.hashCode());
result = prime * result + ((cpu_speed_mh == null) ? 0 : cpu_speed_mh.hashCode());
result = prime * result + ((guest_overhead == null) ? 0 : guest_overhead.hashCode());
result = prime * result + ((hooksStr == null) ? 0 : hooksStr.hashCode());
result = prime * result + ((host_os == null) ? 0 : host_os.hashCode());
result = prime * result + ((hypervisor_type == null) ? 0 : hypervisor_type.hashCode());
result = prime * result + ((iScsiInitiatorName == null) ? 0 : iScsiInitiatorName.hashCode());
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime * result + ((if_total_speed == null) ? 0 : if_total_speed.hashCode());
result = prime * result + ((kernel_version == null) ? 0 : kernel_version.hashCode());
result = prime * result + ((kvm_enabled == null) ? 0 : kvm_enabled.hashCode());
result = prime * result + ((kvm_version == null) ? 0 : kvm_version.hashCode());
result = prime * result + ((mVdsVersion == null) ? 0 : mVdsVersion.hashCode());
result = prime * result + ((mem_commited == null) ? 0 : mem_commited.hashCode());
result = prime * result + ((net_config_dirty == null) ? 0 : net_config_dirty.hashCode());
result = prime * result + ((nonOperationalReason == null) ? 0 : nonOperationalReason.hashCode());
result = prime * result + ((pending_vcpus_count == null) ? 0 : pending_vcpus_count.hashCode());
result = prime * result + ((pending_vmem_size == null) ? 0 : pending_vmem_size.hashCode());
result = prime * result + ((physical_mem_mb == null) ? 0 : physical_mem_mb.hashCode());
result = prime * result + ((previous_status == null) ? 0 : previous_status.hashCode());
result = prime * result + ((reserved_mem == null) ? 0 : reserved_mem.hashCode());
result = prime * result + ((softwareVersion == null) ? 0 : softwareVersion.hashCode());
result = prime * result + ((spice_version == null) ? 0 : spice_version.hashCode());
result = prime * result + ((status == null) ? 0 : status.hashCode());
result = prime * result + ((supported_cluster_levels == null) ? 0 : supported_cluster_levels.hashCode());
result = prime * result + ((supported_engines == null) ? 0 : supported_engines.hashCode());
result = prime * result + ((transparentHugePagesState == null) ? 0 : transparentHugePagesState.hashCode());
result = prime * result + ((versionName == null) ? 0 : versionName.hashCode());
result = prime * result + ((vm_active == null) ? 0 : vm_active.hashCode());
result = prime * result + vm_count;
result = prime * result + ((vm_migrating == null) ? 0 : vm_migrating.hashCode());
result = prime * result + ((vms_cores_count == null) ? 0 : vms_cores_count.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;
VdsDynamic other = (VdsDynamic) obj;
if (_supportedClusterVersionsSet == null) {
if (other._supportedClusterVersionsSet != null)
return false;
} else if (!_supportedClusterVersionsSet.equals(other._supportedClusterVersionsSet))
return false;
if (_supportedENGINESVersionsSet == null) {
if (other._supportedENGINESVersionsSet != null)
return false;
} else if (!_supportedENGINESVersionsSet.equals(other._supportedENGINESVersionsSet))
return false;
if (anonymousHugePages != other.anonymousHugePages)
return false;
if (buildName == null) {
if (other.buildName != null)
return false;
} else if (!buildName.equals(other.buildName))
return false;
if (cpu_cores == null) {
if (other.cpu_cores != null)
return false;
} else if (!cpu_cores.equals(other.cpu_cores))
return false;
if (cpu_flags == null) {
if (other.cpu_flags != null)
return false;
} else if (!cpu_flags.equals(other.cpu_flags))
return false;
if (cpu_model == null) {
if (other.cpu_model != null)
return false;
} else if (!cpu_model.equals(other.cpu_model))
return false;
if (cpu_over_commit_time_stamp == null) {
if (other.cpu_over_commit_time_stamp != null)
return false;
} else if (!cpu_over_commit_time_stamp.equals(other.cpu_over_commit_time_stamp))
return false;
if (cpu_sockets == null) {
if (other.cpu_sockets != null)
return false;
} else if (!cpu_sockets.equals(other.cpu_sockets))
return false;
if (cpu_speed_mh == null) {
if (other.cpu_speed_mh != null)
return false;
} else if (!cpu_speed_mh.equals(other.cpu_speed_mh))
return false;
if (guest_overhead == null) {
if (other.guest_overhead != null)
return false;
} else if (!guest_overhead.equals(other.guest_overhead))
return false;
if (hooksStr == null) {
if (other.hooksStr != null)
return false;
} else if (!hooksStr.equals(other.hooksStr))
return false;
if (host_os == null) {
if (other.host_os != null)
return false;
} else if (!host_os.equals(other.host_os))
return false;
if (hypervisor_type != other.hypervisor_type)
return false;
if (iScsiInitiatorName == null) {
if (other.iScsiInitiatorName != null)
return false;
} else if (!iScsiInitiatorName.equals(other.iScsiInitiatorName))
return false;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
if (if_total_speed == null) {
if (other.if_total_speed != null)
return false;
} else if (!if_total_speed.equals(other.if_total_speed))
return false;
if (kernel_version == null) {
if (other.kernel_version != null)
return false;
} else if (!kernel_version.equals(other.kernel_version))
return false;
if (kvm_enabled == null) {
if (other.kvm_enabled != null)
return false;
} else if (!kvm_enabled.equals(other.kvm_enabled))
return false;
if (kvm_version == null) {
if (other.kvm_version != null)
return false;
} else if (!kvm_version.equals(other.kvm_version))
return false;
if (mVdsVersion == null) {
if (other.mVdsVersion != null)
return false;
} else if (!mVdsVersion.equals(other.mVdsVersion))
return false;
if (mem_commited == null) {
if (other.mem_commited != null)
return false;
} else if (!mem_commited.equals(other.mem_commited))
return false;
if (net_config_dirty == null) {
if (other.net_config_dirty != null)
return false;
} else if (!net_config_dirty.equals(other.net_config_dirty))
return false;
if (nonOperationalReason != other.nonOperationalReason)
return false;
if (pending_vcpus_count == null) {
if (other.pending_vcpus_count != null)
return false;
} else if (!pending_vcpus_count.equals(other.pending_vcpus_count))
return false;
if (pending_vmem_size == null) {
if (other.pending_vmem_size != null)
return false;
} else if (!pending_vmem_size.equals(other.pending_vmem_size))
return false;
if (physical_mem_mb == null) {
if (other.physical_mem_mb != null)
return false;
} else if (!physical_mem_mb.equals(other.physical_mem_mb))
return false;
if (previous_status != other.previous_status)
return false;
if (reserved_mem == null) {
if (other.reserved_mem != null)
return false;
} else if (!reserved_mem.equals(other.reserved_mem))
return false;
if (getsoftware_version() == null) {
if (other.getsoftware_version() != null)
return false;
} else if (!getsoftware_version().equals(other.getsoftware_version()))
return false;
if (spice_version == null) {
if (other.spice_version != null)
return false;
} else if (!spice_version.equals(other.spice_version))
return false;
if (status != other.status)
return false;
if (supported_cluster_levels == null) {
if (other.supported_cluster_levels != null)
return false;
} else if (!supported_cluster_levels.equals(other.supported_cluster_levels))
return false;
if (supported_engines == null) {
if (other.supported_engines != null)
return false;
} else if (!supported_engines.equals(other.supported_engines))
return false;
if (transparentHugePagesState != other.transparentHugePagesState)
return false;
if (versionName == null) {
if (other.versionName != null)
return false;
} else if (!versionName.equals(other.versionName))
return false;
if (vm_active == null) {
if (other.vm_active != null)
return false;
} else if (!vm_active.equals(other.vm_active))
return false;
if (vm_count != other.vm_count)
return false;
if (vm_migrating == null) {
if (other.vm_migrating != null)
return false;
} else if (!vm_migrating.equals(other.vm_migrating))
return false;
if (vms_cores_count == null) {
if (other.vms_cores_count != null)
return false;
} else if (!vms_cores_count.equals(other.vms_cores_count))
return false;
return true;
}
}