All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hubspot.singularity.executor.task.SingularityExecutorTaskDefinition Maven / Gradle / Ivy

package com.hubspot.singularity.executor.task;

import java.nio.file.Path;
import java.nio.file.Paths;

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.deploy.ExecutorData;

public class SingularityExecutorTaskDefinition {

  private final ExecutorData executorData;
  private final String taskId;
  private final Path taskDirectoryPath;
  private final String executorBashOut;
  private final String serviceLogOut;
  private final String serviceLogOutExtension;
  private final String taskAppDirectory;
  private final String logrotateStateFile;
  private final String executorPid;
  private final String signatureVerifyOut;

  @JsonCreator
  public SingularityExecutorTaskDefinition(@JsonProperty("taskId") String taskId, @JsonProperty("executorData") ExecutorData executorData, @JsonProperty("taskDirectory") String taskDirectory, @JsonProperty("executorPid") String executorPid,
      @JsonProperty("serviceLogOut") String serviceLogOut, @JsonProperty("serviceLogOutExtension") String serviceLogOutExtension, @JsonProperty("taskAppDirectory") String taskAppDirectory, @JsonProperty("executorBashOut") String executorBashOut, @JsonProperty("logrotateStateFilePath") String logrotateStateFile, @JsonProperty("signatureVerifyOut") String signatureVerifyOut) {
    this.executorData = executorData;
    this.taskId = taskId;
    this.taskDirectoryPath = Paths.get(taskDirectory);

    this.executorPid = executorPid;
    this.executorBashOut = executorBashOut;
    this.serviceLogOut = serviceLogOut;
    this.serviceLogOutExtension = serviceLogOutExtension;
    this.taskAppDirectory = taskAppDirectory;
    this.logrotateStateFile = logrotateStateFile;
    this.signatureVerifyOut = signatureVerifyOut;
  }

  @JsonIgnore
  public Path getTaskDirectoryPath() {
    return taskDirectoryPath;
  }

  @JsonIgnore
  public Path getExecutorBashOutPath() {
    return taskDirectoryPath.resolve(executorBashOut);
  }

  @JsonIgnore
  public Path getServiceLogOutPath() {
    return taskDirectoryPath.resolve(serviceLogOut);
  }

  @JsonIgnore
  public Path getTaskAppDirectoryPath() {
    return taskDirectoryPath.resolve(taskAppDirectory);
  }

  @JsonIgnore
  public Path getLogrotateStateFilePath() {
    return taskDirectoryPath.resolve(logrotateStateFile);
  }

  @JsonIgnore
  /**
   * Convenience method for handling skipLogrotateAndCompress
   */
  public boolean shouldLogrotateLogFile() {
    return !executorData.getSkipLogrotateAndCompress().or(Boolean.FALSE).booleanValue();
  }

  @JsonIgnore
  public Path getSignatureVerifyOutPath() { return taskDirectoryPath.resolve(signatureVerifyOut); }

  public String getTaskDirectory() {
    return taskDirectoryPath.toString();
  }

  public String getExecutorBashOut() {
    return getExecutorBashOutPath().toString();
  }

  public String getServiceLogOut() {
    return getServiceLogOutPath().toString();
  }

  public String getServiceLogOutExtension() {
    return serviceLogOutExtension;
  }

  public String getTaskAppDirectory() {
    return getTaskAppDirectoryPath().toString();
  }

  public String getLogrotateStateFile() {
    return getLogrotateStateFilePath().toString();
  }

  public ExecutorData getExecutorData() {
    return executorData;
  }

  public String getTaskId() {
    return taskId;
  }

  public String getExecutorPid() {
    return executorPid;
  }

  public String getSignatureVerifyOut() {
    return signatureVerifyOut;
  }

  @JsonIgnore
  public Optional getExecutorPidSafe() {
    try {
      return Optional.of(Integer.parseInt(executorPid));
    } catch (NumberFormatException nfe) {
      return Optional. absent();
    }
  }

  @Override
  public String toString() {
    return "SingularityExecutorTaskDefinition [executorData=" + executorData + ", taskId=" + taskId + ", taskDirectoryPath=" + taskDirectoryPath + ", executorBashOut=" + executorBashOut
        + ", serviceLogOut=" + serviceLogOut + ", taskAppDirectory=" + taskAppDirectory + ", logrotateStateFile=" + logrotateStateFile + ", executorPid=" + executorPid + "]";
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy