From 07e29febedfccf040438311d87cf3ef6df7bf7c1 Mon Sep 17 00:00:00 2001 From: jce <jce@unknown> Date: Tue, 30 Jul 2002 23:14:10 +0000 Subject: [PATCH] Added a new slurm api function to get a job_step_info --- src/api/Makefile.am | 1 + src/api/job_info.c | 34 ++++++------- src/api/job_step_info.c | 104 ++++++++++++++++++++++++++++++++++++++++ src/api/slurm.h | 3 +- 4 files changed, 124 insertions(+), 18 deletions(-) create mode 100644 src/api/job_step_info.c diff --git a/src/api/Makefile.am b/src/api/Makefile.am index 10211458668..739c16e52d1 100644 --- a/src/api/Makefile.am +++ b/src/api/Makefile.am @@ -28,6 +28,7 @@ libslurm_la_SOURCES = \ complete.c \ config_info.c \ job_info.c \ + job_step_info.c \ node_info.c \ partition_info.c \ submit.c \ diff --git a/src/api/job_info.c b/src/api/job_info.c index 7c0a52d5749..985c4dfcf61 100644 --- a/src/api/job_info.c +++ b/src/api/job_info.c @@ -51,7 +51,7 @@ slurm_print_job_info_msg ( FILE* out, job_info_msg_t * job_info_msg_ptr ) } } -/* slurm_print_job_table - output information about a specific Slurm job */ +/* slurm_print_job_info - output information about a specific Slurm job */ void slurm_print_job_info ( FILE* out, job_info_t * job_ptr ) { @@ -96,36 +96,36 @@ slurm_print_job_info ( FILE* out, job_info_t * job_ptr ) int slurm_load_jobs (time_t update_time, job_info_msg_t **job_info_msg_pptr) { - int msg_size ; - int rc ; - slurm_fd sockfd ; - slurm_msg_t request_msg ; - slurm_msg_t response_msg ; - last_update_msg_t last_time_msg ; + int msg_size ; + int rc ; + slurm_fd sockfd ; + slurm_msg_t request_msg ; + slurm_msg_t response_msg ; + job_info_request_msg_t last_time_msg ; return_code_msg_t * slurm_rc_msg ; - /* init message connection for message communication with controller */ + /* init message connection for message communication with controller */ if ( ( sockfd = slurm_open_controller_conn ( ) ) == SLURM_SOCKET_ERROR ) { slurm_seterrno ( SLURM_COMMUNICATIONS_CONNECTION_ERROR ); return SLURM_SOCKET_ERROR ; } - /* send request message */ - last_time_msg . last_update = update_time ; - request_msg . msg_type = REQUEST_JOB_INFO ; - request_msg . data = &last_time_msg ; + /* send request message */ + last_time_msg . last_update = update_time ; + request_msg . msg_type = REQUEST_JOB_INFO ; + request_msg . data = &last_time_msg ; if ( ( rc = slurm_send_controller_msg ( sockfd , & request_msg ) ) == SLURM_SOCKET_ERROR ) { slurm_seterrno ( SLURM_COMMUNICATIONS_SEND_ERROR ); return SLURM_SOCKET_ERROR ; } - /* receive message */ + /* receive message */ if ( ( msg_size = slurm_receive_msg ( sockfd , & response_msg ) ) == SLURM_SOCKET_ERROR ) { slurm_seterrno ( SLURM_COMMUNICATIONS_RECEIVE_ERROR ); return SLURM_SOCKET_ERROR ; } - /* shutdown message connection */ + /* shutdown message connection */ if ( ( rc = slurm_shutdown_msg_conn ( sockfd ) ) == SLURM_SOCKET_ERROR ) { slurm_seterrno ( SLURM_COMMUNICATIONS_SHUTDOWN_ERROR ); return SLURM_SOCKET_ERROR ; @@ -136,8 +136,8 @@ slurm_load_jobs (time_t update_time, job_info_msg_t **job_info_msg_pptr) switch ( response_msg . msg_type ) { case RESPONSE_JOB_INFO: - *job_info_msg_pptr = ( job_info_msg_t * ) response_msg . data ; - return SLURM_PROTOCOL_SUCCESS ; + *job_info_msg_pptr = ( job_info_msg_t * ) response_msg . data ; + return SLURM_PROTOCOL_SUCCESS ; break ; case RESPONSE_SLURM_RC: slurm_rc_msg = ( return_code_msg_t * ) response_msg . data ; @@ -154,6 +154,6 @@ slurm_load_jobs (time_t update_time, job_info_msg_t **job_info_msg_pptr) break ; } - return SLURM_PROTOCOL_SUCCESS ; + return SLURM_PROTOCOL_SUCCESS ; } diff --git a/src/api/job_step_info.c b/src/api/job_step_info.c new file mode 100644 index 00000000000..b52f7942b52 --- /dev/null +++ b/src/api/job_step_info.c @@ -0,0 +1,104 @@ +/*****************************************************************************\ + * job_info.c - get/print the job state information of slurm + ***************************************************************************** + * Copyright (C) 2002 The Regents of the University of California. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Moe Jette <jette1@llnl.gov> et. al. + * UCRL-CODE-2002-040. + * + * This file is part of SLURM, a resource management program. + * For details, see <http://www.llnl.gov/linux/slurm/>. + * + * SLURM is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * SLURM is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along + * with ConMan; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. +\*****************************************************************************/ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> + +#include <src/api/slurm.h> +#include <src/common/slurm_protocol_api.h> + +/* slurm_load_job_steps - issue RPC to get Slurm job_step state information */ +int +slurm_get_job_steps ( uint32_t job_id, int16_t step_id, job_step_info_response_msg_t **step_response_pptr) +{ + int msg_size ; + int rc ; + slurm_fd sockfd ; + slurm_msg_t request_msg ; + slurm_msg_t response_msg ; + + job_step_info_request_msg_t step_request; + return_code_msg_t * slurm_rc_msg ; + + /* init message connection for message communication with controller */ + if ( ( sockfd = slurm_open_controller_conn ( ) ) == SLURM_SOCKET_ERROR ) { + slurm_seterrno ( SLURM_COMMUNICATIONS_CONNECTION_ERROR ); + return SLURM_SOCKET_ERROR ; + } + + /* send request message */ + step_request . job_id = job_id ; + step_request . job_step_id = step_id ; + request_msg . msg_type = REQUEST_JOB_STEP_INFO ; + request_msg . data = &step_request; + if ( ( rc = slurm_send_controller_msg ( sockfd , & request_msg ) ) == SLURM_SOCKET_ERROR ) { + slurm_seterrno ( SLURM_COMMUNICATIONS_SEND_ERROR ); + return SLURM_SOCKET_ERROR ; + } + + /* receive message */ + if ( ( msg_size = slurm_receive_msg ( sockfd , & response_msg ) ) == SLURM_SOCKET_ERROR ) { + slurm_seterrno ( SLURM_COMMUNICATIONS_RECEIVE_ERROR ); + return SLURM_SOCKET_ERROR ; + } + + /* shutdown message connection */ + if ( ( rc = slurm_shutdown_msg_conn ( sockfd ) ) == SLURM_SOCKET_ERROR ) { + slurm_seterrno ( SLURM_COMMUNICATIONS_SHUTDOWN_ERROR ); + return SLURM_SOCKET_ERROR ; + } + if ( msg_size ) + return msg_size; + + switch ( response_msg . msg_type ) + { + case RESPONSE_JOB_STEP_INFO: + *step_response_pptr = ( job_step_info_response_msg_t * ) response_msg . data ; + return SLURM_PROTOCOL_SUCCESS ; + break ; + case RESPONSE_SLURM_RC: + slurm_rc_msg = ( return_code_msg_t * ) response_msg . data ; + rc = slurm_rc_msg->return_code; + slurm_free_return_code_msg ( slurm_rc_msg ); + if (rc) { + slurm_seterrno ( rc ); + return SLURM_PROTOCOL_ERROR; + } + break ; + default: + slurm_seterrno ( SLURM_UNEXPECTED_MSG_ERROR ); + return SLURM_PROTOCOL_ERROR; + break ; + } + + return SLURM_PROTOCOL_SUCCESS ; +} + diff --git a/src/api/slurm.h b/src/api/slurm.h index 2e4b47bbeeb..77d97115d7b 100644 --- a/src/api/slurm.h +++ b/src/api/slurm.h @@ -57,7 +57,7 @@ extern void slurm_free_node_info_msg (node_info_msg_t * node_buffer_ptr); */ extern void slurm_print_job_info_msg ( FILE* , job_info_msg_t * job_info_msg_ptr ) ; -/* slurm_print_job_table - prints the job table object (if allocated) */ +/* slurm_print_job_info - prints the job table object (if allocated) */ extern void slurm_print_job_info ( FILE*, job_info_t * job_ptr ); /* @@ -117,6 +117,7 @@ extern int slurm_load_partitions (time_t update_time, partition_info_msg_t **par extern int slurm_submit_batch_job (job_desc_msg_t * job_desc_msg, submit_response_msg_t ** slurm_alloc_msg ); +extern int slurm_get_job_steps ( uint32_t job_id, int16_t step_id, job_step_info_response_msg_t **step_response_pptr); /* * slurm_will_run - determine if a job would execute immediately * if submitted. -- GitLab