package com.hubspot.singularity; import java.util.List; 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.mesos.JavaUtils; public class SingularityTaskHistory { private final List<SingularityTaskHistoryUpdate> taskUpdates; private final Optional<String> directory; private final Optional<String> containerId; private final SingularityTask task; private final List<SingularityTaskHealthcheckResult> healthcheckResults; private final List<SingularityLoadBalancerUpdate> loadBalancerUpdates; private final List<SingularityTaskShellCommandHistory> shellCommandHistory; private final List<SingularityTaskMetadata> taskMetadata; @JsonCreator public SingularityTaskHistory(@JsonProperty("taskUpdates") List<SingularityTaskHistoryUpdate> taskUpdates, @JsonProperty("directory") Optional<String> directory, @JsonProperty("containerId") Optional<String> containerId, @JsonProperty("healthcheckResults") List<SingularityTaskHealthcheckResult> healthcheckResults, @JsonProperty("task") SingularityTask task, @JsonProperty("loadBalancerUpdates") List<SingularityLoadBalancerUpdate> loadBalancerUpdates, @JsonProperty("shellCommandHistory") List<SingularityTaskShellCommandHistory> shellCommandHistory, @JsonProperty("taskMetadata") List<SingularityTaskMetadata> taskMetadata) { this.directory = directory; this.containerId = containerId; this.task = task; this.taskUpdates = JavaUtils.nonNullImmutable(taskUpdates); this.healthcheckResults = JavaUtils.nonNullImmutable(healthcheckResults); this.loadBalancerUpdates = JavaUtils.nonNullImmutable(loadBalancerUpdates); this.shellCommandHistory = JavaUtils.nonNullImmutable(shellCommandHistory); this.taskMetadata = JavaUtils.nonNullImmutable(taskMetadata); } public List<SingularityTaskHistoryUpdate> getTaskUpdates() { return taskUpdates; } public Optional<String> getDirectory() { return directory; } public Optional<String> getContainerId() { return containerId; } public SingularityTask getTask() { return task; } public List<SingularityTaskMetadata> getTaskMetadata() { return taskMetadata; } public List<SingularityTaskHealthcheckResult> getHealthcheckResults() { return healthcheckResults; } public List<SingularityLoadBalancerUpdate> getLoadBalancerUpdates() { return loadBalancerUpdates; } public List<SingularityTaskShellCommandHistory> getShellCommandHistory() { return shellCommandHistory; } @JsonIgnore public Optional<SingularityTaskHistoryUpdate> getLastTaskUpdate() { return JavaUtils.getLast(getTaskUpdates()); } @Override public String toString() { return "SingularityTaskHistory{" + "taskUpdates=" + taskUpdates + ", directory=" + directory + ", containerId=" + containerId + ", task=" + task + ", healthcheckResults=" + healthcheckResults + ", loadBalancerUpdates=" + loadBalancerUpdates + ", shellCommandHistory=" + shellCommandHistory + ", taskMetadata=" + taskMetadata + '}'; } }