package com.hubspot.singularity;
import java.util.Collections;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Optional;
public class SingularityDeployFailure {
private final SingularityDeployFailureReason reason;
private final Optional<SingularityTaskId> taskId;
private final Optional<String> message;
public SingularityDeployFailure(SingularityDeployFailureReason reason) {
this(reason, Optional.<SingularityTaskId>absent(), Optional.<String>absent());
}
public static List<SingularityDeployFailure> lbUpdateFailed() {
return Collections.singletonList(new SingularityDeployFailure(SingularityDeployFailureReason.LOAD_BALANCER_UPDATE_FAILED));
}
public static List<SingularityDeployFailure> failedToSave() {
return Collections.singletonList(new SingularityDeployFailure(SingularityDeployFailureReason.FAILED_TO_SAVE_DEPLOY_STATE));
}
public static List<SingularityDeployFailure> deployRemoved() {
return Collections.singletonList(new SingularityDeployFailure(SingularityDeployFailureReason.PENDING_DEPLOY_REMOVED));
}
@JsonCreator
public SingularityDeployFailure(@JsonProperty("reason") SingularityDeployFailureReason reason,
@JsonProperty("taskId") Optional<SingularityTaskId> taskId,
@JsonProperty("message") Optional<String> message) {
this.reason = reason;
this.taskId = taskId;
this.message = message;
}
public SingularityDeployFailureReason getReason() {
return reason;
}
public Optional<SingularityTaskId> getTaskId() {
return taskId;
}
public Optional<String> getMessage() {
return message;
}
@Override public String toString() {
return "SingularityDeployFailure{" +
"reason=" + reason +
", taskId=" + taskId +
", message=" + message +
'}';
}
}