package com.hubspot.singularity;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Optional;
import com.hubspot.deploy.EmbeddedArtifact;
import com.hubspot.deploy.ExecutorData;
import com.hubspot.deploy.ExternalArtifact;
import com.hubspot.deploy.S3Artifact;
import com.hubspot.deploy.S3ArtifactSignature;
import com.hubspot.singularity.executor.SingularityExecutorLogrotateFrequency;
public class SingularityTaskExecutorData extends ExecutorData {
private final List<SingularityS3UploaderFile> s3UploaderAdditionalFiles;
private final String defaultS3Bucket;
private final String s3UploaderKeyPattern;
private final String serviceLog;
private final String serviceFinishedTailLog;
private final Optional<String> requestGroup;
private final Optional<String> s3StorageClass;
private final Optional<Long> applyS3StorageClassAfterBytes;
public SingularityTaskExecutorData(ExecutorData executorData, List<SingularityS3UploaderFile> s3UploaderAdditionalFiles, String defaultS3Bucket, String s3UploaderKeyPattern,
String serviceLog, String serviceFinishedTailLog, Optional<String> requestGroup, Optional<String> s3StorageClass, Optional<Long> applyS3StorageClassAfterBytes) {
this(executorData.getCmd(),
executorData.getEmbeddedArtifacts(),
executorData.getExternalArtifacts(),
executorData.getS3Artifacts(),
executorData.getSuccessfulExitCodes(),
executorData.getUser(),
executorData.getRunningSentinel(),
executorData.getExtraCmdLineArgs(),
executorData.getLoggingTag(),
executorData.getLoggingExtraFields(),
executorData.getSigKillProcessesAfterMillis(),
executorData.getMaxTaskThreads(),
executorData.getPreserveTaskSandboxAfterFinish(),
executorData.getMaxOpenFiles(),
executorData.getSkipLogrotateAndCompress(),
executorData.getS3ArtifactSignatures(),
executorData.getLogrotateFrequency(),
s3UploaderAdditionalFiles,
defaultS3Bucket,
s3UploaderKeyPattern,
serviceLog,
serviceFinishedTailLog,
requestGroup,
s3StorageClass,
applyS3StorageClassAfterBytes);
}
@JsonCreator
public SingularityTaskExecutorData(@JsonProperty("cmd") String cmd,
@JsonProperty("embeddedArtifacts") List<EmbeddedArtifact> embeddedArtifacts,
@JsonProperty("externalArtifacts") List<ExternalArtifact> externalArtifacts,
@JsonProperty("s3Artifacts") List<S3Artifact> s3Artifacts,
@JsonProperty("successfulExitCodes") List<Integer> successfulExitCodes,
@JsonProperty("user") Optional<String> user,
@JsonProperty("runningSentinel") Optional<String> runningSentinel,
@JsonProperty("extraCmdLineArgs") List<String> extraCmdLineArgs,
@JsonProperty("loggingTag") Optional<String> loggingTag,
@JsonProperty("loggingExtraFields") Map<String, String> loggingExtraFields,
@JsonProperty("sigKillProcessesAfterMillis") Optional<Long> sigKillProcessesAfterMillis,
@JsonProperty("maxTaskThreads") Optional<Integer> maxTaskThreads,
@JsonProperty("preserveTaskSandboxAfterFinish") Optional<Boolean> preserveTaskSandboxAfterFinish,
@JsonProperty("maxOpenFiles") Optional<Integer> maxOpenFiles,
@JsonProperty("skipLogrotateAndCompress") Optional<Boolean> skipLogrotateAndCompress,
@JsonProperty("s3ArtifactSignatures") Optional<List<S3ArtifactSignature>> s3ArtifactSignatures,
@JsonProperty("logrotateFrequency") Optional<SingularityExecutorLogrotateFrequency> logrotateFrequency,
@JsonProperty("s3UploaderAdditionalFiles") List<SingularityS3UploaderFile> s3UploaderAdditionalFiles,
@JsonProperty("defaultS3Bucket") String defaultS3Bucket,
@JsonProperty("s3UploaderKeyPattern") String s3UploaderKeyPattern,
@JsonProperty("serviceLog") String serviceLog,
@JsonProperty("serviceFinishedTailLog") String serviceFinishedTailLog,
@JsonProperty("requestGroup") Optional<String> requestGroup,
@JsonProperty("s3StorageClass") Optional<String> s3StorageClass,
@JsonProperty("applyS3StorageClassAfterBytes") Optional<Long> applyS3StorageClassAfterBytes) {
super(cmd, embeddedArtifacts, externalArtifacts, s3Artifacts, successfulExitCodes, user, runningSentinel, extraCmdLineArgs, loggingTag, loggingExtraFields,
sigKillProcessesAfterMillis, maxTaskThreads, preserveTaskSandboxAfterFinish, maxOpenFiles, skipLogrotateAndCompress, s3ArtifactSignatures, logrotateFrequency);
this.s3UploaderAdditionalFiles = s3UploaderAdditionalFiles;
this.defaultS3Bucket = defaultS3Bucket;
this.s3UploaderKeyPattern = s3UploaderKeyPattern;
this.serviceLog = serviceLog;
this.serviceFinishedTailLog = serviceFinishedTailLog;
this.requestGroup = requestGroup;
this.s3StorageClass = s3StorageClass;
this.applyS3StorageClassAfterBytes = applyS3StorageClassAfterBytes;
}
public List<SingularityS3UploaderFile> getS3UploaderAdditionalFiles() {
return s3UploaderAdditionalFiles;
}
public String getDefaultS3Bucket() {
return defaultS3Bucket;
}
public String getS3UploaderKeyPattern() {
return s3UploaderKeyPattern;
}
public String getServiceLog() {
return serviceLog;
}
public String getServiceFinishedTailLog() {
return serviceFinishedTailLog;
}
public Optional<String> getRequestGroup() {
return requestGroup;
}
public Optional<String> getS3StorageClass() {
return s3StorageClass;
}
public Optional<Long> getApplyS3StorageClassAfterBytes() {
return applyS3StorageClassAfterBytes;
}
@Override
public String toString() {
return "SingularityTaskExecutorData{" +
"s3UploaderAdditionalFiles=" + s3UploaderAdditionalFiles +
", defaultS3Bucket='" + defaultS3Bucket + '\'' +
", s3UploaderKeyPattern='" + s3UploaderKeyPattern + '\'' +
", serviceLog='" + serviceLog + '\'' +
", serviceFinishedTailLog='" + serviceFinishedTailLog + '\'' +
", requestGroup=" + requestGroup +
", s3StorageClass=" + s3StorageClass +
", applyS3StorageClassAfterBytes=" + applyS3StorageClassAfterBytes +
"} " + super.toString();
}
}