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