package com.hubspot.singularity.api; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.Optional; import com.hubspot.singularity.SingularityDeploy; import com.hubspot.singularity.SingularityRequest; import com.wordnik.swagger.annotations.ApiModelProperty; public class SingularityDeployRequest { private final Optional<Boolean> unpauseOnSuccessfulDeploy; private final SingularityDeploy deploy; private final Optional<String> message; private final Optional<SingularityRequest> updatedRequest; @JsonCreator public SingularityDeployRequest( @JsonProperty("deploy") SingularityDeploy deploy, @JsonProperty("unpauseOnSuccessfulDeploy") Optional<Boolean> unpauseOnSuccessfulDeploy, @JsonProperty("message") Optional<String> message, @JsonProperty("updatedRequest") Optional<SingularityRequest> updatedRequest) { this.deploy = deploy; this.unpauseOnSuccessfulDeploy = unpauseOnSuccessfulDeploy; this.message = message; this.updatedRequest = updatedRequest; } public SingularityDeployRequest(SingularityDeploy deploy, Optional<Boolean> unpauseOnSuccessfulDeploy, Optional<String> message) { this(deploy, unpauseOnSuccessfulDeploy, message, Optional.<SingularityRequest>absent()); } @ApiModelProperty(required=false, value="If deploy is successful, also unpause the request") public Optional<Boolean> getUnpauseOnSuccessfulDeploy() { return unpauseOnSuccessfulDeploy; } @ApiModelProperty(required=true, value="The Singularity deploy object, containing all the required details about the Deploy") public SingularityDeploy getDeploy() { return deploy; } @ApiModelProperty(required=false, value="A message to show users about this deploy (metadata)") public Optional<String> getMessage() { return message; } @ApiModelProperty(required=false, value="use this request data for this deploy, and update the request on successful deploy") public Optional<SingularityRequest> getUpdatedRequest() { return updatedRequest; } @JsonIgnore public boolean isUnpauseOnSuccessfulDeploy() { return unpauseOnSuccessfulDeploy.or(Boolean.FALSE); } @Override public String toString() { return "SingularityDeployRequest{" + "unpauseOnSuccessfulDeploy=" + unpauseOnSuccessfulDeploy + ", deploy=" + deploy + ", message=" + message + ", updatedRequest=" + updatedRequest + '}'; } }