From a8227df9921651b5ea4bae34a9421024e42892bd Mon Sep 17 00:00:00 2001 From: Moe Jette <jette1@llnl.gov> Date: Tue, 14 Jan 2003 22:23:06 +0000 Subject: [PATCH] New API added to map local pid into slurm job id. New RPC defined to map local pid into slurm job id. --- src/common/slurm_protocol_api.h | 8 --- src/common/slurm_protocol_defs.c | 10 ++++ src/common/slurm_protocol_defs.h | 13 +++++ src/common/slurm_protocol_pack.c | 83 ++++++++++++++++++++++++++++++++ 4 files changed, 106 insertions(+), 8 deletions(-) diff --git a/src/common/slurm_protocol_api.h b/src/common/slurm_protocol_api.h index 879a76b8364..056ecee703e 100644 --- a/src/common/slurm_protocol_api.h +++ b/src/common/slurm_protocol_api.h @@ -404,14 +404,6 @@ int slurm_send_recv_controller_msg(slurm_msg_t * request_msg, int slurm_send_recv_node_msg(slurm_msg_t * request_msg, slurm_msg_t * response_msg); -/* slurm_send_only_controller_msg - * opens a connection to the controller, sends the controller a - * message then, closes the connection - * IN request_msg - slurm_msg request - * RET int - return code - */ -int slurm_send_only_node_msg(slurm_msg_t * request_msg); - /* slurm_send_only_controller_msg * opens a connection to node, sends the node a message then, * closes the connection diff --git a/src/common/slurm_protocol_defs.c b/src/common/slurm_protocol_defs.c index a8e6e05526f..e56550b3f57 100644 --- a/src/common/slurm_protocol_defs.c +++ b/src/common/slurm_protocol_defs.c @@ -66,6 +66,16 @@ void slurm_free_return_code_msg(return_code_msg_t * msg) xfree(msg); } +void slurm_free_job_id_request_msg(job_id_request_msg_t * msg) +{ + xfree(msg); +} + +void slurm_free_job_id_response_msg(job_id_response_msg_t * msg) +{ + xfree(msg); +} + void slurm_free_job_desc_msg(job_desc_msg_t * msg) { int i; diff --git a/src/common/slurm_protocol_defs.h b/src/common/slurm_protocol_defs.h index 9399356ee2f..286c0012c1b 100644 --- a/src/common/slurm_protocol_defs.h +++ b/src/common/slurm_protocol_defs.h @@ -93,6 +93,8 @@ typedef enum { RESPONSE_PARTITION_INFO, REQUEST_ACCTING_INFO, RESPONSE_ACCOUNTING_INFO, + REQUEST_JOB_ID, + RESPONSE_JOB_ID, REQUEST_UPDATE_JOB = 3001, REQUEST_UPDATE_NODE, @@ -329,6 +331,14 @@ typedef struct batch_job_launch_msg { * name=value pairs, one per line */ } batch_job_launch_msg_t; +typedef struct job_id_request_msg { + uint32_t job_pid; /* local process_id of a job */ +} job_id_request_msg_t; + +typedef struct job_id_response_msg { + uint32_t job_id; /* slurm job_id */ +} job_id_response_msg_t; + /*****************************************************************************\ * Slurm API Message Types \*****************************************************************************/ @@ -370,6 +380,9 @@ slurm_free_node_registration_status_msg(slurm_node_registration_status_msg_t * void inline slurm_free_job_info(job_info_t * job); void inline slurm_free_job_info_members(job_info_t * job); +void inline slurm_free_job_id_request_msg(job_id_request_msg_t * msg); +void inline slurm_free_job_id_response_msg(job_id_response_msg_t * msg); + void inline slurm_free_job_launch_msg(batch_job_launch_msg_t * msg); void inline slurm_free_update_node_msg(update_node_msg_t * msg); diff --git a/src/common/slurm_protocol_pack.c b/src/common/slurm_protocol_pack.c index ba9f18a8609..9a7453ee546 100644 --- a/src/common/slurm_protocol_pack.c +++ b/src/common/slurm_protocol_pack.c @@ -191,6 +191,13 @@ static void _pack_slurm_addr_array(slurm_addr * slurm_address, static int _unpack_slurm_addr_array(slurm_addr ** slurm_address, uint16_t * size_val, Buf buffer); +static void _pack_job_id_request_msg(job_id_request_msg_t * msg, Buf buffer); +static int _unpack_job_id_request_msg(job_id_request_msg_t ** msg, Buf buffer); + +static void _pack_job_id_response_msg(job_id_response_msg_t * msg, Buf buffer); +static int _unpack_job_id_response_msg(job_id_response_msg_t ** msg, + Buf buffer); + static void _pack_buffer_msg(slurm_msg_t * msg, Buf buffer); /* pack_header @@ -464,6 +471,16 @@ pack_msg(slurm_msg_t const *msg, Buf buffer) (job_step_create_request_msg_t *) msg->data, buffer); break; + case REQUEST_JOB_ID: + _pack_job_id_request_msg( + (job_id_request_msg_t *)msg->data, + buffer); + break; + case RESPONSE_JOB_ID: + _pack_job_id_response_msg( + (job_id_response_msg_t *)msg->data, + buffer); + break; default: debug("No pack method for msg type %i", msg->msg_type); return EINVAL; @@ -664,6 +681,16 @@ unpack_msg(slurm_msg_t * msg, Buf buffer) (job_step_create_request_msg_t **) & msg->data, buffer); break; + case REQUEST_JOB_ID: + rc = _unpack_job_id_request_msg( + (job_id_request_msg_t **) & msg->data, + buffer); + break; + case RESPONSE_JOB_ID: + rc = _unpack_job_id_response_msg( + (job_id_response_msg_t **) & msg->data, + buffer); + break; default: debug("No unpack method for msg type %i", msg->msg_type); return EINVAL; @@ -2337,6 +2364,62 @@ _unpack_batch_job_launch_msg(batch_job_launch_msg_t ** msg, Buf buffer) return SLURM_ERROR; } +static void +_pack_job_id_request_msg(job_id_request_msg_t * msg, Buf buffer) +{ + assert(msg != NULL); + + pack32(msg->job_pid, buffer); +} + +static int +_unpack_job_id_request_msg(job_id_request_msg_t ** msg, Buf buffer) +{ + job_id_request_msg_t *tmp_ptr; + + /* alloc memory for structure */ + assert(msg != NULL); + tmp_ptr = xmalloc(sizeof(job_id_request_msg_t)); + *msg = tmp_ptr; + + /* load the data values */ + safe_unpack32(&tmp_ptr->job_pid, buffer); + return SLURM_SUCCESS; + + unpack_error: + FREE_NULL(tmp_ptr); + *msg = NULL; + return SLURM_ERROR; +} + +static void +_pack_job_id_response_msg(job_id_response_msg_t * msg, Buf buffer) +{ + assert(msg != NULL); + + pack32(msg->job_id, buffer); +} + +static int +_unpack_job_id_response_msg(job_id_response_msg_t ** msg, Buf buffer) +{ + job_id_response_msg_t *tmp_ptr; + + /* alloc memory for structure */ + assert(msg != NULL); + tmp_ptr = xmalloc(sizeof(job_id_response_msg_t)); + *msg = tmp_ptr; + + /* load the data values */ + safe_unpack32(&tmp_ptr->job_id, buffer); + return SLURM_SUCCESS; + + unpack_error: + FREE_NULL(tmp_ptr); + *msg = NULL; + return SLURM_ERROR; +} + /* template void pack_ ( * msg , Buf buffer ) { -- GitLab