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.Size; import org.ovirt.engine.core.common.businessentities.storage.StorageType; import org.ovirt.engine.core.common.utils.ToStringBuilder; import org.ovirt.engine.core.common.validation.annotation.ValidDescription; 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; public class StorageDomainStatic implements BusinessEntity<Guid>, Nameable { private static final long serialVersionUID = 8635263021145935458L; private Guid id; @Size(min = 1, max = BusinessEntitiesDefinitions.STORAGE_SIZE) private String storage; // TODO storage name needs to be made unique @ValidName(message = "VALIDATION_STORAGE_DOMAIN_NAME_INVALID", groups = { CreateEntity.class, UpdateEntity.class }) @Size(min = 1, max = BusinessEntitiesDefinitions.STORAGE_NAME_SIZE) private String name; @ValidDescription(message = "VALIDATION_STORAGE_DOMAIN_DESCRIPTION_INVALID", groups = { CreateEntity.class, UpdateEntity.class }) @Size(min = 1, max = BusinessEntitiesDefinitions.GENERAL_MAX_SIZE, message = "VALIDATION_STORAGE_DOMAIN_DESCRIPTION_MAX", groups = { CreateEntity.class, UpdateEntity.class }) private String description; private String comment; private StorageDomainType storageType; private StorageType storagePoolType; private StorageServerConnections connection; private StorageFormatType storageFormat; private boolean autoRecoverable; private SANState sanState; /* Represents the first device of the domain metadata LV for block domains. */ private String firstMetadataDevice; /* The device of the domain used for the vg metadata for block domains. */ private String vgMetadataDevice; private transient long lastTimeUsedAsMaster; private Boolean wipeAfterDelete; private boolean discardAfterDelete; @Min(value = 0, message = "VALIDATION_STORAGE_DOMAIN_WARNING_LOW_SPACE_INDICATOR_RANGE") @Max(value = 100, message = "VALIDATION_STORAGE_DOMAIN_WARNING_LOW_SPACE_INDICATOR_RANGE") private Integer warningLowSpaceIndicator; @Min(value = 0, message = "VALIDATION_STORAGE_DOMAIN_CRITICAL_SPACE_ACTION_BLOCKER_RANGE") @Max(value = Integer.MAX_VALUE, message = "VALIDATION_STORAGE_DOMAIN_CRITICAL_SPACE_ACTION_BLOCKER_RANGE") private Integer criticalSpaceActionBlocker; public StorageDomainStatic() { id = Guid.Empty; storageType = StorageDomainType.Master; storagePoolType = StorageType.UNKNOWN; autoRecoverable = true; name = ""; } @Override public Guid getId() { return this.id; } @Override public void setId(Guid id) { this.id = id; } public String getStorage() { return storage; } public void setStorage(String storage) { this.storage = storage; } public StorageDomainType getStorageDomainType() { return storageType; } public void setStorageDomainType(StorageDomainType storageType) { this.storageType = storageType; } public StorageType getStorageType() { return storagePoolType; } public void setStorageType(StorageType storagePoolType) { this.storagePoolType = storagePoolType; } public String getStorageName() { return name; } public void setStorageName(String name) { this.name = name; } public StorageServerConnections getConnection() { return connection; } public void setConnection(StorageServerConnections connection) { this.connection = connection; } public StorageFormatType getStorageFormat() { return storageFormat; } public void setStorageFormat(StorageFormatType storageFormat) { this.storageFormat = storageFormat; } public boolean isAutoRecoverable() { return autoRecoverable; } public void setAutoRecoverable(boolean autoRecoverable) { this.autoRecoverable = autoRecoverable; } public long getLastTimeUsedAsMaster() { return lastTimeUsedAsMaster; } public void setLastTimeUsedAsMaster(long lastTimeUsedAsMaster) { this.lastTimeUsedAsMaster = lastTimeUsedAsMaster; } public Boolean getWipeAfterDelete() { return wipeAfterDelete; } public void setWipeAfterDelete(Boolean wipeAfterDelete) { this.wipeAfterDelete = wipeAfterDelete; } public boolean isDiscardAfterDelete() { return discardAfterDelete; } public void setDiscardAfterDelete(boolean discardAfterDelete) { this.discardAfterDelete = discardAfterDelete; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getComment() { return comment; } public void setComment(String value) { comment = value; } public SANState getSanState() { return sanState; } public void setSanState(SANState sanState) { this.sanState = sanState; } public Integer getWarningLowSpaceIndicator() { return warningLowSpaceIndicator; } public void setWarningLowSpaceIndicator(Integer warningLowSpaceIndicator) { this.warningLowSpaceIndicator = warningLowSpaceIndicator; } public Integer getCriticalSpaceActionBlocker() { return criticalSpaceActionBlocker; } public void setCriticalSpaceActionBlocker(Integer criticalSpaceActionBlocker) { this.criticalSpaceActionBlocker = criticalSpaceActionBlocker; } public String getFirstMetadataDevice() { return firstMetadataDevice; } public void setFirstMetadataDevice(String firstMetadataDevice) { this.firstMetadataDevice = firstMetadataDevice; } public String getVgMetadataDevice() { return vgMetadataDevice; } public void setVgMetadataDevice(String vgMetadataDevice) { this.vgMetadataDevice = vgMetadataDevice; } @Override public String getName() { return getStorageName(); } @Override public int hashCode() { return Objects.hash( id, autoRecoverable, connection, name, storage, storageFormat, storagePoolType, storageType, description, sanState, wipeAfterDelete, discardAfterDelete, firstMetadataDevice, vgMetadataDevice, warningLowSpaceIndicator, criticalSpaceActionBlocker ); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof StorageDomainStatic)) { return false; } StorageDomainStatic other = (StorageDomainStatic) obj; return Objects.equals(id, other.id) && autoRecoverable == other.autoRecoverable && Objects.equals(connection, other.connection) && Objects.equals(name, other.name) && Objects.equals(storage, other.storage) && storageFormat == other.storageFormat && storagePoolType == other.storagePoolType && storageType == other.storageType && sanState == other.sanState && Objects.equals(wipeAfterDelete, other.wipeAfterDelete) && discardAfterDelete == other.discardAfterDelete && Objects.equals(firstMetadataDevice, other.firstMetadataDevice) && Objects.equals(vgMetadataDevice, other.vgMetadataDevice) && Objects.equals(description, other.description) && Objects.equals(warningLowSpaceIndicator, other.warningLowSpaceIndicator) && Objects.equals(criticalSpaceActionBlocker, other.criticalSpaceActionBlocker); } @Override public String toString() { return ToStringBuilder.forInstance(this) .append("name", getName()) .append("id", getId()) .build(); } }