From 608f57d7d41f16541ef1e895101df9fb0380feba Mon Sep 17 00:00:00 2001
From: Morris Jette <jette@schedmd.com>
Date: Thu, 6 Feb 2014 16:17:36 -0800
Subject: [PATCH] Set SLURM_JOB_USER & UID for task_epilog

bug 521
---
 src/common/env.c             | 12 ++++++++++++
 src/common/env.h             |  2 ++
 src/slurmd/slurmstepd/task.c |  2 ++
 3 files changed, 16 insertions(+)

diff --git a/src/common/env.c b/src/common/env.c
index 4f50bc113be..fca5904e305 100644
--- a/src/common/env.c
+++ b/src/common/env.c
@@ -838,6 +838,18 @@ int setup_env(env_t *env, bool preserve_env)
 		rc = SLURM_FAILURE;
 	}
 
+	if (env->user_name) {
+		if (setenvf(&env->env, "SLURM_JOB_UID", "%u",
+			    (unsigned int) env->uid)) {
+			error("Can't set SLURM_JOB_UID env variable");
+			rc = SLURM_FAILURE;
+		}
+		if (setenvf(&env->env, "SLURM_JOB_USER", "%s", env->user_name)){
+			error("Can't set SLURM_JOB_USER env variable");
+			rc = SLURM_FAILURE;
+		}
+	}
+
 	return rc;
 }
 
diff --git a/src/common/env.h b/src/common/env.h
index f606dbdfd8d..a8547f13a0a 100644
--- a/src/common/env.h
+++ b/src/common/env.h
@@ -78,6 +78,8 @@ typedef struct env_options {
 	char *ckpt_dir;		/* --ckpt-dir=                 */
 	uint16_t restart_cnt;	/* count of job restarts	*/
 	uint16_t batch_flag;	/* 1 if batch: queued job with script */
+	uint32_t uid;		/* user ID */
+	char *user_name;	/* user name */
 } env_t;
 
 
diff --git a/src/slurmd/slurmstepd/task.c b/src/slurmd/slurmstepd/task.c
index b50be237820..c44849b916d 100644
--- a/src/slurmd/slurmstepd/task.c
+++ b/src/slurmd/slurmstepd/task.c
@@ -365,6 +365,8 @@ exec_task(stepd_step_rec_t *job, int i)
 	job->envtp->distribution = -1;
 	job->envtp->ckpt_dir = xstrdup(job->ckpt_dir);
 	job->envtp->batch_flag = job->batch;
+	job->envtp->uid = job->uid;
+	job->envtp->user_name = xstrdup(job->user_name);
 
 	/* Modify copy of job's environment. Do not alter in place or
 	 * concurrent searches of the environment can generate invalid memory
-- 
GitLab