package com.hubspot.mesos; import java.util.List; import java.util.Objects; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.Optional; import com.wordnik.swagger.annotations.ApiModelProperty; public class SingularityContainerInfo { private final SingularityContainerType type; private final Optional<List<SingularityVolume>> volumes; private final Optional<SingularityDockerInfo> docker; @JsonCreator public SingularityContainerInfo( @JsonProperty("type") SingularityContainerType type, @JsonProperty("volumes") Optional<List<SingularityVolume>> volumes, @JsonProperty("docker") Optional<SingularityDockerInfo> docker) { this.type = type; this.volumes = volumes; this.docker = docker; } @ApiModelProperty(required=true, value="Container type, can be MESOS or DOCKER. Default is MESOS") public SingularityContainerType getType() { return type; } @ApiModelProperty(required=false, value="List of volumes to mount. Applicable only to DOCKER container type") public Optional<List<SingularityVolume>> getVolumes() { return volumes; } @ApiModelProperty(required=false, value="Information specific to docker runtime settings") public Optional<SingularityDockerInfo> getDocker() { return docker; } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } SingularityContainerInfo that = (SingularityContainerInfo) o; return type == that.type && Objects.equals(volumes, that.volumes) && Objects.equals(docker, that.docker); } @Override public int hashCode() { return Objects.hash(type, volumes, docker); } @Override public String toString() { return "SingularityContainerInfo{" + "type=" + type + ", volumes=" + volumes + ", docker=" + docker + '}'; } }