From 3932aae593962badd1ee6ef4fd4e2b12d1dee77d Mon Sep 17 00:00:00 2001
From: Moe Jette <jette1@llnl.gov>
Date: Wed, 9 Mar 2005 11:01:39 +0000
Subject: [PATCH] Add switch state to job epilog.

---
 src/common/slurm_protocol_defs.c | 1 +
 src/common/slurm_protocol_defs.h | 1 +
 src/common/slurm_protocol_pack.c | 7 +++++++
 src/slurmd/req.c                 | 4 ++++
 4 files changed, 13 insertions(+)

diff --git a/src/common/slurm_protocol_defs.c b/src/common/slurm_protocol_defs.c
index 4824438a326..7559ced07e3 100644
--- a/src/common/slurm_protocol_defs.c
+++ b/src/common/slurm_protocol_defs.c
@@ -378,6 +378,7 @@ void slurm_free_epilog_complete_msg(epilog_complete_msg_t * msg)
 {
 	if (msg) {
 		xfree(msg->node_name);
+		switch_g_free_node_info(&msg->switch_nodeinfo);
 		xfree(msg);
 	}
 }
diff --git a/src/common/slurm_protocol_defs.h b/src/common/slurm_protocol_defs.h
index 7cae18d1a95..f5eb91d6c8e 100644
--- a/src/common/slurm_protocol_defs.h
+++ b/src/common/slurm_protocol_defs.h
@@ -233,6 +233,7 @@ typedef struct epilog_complete_msg {
 	uint32_t job_id;
 	uint32_t return_code;
 	char    *node_name;
+	switch_node_info_t switch_nodeinfo;
 } epilog_complete_msg_t;
 
 typedef struct shutdown_msg {
diff --git a/src/common/slurm_protocol_pack.c b/src/common/slurm_protocol_pack.c
index ffac52bb9bc..a1d25e04667 100644
--- a/src/common/slurm_protocol_pack.c
+++ b/src/common/slurm_protocol_pack.c
@@ -1303,6 +1303,7 @@ _pack_epilog_comp_msg(epilog_complete_msg_t * msg, Buf buffer)
 	pack32(msg->job_id, buffer);
 	pack32(msg->return_code, buffer);
 	packstr(msg->node_name, buffer);
+	switch_g_pack_node_info(msg->switch_nodeinfo, buffer);
 }
 
 static int  
@@ -1319,9 +1320,15 @@ _unpack_epilog_comp_msg(epilog_complete_msg_t ** msg, Buf buffer)
 	safe_unpack32(&(tmp_ptr->job_id), buffer);
 	safe_unpack32(&(tmp_ptr->return_code), buffer);
 	safe_unpackstr_xmalloc(& (tmp_ptr->node_name), &uint16_tmp, buffer);
+	if (switch_g_alloc_node_info(&tmp_ptr->switch_nodeinfo)
+	||  switch_g_unpack_node_info(tmp_ptr->switch_nodeinfo, buffer))
+		goto unpack_error;
+
 	return SLURM_SUCCESS;
 
       unpack_error:
+	xfree(tmp_ptr->node_name);
+	switch_g_free_node_info(&tmp_ptr->switch_nodeinfo);
 	xfree(tmp_ptr);
 	*msg = NULL;
 	return SLURM_ERROR;
diff --git a/src/slurmd/req.c b/src/slurmd/req.c
index f8c82f83e7e..ae5c71f30d6 100644
--- a/src/slurmd/req.c
+++ b/src/slurmd/req.c
@@ -1015,6 +1015,10 @@ _epilog_complete(uint32_t jobid, int rc)
 	req.job_id      = jobid;
 	req.return_code = rc;
 	req.node_name   = conf->node_name;
+	if (switch_g_alloc_node_info(&req.switch_nodeinfo))
+		error("switch_g_alloc_node_info: %m");
+	if (switch_g_build_node_info(req.switch_nodeinfo))
+		error("switch_g_build_node_info: %m");
 
 	msg.msg_type    = MESSAGE_EPILOG_COMPLETE;
 	msg.data        = &req;
-- 
GitLab