package com.hubspot.singularity; import java.util.List; import java.util.Objects; import javax.annotation.Nonnull; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.Optional; import com.google.common.base.Predicate; import com.hubspot.mesos.Resources; public class SingularityPendingTask { private final SingularityPendingTaskId pendingTaskId; private final Optional<List<String>> cmdLineArgsList; private final Optional<String> user; private final Optional<String> runId; private final Optional<Boolean> skipHealthchecks; private final Optional<String> message; private final Optional<Resources> resources; private final Optional<String> actionId; public static Predicate<SingularityPendingTask> matchingRequest(final String requestId) { return new Predicate<SingularityPendingTask>() { @Override public boolean apply(@Nonnull SingularityPendingTask input) { return input.getPendingTaskId().getRequestId().equals(requestId); } }; } public static Predicate<SingularityPendingTask> matchingDeploy(final String deployId) { return new Predicate<SingularityPendingTask>() { @Override public boolean apply(@Nonnull SingularityPendingTask input) { return input.getPendingTaskId().getDeployId().equals(deployId); } }; } @JsonCreator public SingularityPendingTask(@JsonProperty("pendingTaskId") SingularityPendingTaskId pendingTaskId, @JsonProperty("cmdLineArgsList") Optional<List<String>> cmdLineArgsList, @JsonProperty("user") Optional<String> user, @JsonProperty("runId") Optional<String> runId, @JsonProperty("skipHealthchecks") Optional<Boolean> skipHealthchecks, @JsonProperty("message") Optional<String> message, @JsonProperty("resources") Optional<Resources> resources, @JsonProperty("actionId") Optional<String> actionId) { this.pendingTaskId = pendingTaskId; this.user = user; this.message = message; this.cmdLineArgsList = cmdLineArgsList; this.runId = runId; this.skipHealthchecks = skipHealthchecks; this.resources = resources; this.actionId = actionId; } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } SingularityPendingTask that = (SingularityPendingTask) o; return Objects.equals(pendingTaskId, that.pendingTaskId); } @Override public int hashCode() { return Objects.hash(pendingTaskId); } public Optional<String> getUser() { return user; } public SingularityPendingTaskId getPendingTaskId() { return pendingTaskId; } public Optional<List<String>> getCmdLineArgsList() { return cmdLineArgsList; } public Optional<String> getRunId() { return runId; } public Optional<Boolean> getSkipHealthchecks() { return skipHealthchecks; } public Optional<String> getMessage() { return message; } public Optional<Resources> getResources() { return resources; } public Optional<String> getActionId() { return actionId; } @Override public String toString() { return "SingularityPendingTask{" + "pendingTaskId=" + pendingTaskId + ", cmdLineArgsList=" + cmdLineArgsList + ", user=" + user + ", runId=" + runId + ", skipHealthchecks=" + skipHealthchecks + ", message=" + message + ", resources=" + resources + ", actionId=" + actionId + '}'; } }