diff --git a/CHANGELOG.md b/CHANGELOG.md index 466c9a4d..247f2e42 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased] +### Added +- User information to environment of process running the tool [#28](https://github.com/ncsa/datawolf/issues/28) + + ### Changed - Kubernetes executor prints exception [#23](https://github.com/ncsa/datawolf/issues/23) diff --git a/datawolf-core/src/main/java/edu/illinois/ncsa/datawolf/Executor.java b/datawolf-core/src/main/java/edu/illinois/ncsa/datawolf/Executor.java index b3fcc77c..961e60cb 100644 --- a/datawolf-core/src/main/java/edu/illinois/ncsa/datawolf/Executor.java +++ b/datawolf-core/src/main/java/edu/illinois/ncsa/datawolf/Executor.java @@ -36,6 +36,8 @@ public abstract class Executor { private static Logger logger = LoggerFactory.getLogger(Executor.class); + protected static String DATAWOLF_USER = "DATAWOLF_USER"; + private StringBuilder log = new StringBuilder(); private LogFile logfile = new LogFile(); private int lastsave = 0; diff --git a/datawolf-executor-commandline/src/main/java/edu/illinois/ncsa/datawolf/executor/commandline/CommandLineExecutor.java b/datawolf-executor-commandline/src/main/java/edu/illinois/ncsa/datawolf/executor/commandline/CommandLineExecutor.java index 27189e16..66ba7ee1 100644 --- a/datawolf-executor-commandline/src/main/java/edu/illinois/ncsa/datawolf/executor/commandline/CommandLineExecutor.java +++ b/datawolf-executor-commandline/src/main/java/edu/illinois/ncsa/datawolf/executor/commandline/CommandLineExecutor.java @@ -108,6 +108,12 @@ public void execute(File cwd) throws AbortException, FailedException { env.putAll(impl.getEnv()); } + // Add user to the environment in case a tool needs this information + if(execution.getCreator() != null) { + String user = execution.getCreator().getEmail(); + env.put(DATAWOLF_USER, user); + } + // find the app to execute command.add(findApp(impl.getExecutable().trim(), cwd)); diff --git a/datawolf-executor-kubernetes/src/main/java/edu/illinois/ncsa/datawolf/executor/kubernetes/KubernetesExecutor.java b/datawolf-executor-kubernetes/src/main/java/edu/illinois/ncsa/datawolf/executor/kubernetes/KubernetesExecutor.java index 2b36aaf8..a13e4caf 100644 --- a/datawolf-executor-kubernetes/src/main/java/edu/illinois/ncsa/datawolf/executor/kubernetes/KubernetesExecutor.java +++ b/datawolf-executor-kubernetes/src/main/java/edu/illinois/ncsa/datawolf/executor/kubernetes/KubernetesExecutor.java @@ -285,8 +285,25 @@ public State submitRemoteJob(File cwd) throws AbortException, FailedException { container.args(command); // add any environment variables if (!impl.getEnv().isEmpty()) { - // TODO implement - //container.addEnvItem(); + Map environment = impl.getEnv(); + + for (Map.Entry entry : environment.entrySet()) { + String key = entry.getKey(); + String value = entry.getValue(); + V1EnvVar envVar = new V1EnvVar(); + envVar.setName(key); + envVar.setValue(value); + container.addEnvItem(envVar); + } + } + + // Add user to the environment in case a tool needs this information + if(execution.getCreator() != null) { + String user = execution.getCreator().getEmail(); + V1EnvVar envVar = new V1EnvVar(); + envVar.setName(DATAWOLF_USER); + envVar.setValue(user); + container.addEnvItem(envVar); } // add resource limits