package org.ovirt.engine.core.common.businessentities;
import java.util.Objects;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import org.ovirt.engine.core.common.utils.ToStringBuilder;
import org.ovirt.engine.core.common.utils.ValidationUtils;
import org.ovirt.engine.core.common.validation.annotation.ValidName;
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.Version;
public class StoragePool implements IVdcQueryable, BusinessEntityWithStatus<Guid, StoragePoolStatus>, Nameable, Commented {
private static final long serialVersionUID = 6162262095329980112L;
private Guid id;
@ValidName(message = "VALIDATION_DATA_CENTER_NAME_INVALID", groups = { CreateEntity.class, UpdateEntity.class })
@Size(min = 1, max = BusinessEntitiesDefinitions.DATACENTER_NAME_SIZE)
private String name;
@Size(max = BusinessEntitiesDefinitions.GENERAL_MAX_SIZE)
@Pattern(regexp = ValidationUtils.ONLY_ASCII_OR_NONE,
message = "VALIDATION_DATA_CENTER_DESCRIPTION_INVALID",
groups = { CreateEntity.class, UpdateEntity.class })
private String description;
private String comment = "";
private boolean local;
private StorageFormatType storagePoolFormatType;
private StoragePoolStatus status;
private int masterDomainVersion;
private Guid spmVdsId;
@Size(max = BusinessEntitiesDefinitions.GENERAL_VERSION_SIZE)
private String compatibilityVersion;
private String LVER;
private RecoveryMode recoveryMode;
private Version version;
private QuotaEnforcementTypeEnum quotaEnforcementType;
private boolean storagePoolCompatibilityLevelUpgradeNeeded;
/**
* Unique mac pool over whole data center. Data center DOES NOT have mac pool associated, only its clusters have.
* When updating DC, setting this will set mac pool for all its clusters. When getting DC, this property
* will be/should be set only when all DCs clusters share same mac pool.
*/
private Guid macPoolId;
public StoragePool() {
id = Guid.Empty;
status = StoragePoolStatus.Uninitialized;
spmVdsId = Guid.Empty;
recoveryMode = RecoveryMode.Manual;
quotaEnforcementType = QuotaEnforcementTypeEnum.DISABLED;
name = "";
description = "";
comment = "";
masterDomainVersion = 0;
}
public String getdescription() {
if (description == null) {
description = "";
}
return description;
}
public void setdescription(String value) {
this.description = value;
}
@Override
public String getComment() {
return comment;
}
@Override
public void setComment(String value) {
this.comment = (value == null) ? "" : value;
}
@Override
public Guid getId() {
return id;
}
@Override
public void setId(Guid id) {
this.id = id;
}
@Override
public String getName() {
return name;
}
public void setName(String value) {
this.name = value;
}
/**
* @return True is the Storage Pool is local, false if it's shared
*/
public boolean isLocal() {
return local;
}
public void setIsLocal(boolean isLocal) {
this.local = isLocal;
}
public StorageFormatType getStoragePoolFormatType() {
return storagePoolFormatType;
}
public void setStoragePoolFormatType(StorageFormatType value) {
storagePoolFormatType = value;
}
@Override
public StoragePoolStatus getStatus() {
return status;
}
@Override
public void setStatus(StoragePoolStatus value) {
status = value;
}
public int getMasterDomainVersion() {
return masterDomainVersion;
}
public void setMasterDomainVersion(int value) {
this.masterDomainVersion = value;
}
public Version getCompatibilityVersion() {
if (version == null) {
version = new Version(compatibilityVersion);
}
return version;
}
public void setCompatibilityVersion(Version value) {
compatibilityVersion = value.toString();
version = null;
}
@Override
public Object getQueryableId() {
return getId();
}
public String getLVER() {
return LVER;
}
public void setLVER(String value) {
LVER = value;
}
public RecoveryMode getRecoveryMode() {
return recoveryMode;
}
public void setRecoveryMode(RecoveryMode value) {
recoveryMode = value;
}
public Guid getSpmVdsId() {
return spmVdsId;
}
public void setSpmVdsId(Guid value) {
spmVdsId = value;
}
@Override
public int hashCode() {
return Objects.hash(
id,
LVER,
description,
comment,
compatibilityVersion,
masterDomainVersion,
name,
recoveryMode,
spmVdsId,
status,
local,
storagePoolFormatType,
quotaEnforcementType
);
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!(obj instanceof StoragePool)) {
return false;
}
StoragePool other = (StoragePool) obj;
return Objects.equals(id, other.id)
&& Objects.equals(LVER, other.LVER)
&& Objects.equals(description, other.description)
&& Objects.equals(comment, other.comment)
&& Objects.equals(getCompatibilityVersion(), other.getCompatibilityVersion())
&& masterDomainVersion == other.masterDomainVersion
&& Objects.equals(name, other.name)
&& recoveryMode == other.recoveryMode
&& Objects.equals(spmVdsId, other.spmVdsId)
&& status == other.status
&& local == other.local
&& Objects.equals(storagePoolFormatType, other.storagePoolFormatType)
&& quotaEnforcementType == other.quotaEnforcementType;
}
public QuotaEnforcementTypeEnum getQuotaEnforcementType() {
return quotaEnforcementType;
}
public void setQuotaEnforcementType(QuotaEnforcementTypeEnum quotaEnforcementType) {
this.quotaEnforcementType = quotaEnforcementType;
}
public Guid getMacPoolId() {
return macPoolId;
}
public void setMacPoolId(Guid macPoolId) {
this.macPoolId = macPoolId;
}
public boolean isStoragePoolCompatibilityLevelUpgradeNeeded() {
return storagePoolCompatibilityLevelUpgradeNeeded;
}
public void setStoragePoolCompatibilityLevelUpgradeNeeded(boolean storagePoolCompatibilityLevelUpgradeNeeded) {
this.storagePoolCompatibilityLevelUpgradeNeeded = storagePoolCompatibilityLevelUpgradeNeeded;
}
@Override
public String toString() {
return ToStringBuilder.forInstance(this)
.append("name", getName())
.append("id", getId())
.build();
}
}