package org.ovirt.engine.core.common.businessentities.qos; import java.io.Serializable; import java.util.Objects; import org.ovirt.engine.core.common.config.ConfigValues; import org.ovirt.engine.core.common.validation.annotation.ConfiguredRange; public class StorageQos extends QosBase implements Serializable { public StorageQos() { super(QosType.STORAGE); } private static final long serialVersionUID = 1122123549710787758L; /* All Throughput values are in MiBs per second * Null and 0 values are interpreted as unlimited. */ @ConfiguredRange(min = 0, maxConfigValue = ConfigValues.MaxThroughputUpperBoundQosValue, message = "ACTION_TYPE_FAILED_QOS_OUT_OF_RANGE_VALUES") private Integer maxThroughput; @ConfiguredRange(min = 0, maxConfigValue = ConfigValues.MaxReadThroughputUpperBoundQosValue, message = "ACTION_TYPE_FAILED_QOS_OUT_OF_RANGE_VALUES") private Integer maxReadThroughput; @ConfiguredRange(min = 0, maxConfigValue = ConfigValues.MaxWriteThroughputUpperBoundQosValue, message = "ACTION_TYPE_FAILED_QOS_OUT_OF_RANGE_VALUES") private Integer maxWriteThroughput; @ConfiguredRange(min = 0, maxConfigValue = ConfigValues.MaxIopsUpperBoundQosValue, message = "ACTION_TYPE_FAILED_QOS_OUT_OF_RANGE_VALUES") private Integer maxIops; @ConfiguredRange(min = 0, maxConfigValue = ConfigValues.MaxReadIopsUpperBoundQosValue, message = "ACTION_TYPE_FAILED_QOS_OUT_OF_RANGE_VALUES") private Integer maxReadIops; @ConfiguredRange(min = 0, maxConfigValue = ConfigValues.MaxWriteIopsUpperBoundQosValue, message = "ACTION_TYPE_FAILED_QOS_OUT_OF_RANGE_VALUES") private Integer maxWriteIops; public Integer getMaxThroughput() { return maxThroughput; } public void setMaxThroughput(Integer maxThroughput) { this.maxThroughput = maxThroughput; } public Integer getMaxReadThroughput() { return maxReadThroughput; } public void setMaxReadThroughput(Integer maxReadThroughput) { this.maxReadThroughput = maxReadThroughput; } public Integer getMaxWriteThroughput() { return maxWriteThroughput; } public void setMaxWriteThroughput(Integer maxWriteThroughput) { this.maxWriteThroughput = maxWriteThroughput; } public Integer getMaxIops() { return maxIops; } public void setMaxIops(Integer maxIops) { this.maxIops = maxIops; } public Integer getMaxReadIops() { return maxReadIops; } public void setMaxReadIops(Integer maxReadIops) { this.maxReadIops = maxReadIops; } public Integer getMaxWriteIops() { return maxWriteIops; } public void setMaxWriteIops(Integer maxWriteIops) { this.maxWriteIops = maxWriteIops; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof StorageQos)) { return false; } StorageQos other = (StorageQos) obj; return super.equals(obj) && Objects.equals(maxThroughput, other.maxThroughput) && Objects.equals(maxReadThroughput, other.maxReadThroughput) && Objects.equals(maxWriteThroughput, other.maxWriteThroughput) && Objects.equals(maxIops, other.maxIops) && Objects.equals(maxReadIops, other.maxReadIops) && Objects.equals(maxWriteIops, other.maxWriteIops); } @Override public int hashCode() { return Objects.hash( super.hashCode(), maxIops, maxReadIops, maxReadThroughput, maxThroughput, maxWriteIops, maxWriteThroughput ); } @Override public String getString() { StringBuilder builder = new StringBuilder(); builder.append("[") .append("Throughput") .append("{") .append("max=") .append(maxThroughput) .append("max read=") .append(maxReadThroughput) .append("max write=") .append(maxWriteThroughput) .append("}") .append("IOPS") .append("{") .append("max=") .append(maxIops) .append("max read=") .append(maxReadIops) .append("max write=") .append(maxWriteIops) .append("}") .append("]"); return builder.toString(); } }