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

com.hubspot.singularity.executor.models.EnvironmentContext Maven / Gradle / Ivy

The newest version!
package com.hubspot.singularity.executor.models;

import com.google.common.base.Strings;
import java.util.ArrayList;
import java.util.List;
import org.apache.mesos.Protos;
import org.apache.mesos.Protos.Environment.Variable;
import org.apache.mesos.Protos.Parameter;
import org.apache.mesos.Protos.TaskInfo;

public class EnvironmentContext {
  protected final TaskInfo taskInfo;

  public EnvironmentContext(TaskInfo taskInfo) {
    this.taskInfo = taskInfo;
  }

  public List getEnv() {
    return taskInfo.getExecutor().getCommand().getEnvironment().getVariablesList();
  }

  public Protos.ContainerInfo.DockerInfo getDockerInfo() {
    return taskInfo.getContainer().getDocker();
  }

  public List getDockerParameters() {
    List args = new ArrayList<>();
    for (Parameter parameter : taskInfo.getContainer().getDocker().getParametersList()) {
      args.add(toCmdLineArg(parameter));
    }
    return args;
  }

  public boolean isDockerWorkdirOverriden() {
    for (Parameter parameter : taskInfo.getContainer().getDocker().getParametersList()) {
      if (
        parameter.hasKey() &&
        (parameter.getKey().equals("w") || parameter.getKey().equals("workdir"))
      ) {
        return true;
      }
    }
    return false;
  }

  public List getContainerVolumes() {
    return taskInfo.getContainer().getVolumesList();
  }

  private String toCmdLineArg(Parameter parameter) {
    if (parameter.hasKey() && parameter.getKey().length() > 1) {
      if (parameter.hasValue() && !Strings.isNullOrEmpty(parameter.getValue())) {
        return String.format("--%s=%s", parameter.getKey(), parameter.getValue());
      } else {
        return String.format("--%s", parameter.getKey());
      }
    } else {
      if (parameter.hasValue() && !Strings.isNullOrEmpty(parameter.getValue())) {
        return String.format("-%s=%s", parameter.getKey(), parameter.getValue());
      } else {
        return String.format("-%s", parameter.getKey());
      }
    }
  }

  @Override
  public String toString() {
    return "EnvironmentContext{" + "taskInfo=" + taskInfo + '}';
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy