diff --git a/src/plugins/job_submit/lua/job_submit_lua.c b/src/plugins/job_submit/lua/job_submit_lua.c old mode 100644 new mode 100755 index bf247a1e98c94a6e34fa73ca5af6fad4bf74949c..2a08b4e408ae3021b5a83e2b15e92669b2e2d343 --- a/src/plugins/job_submit/lua/job_submit_lua.c +++ b/src/plugins/job_submit/lua/job_submit_lua.c @@ -281,6 +281,8 @@ static char *_get_default_qos(uint32_t user_id, char *account, char *partition) static int _job_rec_field(const struct job_record *job_ptr, const char *name) { + int i; + if (job_ptr == NULL) { error("_job_rec_field: job_ptr is NULL"); lua_pushnil (L); @@ -339,6 +341,23 @@ static int _job_rec_field(const struct job_record *job_ptr, } } else if (!strcmp(name, "req_switch")) { lua_pushnumber (L, job_ptr->req_switch); + } else if (!strcmp(name, "spank_job_env")) { + if ((job_ptr->spank_job_env_size == 0) || + (job_ptr->spank_job_env == NULL)) { + lua_pushnil (L); + } else { + lua_newtable(L); + for (i = 0; i < job_ptr->spank_job_env_size; i++) { + if (job_ptr->spank_job_env[i] != NULL) { + lua_pushnumber (L, i); + lua_pushstring (L, + job_ptr->spank_job_env[i]); + lua_settable (L, -3); + } + } + } + } else if (!strcmp(name, "spank_job_env_size")) { + lua_pushnumber (L, job_ptr->spank_job_env_size); } else if (!strcmp(name, "time_limit")) { lua_pushnumber (L, job_ptr->time_limit); } else if (!strcmp(name, "time_min")) { @@ -623,6 +642,8 @@ static void _push_job_env(struct job_descriptor *job_desc) static int _get_job_req_field(const struct job_descriptor *job_desc, const char *name) { + int i; + if (job_desc == NULL) { error("%s: job_desc is NULL", __func__); lua_pushnil (L); @@ -734,6 +755,23 @@ static int _get_job_req_field(const struct job_descriptor *job_desc, lua_pushnumber (L, job_desc->sockets_per_board); } else if (!strcmp(name, "sockets_per_node")) { lua_pushnumber (L, job_desc->sockets_per_node); + } else if (!strcmp(name, "spank_job_env")) { + if ((job_desc->spank_job_env_size == 0) || + (job_desc->spank_job_env == NULL)) { + lua_pushnil (L); + } else { + lua_newtable(L); + for (i = 0; i < job_desc->spank_job_env_size; i++) { + if (job_desc->spank_job_env[i] != NULL) { + lua_pushnumber (L, i); + lua_pushstring (L, + job_desc->spank_job_env[i]); + lua_settable (L, -3); + } + } + } + } else if (!strcmp(name, "spank_job_env_size")) { + lua_pushnumber (L, job_desc->spank_job_env_size); } else if (!strcmp(name, "std_err")) { lua_pushstring (L, job_desc->std_err); } else if (!strcmp(name, "std_in")) {