package com.hubspot.blazar.external.models.singularity;
import java.util.Objects;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.MoreObjects;
public class BuildCGroupResources {
private final double cpus;
private final double memoryMb;
private static BuildCGroupResources fromMesosResources(com.hubspot.mesos.Resources resources) {
return new BuildCGroupResources(resources.getCpus(), resources.getMemoryMb());
}
/**
* Blazar's view of mesos resources, currently we do not care about ports or disk, so we leave those fields at 0
* when converting to Mesos Resources {@link BuildCGroupResources#toMesosResources(BuildCGroupResources) toMesosResources(Resources)}
* @param cpus number of cpu
* @param memoryMb mb ram for build
*/
@JsonCreator
public BuildCGroupResources(@JsonProperty("cpus") double cpus, @JsonProperty("memoryMb") double memoryMb) {
this.cpus = cpus;
this.memoryMb = memoryMb;
}
public double getCpus() {
return cpus;
}
public double getMemoryMb() {
return memoryMb;
}
public BuildCGroupResources add(BuildCGroupResources other) {
return new BuildCGroupResources(other.getCpus() + cpus, other.getMemoryMb() + memoryMb);
}
public com.hubspot.mesos.Resources toMesosResources() {
return new com.hubspot.mesos.Resources(cpus, memoryMb, 0);
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
BuildCGroupResources that = (BuildCGroupResources) o;
return Objects.equals(that.cpus, cpus) && Objects.equals(that.memoryMb, memoryMb);
}
@Override
public int hashCode() {
return Objects.hash(cpus, memoryMb);
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("cpus", cpus)
.add("memoryMb", memoryMb)
.toString();
}
}