package com.hubspot.deploy;
import java.util.List;
import java.util.Map;
import com.google.common.base.Optional;
import com.hubspot.singularity.executor.SingularityExecutorLogrotateFrequency;
public class ExecutorDataBuilder {
private String cmd;
private List<EmbeddedArtifact> embeddedArtifacts;
private List<ExternalArtifact> externalArtifacts;
private List<S3Artifact> s3Artifacts;
private List<Integer> successfulExitCodes;
private Optional<String> runningSentinel;
private Optional<String> user;
private List<String> extraCmdLineArgs;
private Optional<String> loggingTag;
private Map<String, String> loggingExtraFields;
private Optional<Long> sigKillProcessesAfterMillis;
private Optional<Integer> maxTaskThreads;
private Optional<Boolean> preserveTaskSandboxAfterFinish;
private Optional<Integer> maxOpenFiles;
private Optional<Boolean> skipLogrotateAndCompress;
private Optional<List<S3ArtifactSignature>> s3ArtifactSignatures;
private Optional<SingularityExecutorLogrotateFrequency> logrotateFrequency;
public ExecutorDataBuilder(String cmd, List<EmbeddedArtifact> embeddedArtifacts, List<ExternalArtifact> externalArtifacts, List<S3Artifact> s3Artifacts, List<Integer> successfulExitCodes,
Optional<String> runningSentinel, Optional<String> user, List<String> extraCmdLineArgs, Optional<String> loggingTag, Map<String, String> loggingExtraFields,
Optional<Long> sigKillProcessesAfterMillis, Optional<Integer> maxTaskThreads, Optional<Boolean> preserveTaskSandboxAfterFinish,
Optional<Integer> maxOpenFiles, Optional<Boolean> skipLogrotateAndCompress, Optional<List<S3ArtifactSignature>> s3ArtifactSignatures, Optional<SingularityExecutorLogrotateFrequency> logrotateFrequency) {
this.cmd = cmd;
this.embeddedArtifacts = embeddedArtifacts;
this.externalArtifacts = externalArtifacts;
this.s3Artifacts = s3Artifacts;
this.successfulExitCodes = successfulExitCodes;
this.runningSentinel = runningSentinel;
this.user = user;
this.extraCmdLineArgs = extraCmdLineArgs;
this.loggingTag = loggingTag;
this.loggingExtraFields = loggingExtraFields;
this.sigKillProcessesAfterMillis = sigKillProcessesAfterMillis;
this.maxTaskThreads = maxTaskThreads;
this.preserveTaskSandboxAfterFinish = preserveTaskSandboxAfterFinish;
this.maxOpenFiles = maxOpenFiles;
this.skipLogrotateAndCompress = skipLogrotateAndCompress;
this.s3ArtifactSignatures = s3ArtifactSignatures;
this.logrotateFrequency = logrotateFrequency;
}
public ExecutorDataBuilder() {
}
public ExecutorData build() {
return new ExecutorData(cmd, embeddedArtifacts, externalArtifacts, s3Artifacts, successfulExitCodes, user, runningSentinel, extraCmdLineArgs, loggingTag, loggingExtraFields,
sigKillProcessesAfterMillis, maxTaskThreads, preserveTaskSandboxAfterFinish, maxOpenFiles, skipLogrotateAndCompress, s3ArtifactSignatures, logrotateFrequency);
}
public Optional<String> getLoggingTag() {
return loggingTag;
}
public ExecutorDataBuilder setLoggingTag(Optional<String> loggingTag) {
this.loggingTag = loggingTag;
return this;
}
public Map<String, String> getLoggingExtraFields() {
return loggingExtraFields;
}
public ExecutorDataBuilder setLoggingExtraFields(Map<String, String> loggingExtraFields) {
this.loggingExtraFields = loggingExtraFields;
return this;
}
public String getCmd() {
return cmd;
}
public List<EmbeddedArtifact> getEmbeddedArtifacts() {
return embeddedArtifacts;
}
public List<ExternalArtifact> getExternalArtifacts() {
return externalArtifacts;
}
public List<Integer> getSuccessfulExitCodes() {
return successfulExitCodes;
}
public List<String> getExtraCmdLineArgs() {
return extraCmdLineArgs;
}
public Optional<String> getRunningSentinel() {
return runningSentinel;
}
public Optional<String> getUser() {
return user;
}
public ExecutorDataBuilder setCmd(String cmd) {
this.cmd = cmd;
return this;
}
public Optional<Long> getSigKillProcessesAfterMillis() {
return sigKillProcessesAfterMillis;
}
public ExecutorDataBuilder setSigKillProcessesAfterMillis(Optional<Long> sigKillProcessesAfterMillis) {
this.sigKillProcessesAfterMillis = sigKillProcessesAfterMillis;
return this;
}
public ExecutorDataBuilder setEmbeddedArtifacts(List<EmbeddedArtifact> embeddedArtifacts) {
this.embeddedArtifacts = embeddedArtifacts;
return this;
}
public ExecutorDataBuilder setExternalArtifacts(List<ExternalArtifact> externalArtifacts) {
this.externalArtifacts = externalArtifacts;
return this;
}
public ExecutorDataBuilder setSuccessfulExitCodes(List<Integer> successfulExitCodes) {
this.successfulExitCodes = successfulExitCodes;
return this;
}
public ExecutorDataBuilder setRunningSentinel(Optional<String> runningSentinel) {
this.runningSentinel = runningSentinel;
return this;
}
public ExecutorDataBuilder setUser(Optional<String> user) {
this.user = user;
return this;
}
public ExecutorDataBuilder setExtraCmdLineArgs(List<String> extraCmdLineArgs) {
this.extraCmdLineArgs = extraCmdLineArgs;
return this;
}
public List<S3Artifact> getS3Artifacts() {
return s3Artifacts;
}
public ExecutorDataBuilder setS3Artifacts(List<S3Artifact> s3Artifacts) {
this.s3Artifacts = s3Artifacts;
return this;
}
public Optional<Integer> getMaxTaskThreads() {
return maxTaskThreads;
}
public ExecutorDataBuilder setMaxTaskThreads(Optional<Integer> maxTaskThreads) {
this.maxTaskThreads = maxTaskThreads;
return this;
}
public Optional<Boolean> getPreserveTaskSandboxAfterFinish() {
return preserveTaskSandboxAfterFinish;
}
public ExecutorDataBuilder setPreserveTaskSandboxAfterFinish(Optional<Boolean> preserveTaskSandboxAfterFinish) {
this.preserveTaskSandboxAfterFinish = preserveTaskSandboxAfterFinish;
return this;
}
public Optional<Integer> getMaxOpenFiles() {
return maxOpenFiles;
}
public ExecutorDataBuilder setMaxOpenFiles(Optional<Integer> maxOpenFiles) {
this.maxOpenFiles = maxOpenFiles;
return this;
}
public Optional<Boolean> getSkipLogrotateAndCompress() {
return skipLogrotateAndCompress;
}
public ExecutorDataBuilder setSkipLogrotateAndCompress(Optional<Boolean> skipLogrotateAndCompress) {
this.skipLogrotateAndCompress = skipLogrotateAndCompress;
return this;
}
public Optional<List<S3ArtifactSignature>> getS3ArtifactSignatures() {
return s3ArtifactSignatures;
}
public ExecutorDataBuilder setS3ArtifactSignatures(Optional<List<S3ArtifactSignature>> s3ArtifactSignatures) {
this.s3ArtifactSignatures = s3ArtifactSignatures;
return this;
}
public Optional<SingularityExecutorLogrotateFrequency> getLogrotateFrequency() {
return logrotateFrequency;
}
public ExecutorDataBuilder setLogrotateFrequency(Optional<SingularityExecutorLogrotateFrequency> logrotateFrequency) {
this.logrotateFrequency = logrotateFrequency;
return this;
}
@Override
public String toString() {
return "ExecutorDataBuilder{" +
"cmd='" + cmd + '\'' +
", embeddedArtifacts=" + embeddedArtifacts +
", externalArtifacts=" + externalArtifacts +
", s3Artifacts=" + s3Artifacts +
", successfulExitCodes=" + successfulExitCodes +
", runningSentinel=" + runningSentinel +
", user=" + user +
", extraCmdLineArgs=" + extraCmdLineArgs +
", loggingTag=" + loggingTag +
", loggingExtraFields=" + loggingExtraFields +
", sigKillProcessesAfterMillis=" + sigKillProcessesAfterMillis +
", maxTaskThreads=" + maxTaskThreads +
", preserveTaskSandboxAfterFinish=" + preserveTaskSandboxAfterFinish +
", maxOpenFiles=" + maxOpenFiles +
", skipLogrotateAndCompress=" + skipLogrotateAndCompress +
", s3ArtifactSignatures=" + s3ArtifactSignatures +
", logrotateFrequency=" + logrotateFrequency +
'}';
}
}