package com.hubspot.singularity.api;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Optional;
import com.hubspot.singularity.MachineState;
import com.wordnik.swagger.annotations.ApiModelProperty;
public class SingularityMachineChangeRequest extends SingularityExpiringRequestParent {
private final Optional<MachineState> revertToState;
private final boolean killTasksOnDecommissionTimeout;
@Deprecated
public SingularityMachineChangeRequest(Optional<String> message) {
this(Optional.<Long>absent(), Optional.<String>absent(), message, Optional.<MachineState>absent(), Optional.<Boolean>absent());
}
@JsonCreator
public SingularityMachineChangeRequest(@JsonProperty("durationMillis") Optional<Long> durationMillis,
@JsonProperty("actionId") Optional<String> actionId,
@JsonProperty("message") Optional<String> message,
@JsonProperty("revertToState") Optional<MachineState> revertToState,
@JsonProperty("killTasksOnDecommissionTimeout") Optional<Boolean> killTasksOnDecommissionTimeout) {
super(durationMillis, actionId, message);
this.revertToState = revertToState;
this.killTasksOnDecommissionTimeout = killTasksOnDecommissionTimeout.or(false);
}
@ApiModelProperty(required=false, value="If a durationMillis is specified, return to this state when time has elapsed")
public Optional<MachineState> getRevertToState() {
return revertToState;
}
@ApiModelProperty(required=false, value="If a machine has not successfully decommissioned in durationMillis, kill the remaining tasks on the machine")
public boolean isKillTasksOnDecommissionTimeout() {
return killTasksOnDecommissionTimeout;
}
@Override
public String toString() {
return "SingularityMachineChangeRequest{" +
"revertToState=" + revertToState +
", killTasksOnDecommissionTimeout=" + killTasksOnDecommissionTimeout +
"} " + super.toString();
}
}