Skip to content
Snippets Groups Projects
Commit 0dcf1a0c authored by Moe Jette's avatar Moe Jette
Browse files

Define slurm_job_step_create API.

parent 59fc8690
No related branches found
No related tags found
No related merge requests found
/*****************************************************************************\
* allocate.c - allocate nodes for a job with supplied contraints
* allocate.c - allocate nodes for a job or step with supplied contraints
*****************************************************************************
* Copyright (C) 2002 The Regents of the University of California.
* Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
......@@ -87,6 +87,7 @@ slurm_allocate_resources (job_desc_msg_t * job_desc_msg ,
slurm_seterrno ( rc );
return SLURM_PROTOCOL_ERROR;
}
*slurm_alloc_msg = NULL;
break ;
case RESPONSE_RESOURCE_ALLOCATION:
case RESPONSE_IMMEDIATE_RESOURCE_ALLOCATION:
......@@ -151,6 +152,7 @@ int slurm_job_will_run (job_desc_msg_t * job_desc_msg , resource_allocation_resp
slurm_seterrno ( rc );
return SLURM_PROTOCOL_ERROR;
}
*slurm_alloc_msg = NULL;
break ;
case RESPONSE_JOB_WILL_RUN:
*slurm_alloc_msg = ( resource_allocation_response_msg_t * ) response_msg . data ;
......@@ -215,6 +217,7 @@ slurm_allocate_resources_and_run (job_desc_msg_t * job_desc_msg ,
slurm_seterrno ( rc );
return SLURM_PROTOCOL_ERROR;
}
*slurm_alloc_msg = NULL;
break ;
case RESPONSE_ALLOCATION_AND_RUN_JOB_STEP:
/* Calling method is responsible to free this memory */
......@@ -230,3 +233,68 @@ slurm_allocate_resources_and_run (job_desc_msg_t * job_desc_msg ,
return SLURM_PROTOCOL_SUCCESS ;
}
/* slurm_job_step_create - create a job step for a given job id */
int
slurm_job_step_create (job_step_create_request_msg_t * slurm_step_alloc_req_msg,
job_step_create_response_msg_t ** slurm_step_alloc_resp_msg )
{
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 ) {
slurm_seterrno ( SLURM_COMMUNICATIONS_CONNECTION_ERROR );
return SLURM_SOCKET_ERROR ;
}
/* send request message */
request_msg . msg_type = REQUEST_JOB_STEP_CREATE ;
request_msg . data = slurm_step_alloc_req_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 */
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_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;
*slurm_step_alloc_resp_msg = NULL;
}
break ;
case RESPONSE_JOB_STEP_CREATE:
/* Calling method is responsible to free this memory */
*slurm_step_alloc_resp_msg = ( job_step_create_response_msg_t * ) response_msg . data ;
return SLURM_PROTOCOL_SUCCESS;
break ;
default:
slurm_seterrno ( SLURM_UNEXPECTED_MSG_ERROR );
return SLURM_PROTOCOL_ERROR;
break ;
}
return SLURM_PROTOCOL_SUCCESS ;
}
......@@ -114,6 +114,10 @@ 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 );
/* slurm_job_step_create - create a job step for a given job id */
extern int slurm_job_step_create (job_step_create_request_msg_t * slurm_step_alloc_req_msg,
job_step_create_response_msg_t ** slurm_step_alloc_resp_msg );
extern int slurm_get_job_steps (time_t update_time, uint32_t job_id, uint32_t step_id, job_step_info_response_msg_t **step_response_pptr);
extern void slurm_print_job_step_info_msg ( FILE* out, job_step_info_response_msg_t * job_step_info_msg_ptr );
extern void slurm_print_job_step_info ( FILE* out, job_step_info_t * job_step_ptr );
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment