package org.ovirt.engine.core.common.businessentities; import java.util.Objects; import javax.validation.constraints.Max; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import javax.validation.constraints.Pattern; import javax.validation.constraints.Size; import org.ovirt.engine.core.common.utils.ValidationUtils; import org.ovirt.engine.core.common.validation.annotation.ValidUri; import org.ovirt.engine.core.common.validation.group.CreateEntity; import org.ovirt.engine.core.common.validation.group.UpdateEntity; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.TimeSpan; public class VmPool implements IVdcQueryable, BusinessEntity<Guid>, Nameable, Commented { private static final long serialVersionUID = 4517650877696849024L; private Guid id; @NotNull(message = "VALIDATION_VM_POOLS_NAME_NOT_NULL", groups = { CreateEntity.class, UpdateEntity.class }) @Size(min = 1, max = BusinessEntitiesDefinitions.VM_POOL_NAME_SIZE) @Pattern(regexp = ValidationUtils.POOL_NAME_PATTERN, message = "ACTION_TYPE_FAILED_INVALID_POOL_NAME", groups = { CreateEntity.class, UpdateEntity.class }) private String name; @Size(max = BusinessEntitiesDefinitions.GENERAL_MAX_SIZE) private String description; private String comment; private VmPoolType type; private boolean stateful; @Size(max = BusinessEntitiesDefinitions.VM_POOL_PARAMS) private String parameters; private Guid clusterId; private int prestartedVms; private int defaultTimeInDays; private TimeSpan defaultStartTime; private TimeSpan defaultEndTime; private String clusterName; private int vmPoolAssignedCount; private int vmPoolRunningCount; @Min(value = 1, message = "VALIDATION_VM_POOLS_NUMBER_OF_MAX_ASSIGNED_VMS_OUT_OF_RANGE") @Max(value = Short.MAX_VALUE, message = "VALIDATION_VM_POOLS_NUMBER_OF_MAX_ASSIGNED_VMS_OUT_OF_RANGE") private int maxAssignedVmsPerUser; public static final char MASK_CHARACTER = '?'; @ValidUri(message = "VALIDATION_CLUSTER_SPICE_PROXY_HOSTNAME_OR_IP", groups = { CreateEntity.class, UpdateEntity.class }) @Size(max = BusinessEntitiesDefinitions.SPICE_PROXY_ADDR_SIZE) private String spiceProxy; private boolean beingDestroyed; private boolean autoSelectStorage; public VmPool() { parameters = ""; defaultStartTime = new TimeSpan(); defaultEndTime = new TimeSpan(); vmPoolAssignedCount = 1; vmPoolRunningCount = 1; maxAssignedVmsPerUser = 1; beingDestroyed = false; autoSelectStorage = false; type = VmPoolType.AUTOMATIC; } @Override public int hashCode() { return Objects.hash( id, defaultTimeInDays, parameters, clusterId, description, name, type, stateful, maxAssignedVmsPerUser, spiceProxy ); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof VmPool)) { return false; } VmPool other = (VmPool) obj; // Don't use defaultStartTime and defaultEndTime in equals method // as they will never match because of how they are initialized. return Objects.equals(id, other.id) && defaultTimeInDays == other.defaultTimeInDays && Objects.equals(parameters, other.parameters) && Objects.equals(clusterId, other.clusterId) && Objects.equals(description, other.description) && Objects.equals(name, other.name) && Objects.equals(type, other.type) && Objects.equals(stateful, other.stateful) && maxAssignedVmsPerUser == other.maxAssignedVmsPerUser && Objects.equals(spiceProxy, other.spiceProxy); } @Override public Guid getId() { return id; } @Override public void setId(Guid id) { this.id = id; } public String getParameters() { return parameters; } public void setParameters(String value) { parameters = value; } public int getDefaultTimeInDays() { return defaultTimeInDays; } public void setDefaultTimeInDays(int value) { defaultTimeInDays = value; } public TimeSpan getDefaultStartTime() { return defaultStartTime; } public void setDefaultStartTime(TimeSpan value) { defaultStartTime = value; } public TimeSpan getDefaultEndTime() { return defaultEndTime; } public void setDefaultEndTime(TimeSpan value) { defaultEndTime = value; } public int getPrestartedVms() { return prestartedVms; } public void setPrestartedVms(int prestartedVms) { this.prestartedVms = prestartedVms; } public String getVmPoolDescription() { return this.description; } public void setVmPoolDescription(String value) { this.description = value; } public String getComment() { return comment; } public void setComment(String value) { comment = value; } public Guid getVmPoolId() { return this.id; } public void setVmPoolId(Guid value) { this.id = value; } @Override public String getName() { return this.name; } public void setName(String value) { this.name = value; } public int getAssignedVmsCount() { return vmPoolAssignedCount; } public void setAssignedVmsCount(int value) { vmPoolAssignedCount = value; } public int getMaxAssignedVmsPerUser() { return maxAssignedVmsPerUser; } public void setMaxAssignedVmsPerUser(int maxAssignedVmsPerUser) { this.maxAssignedVmsPerUser = maxAssignedVmsPerUser; } public int getRunningVmsCount() { return vmPoolRunningCount; } public void setRunningVmsCount(int value) { vmPoolRunningCount = value; } public VmPoolType getVmPoolType() { return type; } public void setVmPoolType(VmPoolType value) { this.type = value; } public boolean isStateful() { return stateful; } public void setStateful(boolean stateful) { this.stateful = stateful; } public Guid getClusterId() { return this.clusterId; } public void setClusterId(Guid value) { this.clusterId = value; } public String getClusterName() { return this.clusterName; } public void setClusterName(String value) { this.clusterName = value; } @Override public Object getQueryableId() { return getVmPoolId(); } public void setSpiceProxy(String spiceProxy) { this.spiceProxy = spiceProxy; } public String getSpiceProxy() { return spiceProxy; } public boolean isBeingDestroyed() { return beingDestroyed; } public void setBeingDestroyed(boolean beingDestroyed) { this.beingDestroyed = beingDestroyed; } public boolean isAutoStorageSelect() { return autoSelectStorage; } public void setAutoStorageSelect(boolean autoSelect) { this.autoSelectStorage = autoSelect; } @Override public String toString() { return "VmPool [" + getName() + "]"; } }