From ece587801185df558956de30c3f08f3ec361640b Mon Sep 17 00:00:00 2001 From: Doug Parisek <doug.parisek@atos.net> Date: Mon, 24 Oct 2016 14:05:13 -0600 Subject: [PATCH] Add env variables to the kill_job_msg_t to add pack jobs env vars to the pro/epilog of jobs. --- src/common/slurm_protocol_defs.h | 3 +++ src/common/slurm_protocol_pack.c | 33 ++++++++++++++++++++++++++++++-- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/common/slurm_protocol_defs.h b/src/common/slurm_protocol_defs.h index e507fba8d43..108b3b1a59d 100644 --- a/src/common/slurm_protocol_defs.h +++ b/src/common/slurm_protocol_defs.h @@ -909,6 +909,9 @@ typedef struct kill_job_msg { dynamic_plugin_data_t *select_jobinfo; /* opaque data type */ char **spank_job_env; uint32_t spank_job_env_size; + char **pelog_env; /* jobpack environment variables for job + prolog/epilog */ + uint32_t pelog_env_size;/* element count in pelog_env */ } kill_job_msg_t; typedef struct signal_job_msg { diff --git a/src/common/slurm_protocol_pack.c b/src/common/slurm_protocol_pack.c index c7a8f2b3e94..e9741b62af3 100644 --- a/src/common/slurm_protocol_pack.c +++ b/src/common/slurm_protocol_pack.c @@ -5038,7 +5038,21 @@ _pack_kill_job_msg(kill_job_msg_t * msg, Buf buffer, uint16_t protocol_version) { xassert(msg != NULL); - if (protocol_version >= SLURM_MIN_PROTOCOL_VERSION) { + if (protocol_version >= SLURM_17_02_PROTOCOL_VERSION) { + pack32(msg->job_id, buffer); + pack32(msg->step_id, buffer); + pack32(msg->job_state, buffer); + pack32(msg->job_uid, buffer); + pack_time(msg->time, buffer); + pack_time(msg->start_time, buffer); + packstr(msg->nodes, buffer); + select_g_select_jobinfo_pack(msg->select_jobinfo, buffer, + protocol_version); + packstr_array(msg->spank_job_env, msg->spank_job_env_size, + buffer); + packstr_array(msg->pelog_env, msg->pelog_env_size, + buffer); + } else if (protocol_version >= SLURM_MIN_PROTOCOL_VERSION) { pack32(msg->job_id, buffer); pack32(msg->step_id, buffer); pack32(msg->job_state, buffer); @@ -5068,7 +5082,22 @@ _unpack_kill_job_msg(kill_job_msg_t ** msg, Buf buffer, tmp_ptr = xmalloc(sizeof(kill_job_msg_t)); *msg = tmp_ptr; - if (protocol_version >= SLURM_MIN_PROTOCOL_VERSION) { + if (protocol_version >= SLURM_17_02_PROTOCOL_VERSION) { + safe_unpack32(&(tmp_ptr->job_id), buffer); + safe_unpack32(&(tmp_ptr->step_id), buffer); + safe_unpack32(&(tmp_ptr->job_state), buffer); + safe_unpack32(&(tmp_ptr->job_uid), buffer); + safe_unpack_time(&(tmp_ptr->time), buffer); + safe_unpack_time(&(tmp_ptr->start_time), buffer); + safe_unpackstr_xmalloc(&(tmp_ptr->nodes), &uint32_tmp, buffer); + if (select_g_select_jobinfo_unpack(&tmp_ptr->select_jobinfo, + buffer, protocol_version)) + goto unpack_error; + safe_unpackstr_array(&(tmp_ptr->spank_job_env), + &tmp_ptr->spank_job_env_size, buffer); + safe_unpackstr_array(&(tmp_ptr->pelog_env), + &tmp_ptr->pelog_env_size, buffer); + } else if (protocol_version >= SLURM_MIN_PROTOCOL_VERSION) { safe_unpack32(&(tmp_ptr->job_id), buffer); safe_unpack32(&(tmp_ptr->step_id), buffer); safe_unpack32(&(tmp_ptr->job_state), buffer); -- GitLab