package com.hubspot.singularity;
import java.util.Set;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
public class SingularityDeployProgress {
private final int targetActiveInstances;
private final int currentActiveInstances;
private final int deployInstanceCountPerStep;
private final long deployStepWaitTimeMs;
private final boolean stepComplete;
private final boolean autoAdvanceDeploySteps;
private final Set<SingularityTaskId> failedDeployTasks;
private final long timestamp;
@JsonCreator
public SingularityDeployProgress(@JsonProperty("targetActiveInstances") int targetActiveInstances,
@JsonProperty("currentActiveInstances") int currentActiveInstances,
@JsonProperty("deployInstanceCountPerStep") int deployInstanceCountPerStep,
@JsonProperty("deployStepWaitTimeMs") long deployStepWaitTimeMs,
@JsonProperty("stepComplete") boolean stepComplete,
@JsonProperty("autoAdvanceDeploySteps") boolean autoAdvanceDeploySteps,
@JsonProperty("failedDeployTasks") Set<SingularityTaskId> failedDeployTasks,
@JsonProperty("timestamp") long timestamp) {
this.targetActiveInstances = targetActiveInstances;
this.currentActiveInstances = currentActiveInstances;
this.deployInstanceCountPerStep = deployInstanceCountPerStep;
this.deployStepWaitTimeMs = deployStepWaitTimeMs;
this.stepComplete = stepComplete;
this.autoAdvanceDeploySteps = autoAdvanceDeploySteps;
this.failedDeployTasks = failedDeployTasks;
this.timestamp = timestamp;
}
public int getTargetActiveInstances() {
return targetActiveInstances;
}
public int getCurrentActiveInstances() {
return currentActiveInstances;
}
public int getDeployInstanceCountPerStep() {
return deployInstanceCountPerStep;
}
public boolean isStepComplete() {
return stepComplete;
}
public boolean isAutoAdvanceDeploySteps() {
return autoAdvanceDeploySteps;
}
public long getDeployStepWaitTimeMs() {
return deployStepWaitTimeMs;
}
public Set<SingularityTaskId> getFailedDeployTasks() {
return failedDeployTasks;
}
public long getTimestamp() {
return timestamp;
}
public SingularityDeployProgress withNewTargetInstances(int instances) {
return new SingularityDeployProgress(instances, currentActiveInstances, deployInstanceCountPerStep, deployStepWaitTimeMs, false, autoAdvanceDeploySteps, failedDeployTasks, System.currentTimeMillis());
}
public SingularityDeployProgress withNewActiveInstances(int instances) {
return new SingularityDeployProgress(targetActiveInstances, instances, deployInstanceCountPerStep, deployStepWaitTimeMs, false, autoAdvanceDeploySteps, failedDeployTasks, System.currentTimeMillis());
}
public SingularityDeployProgress withCompletedStep() {
return new SingularityDeployProgress(targetActiveInstances, currentActiveInstances, deployInstanceCountPerStep, deployStepWaitTimeMs, true, autoAdvanceDeploySteps, failedDeployTasks, System.currentTimeMillis());
}
public SingularityDeployProgress withFailedTasks(Set<SingularityTaskId> failedTasks) {
return new SingularityDeployProgress(targetActiveInstances, currentActiveInstances, deployInstanceCountPerStep, deployStepWaitTimeMs, false, autoAdvanceDeploySteps, failedTasks, System.currentTimeMillis());
}
@Override
public String toString() {
return "SingularityIncrementalDeployProgress{" +
"targetActiveInstances=" + targetActiveInstances +
", currentActiveInstances=" + currentActiveInstances +
", deployInstanceCountPerStep=" + deployInstanceCountPerStep +
", deployStepWaitTimeMs=" + deployStepWaitTimeMs +
", stepComplete=" + stepComplete +
", autoAdvanceDeploySteps=" + autoAdvanceDeploySteps +
", failedDeployTasks=" + failedDeployTasks +
", timestamp=" + timestamp +
'}';
}
}