From 3296d2ec8dc61adaa045759c1926f3064e0a29bc Mon Sep 17 00:00:00 2001 From: tewk <tewk@unknown> Date: Tue, 18 Jun 2002 20:52:28 +0000 Subject: [PATCH] Added immediate flag to allocate to signal immediate allocation requested --- src/api/allocate.c | 84 ++++++++++++++++++++++++++-------------------- src/api/slurm.h | 2 +- 2 files changed, 48 insertions(+), 38 deletions(-) diff --git a/src/api/allocate.c b/src/api/allocate.c index c9f59bb7d3b..5f4b38ad23c 100644 --- a/src/api/allocate.c +++ b/src/api/allocate.c @@ -19,45 +19,55 @@ /* slurm_submit_job - load the supplied node information buffer if changed */ -int -slurm_allocate_resources (job_desc_msg_t * job_desc_msg ) + int +slurm_allocate_resources (job_desc_msg_t * job_desc_msg , job_allocation_response_msg_t * job_alloc_resp_msg, int immediate ) { - int msg_size ; - int rc ; - slurm_fd sockfd ; - slurm_msg_t request_msg ; - slurm_msg_t response_msg ; - return_code_msg_t * slurm_rc_msg ; - - /* init message connection for message communication with controller */ - if ( ( sockfd = slurm_open_controller_conn ( ) ) == SLURM_SOCKET_ERROR ) - return SLURM_SOCKET_ERROR ; - - - /* send request message */ - request_msg . msg_type = REQUEST_RESOURCE_ALLOCATION ; - request_msg . data = job_desc_msg ; - if ( ( rc = slurm_send_controller_msg ( sockfd , & request_msg ) ) == SLURM_SOCKET_ERROR ) - return SLURM_SOCKET_ERROR ; - - /* receive message */ - if ( ( msg_size = slurm_receive_msg ( sockfd , & response_msg ) ) == SLURM_SOCKET_ERROR ) - return SLURM_SOCKET_ERROR ; - /* shutdown message connection */ - if ( ( rc = slurm_shutdown_msg_conn ( sockfd ) ) == SLURM_SOCKET_ERROR ) - return SLURM_SOCKET_ERROR ; - - switch ( response_msg . msg_type ) - { - case RESPONSE_SLURM_RC: - slurm_rc_msg = ( return_code_msg_t * ) response_msg . data ; + int msg_size ; + int rc ; + slurm_fd sockfd ; + slurm_msg_t request_msg ; + slurm_msg_t response_msg ; + return_code_msg_t * slurm_rc_msg ; + + /* init message connection for message communication with controller */ + if ( ( sockfd = slurm_open_controller_conn ( ) ) == SLURM_SOCKET_ERROR ) + return SLURM_SOCKET_ERROR ; + + + /* send request message */ + if ( immediate ) + { + request_msg . msg_type = REQUEST_IMMEDIATE_RESOURCE_ALLOCATION ; + request_msg . data = job_desc_msg ; + if ( ( rc = slurm_send_controller_msg ( sockfd , & request_msg ) ) == SLURM_SOCKET_ERROR ) + return SLURM_SOCKET_ERROR ; + } + else + { + request_msg . msg_type = REQUEST_RESOURCE_ALLOCATION ; + request_msg . data = job_desc_msg ; + if ( ( rc = slurm_send_controller_msg ( sockfd , & request_msg ) ) == SLURM_SOCKET_ERROR ) + return SLURM_SOCKET_ERROR ; + } + + /* receive message */ + if ( ( msg_size = slurm_receive_msg ( sockfd , & response_msg ) ) == SLURM_SOCKET_ERROR ) + return SLURM_SOCKET_ERROR ; + /* shutdown message connection */ + if ( ( rc = slurm_shutdown_msg_conn ( sockfd ) ) == SLURM_SOCKET_ERROR ) + return SLURM_SOCKET_ERROR ; + + switch ( response_msg . msg_type ) + { + case RESPONSE_SLURM_RC: + slurm_rc_msg = ( return_code_msg_t * ) response_msg . data ; return (int) slurm_rc_msg->return_code; - break ; - default: - return SLURM_UNEXPECTED_MSG_ERROR ; - break ; - } + break ; + default: + return SLURM_UNEXPECTED_MSG_ERROR ; + break ; + } - return SLURM_SUCCESS ; + return SLURM_SUCCESS ; } diff --git a/src/api/slurm.h b/src/api/slurm.h index 4c5e364f8c7..c5f592e7765 100644 --- a/src/api/slurm.h +++ b/src/api/slurm.h @@ -75,7 +75,7 @@ enum node_states { * TotalProcs=<count> * NOTE: the calling function must free the allocated storage at node_list[0] */ -extern int slurm_allocate_resources ( job_desc_msg_t * ); +extern int slurm_allocate_resources (job_desc_msg_t * job_desc_msg , job_allocation_response_msg_t * job_alloc_resp_msg, int immediate ) ; /* * slurm_cancel - cancel the specified job -- GitLab