From 2a7afce55874ae142d92af1a00c4156a54bdb242 Mon Sep 17 00:00:00 2001 From: Chris Navarro Date: Fri, 13 Sep 2024 10:46:59 -0500 Subject: [PATCH] Fixes #28 - added the user/creator information to environment of process running tool (#31) * Fixes #28 - added the user/creator information to environment of process running the tool * Update datawolf-core/src/main/java/edu/illinois/ncsa/datawolf/Executor.java Co-authored-by: Rob Kooper --- CHANGELOG.md | 4 ++++ .../edu/illinois/ncsa/datawolf/Executor.java | 2 ++ .../commandline/CommandLineExecutor.java | 6 ++++++ .../kubernetes/KubernetesExecutor.java | 21 +++++++++++++++++-- 4 files changed, 31 insertions(+), 2 deletions(-) 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