Skip to content
Snippets Groups Projects
Commit d720e745 authored by tewk's avatar tewk
Browse files

starting to move update_config and cancel to new comm layer

a few cleanups in job_info and build_info
parent d27a1031
No related branches found
No related tags found
No related merge requests found
...@@ -14,14 +14,9 @@ ...@@ -14,14 +14,9 @@
#include <errno.h> #include <errno.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h>
#include <syslog.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include "slurmlib.h" #include <src/api/slurm.h>
#include <src/common/slurm.h>
#if DEBUG_MODULE #if DEBUG_MODULE
/* main is used here for testing purposes only */ /* main is used here for testing purposes only */
...@@ -46,79 +41,44 @@ main (int argc, char *argv[]) ...@@ -46,79 +41,44 @@ main (int argc, char *argv[])
} }
#endif #endif
slurm_cancel_job ( uint32_t job_id )
/*
* slurm_cancel - cancel the specified job
* input: job_id - the job_id to be cancelled
* output: returns 0 if no error, EINVAL if the request is invalid,
* EAGAIN if the request can not be satisfied at present
*/
int
slurm_cancel (uint32_t job_id)
{ {
int buffer_offset, buffer_size, in_size; int msg_size ;
char *request_msg, *buffer, id_str[20]; int rc ;
int sockfd; slurm_fd sockfd ;
struct sockaddr_in serv_addr; slurm_msg_t request_msg ;
slurm_msg_t response_msg ;
job_id_msg_t job_id_msg ;
return_code_msg_t * rc_msg ;
sprintf (id_str, "%u", job_id); /* init message connection for message communication with controller */
request_msg = malloc (strlen (id_str) + 11); if ( ( sockfd = slurm_open_controller_conn ( SLURM_PORT ) ) == SLURM_SOCKET_ERROR )
if (request_msg == NULL) return SLURM_SOCKET_ERROR ;
return EAGAIN;
strcpy (request_msg, "JobCancel ");
strcat (request_msg, id_str);
if ((sockfd = socket (AF_INET, SOCK_STREAM, 0)) < 0) /* send request message */
return EINVAL; job_id_msg . job_id = job_id ;
serv_addr.sin_family = PF_INET; request_msg . msg_type = REQUEST_JOB_CANCEL ;
serv_addr.sin_addr.s_addr = inet_addr (SLURMCTLD_HOST); request_msg . data = &job_id_msg ;
serv_addr.sin_port = htons (SLURMCTLD_PORT); if ( ( rc = slurm_send_controller_msg ( sockfd , & request_msg ) ) == SLURM_SOCKET_ERROR )
if (connect return SLURM_SOCKET_ERROR ;
(sockfd, (struct sockaddr *) &serv_addr,
sizeof (serv_addr)) < 0) {
close (sockfd);
return EAGAIN;
}
if (send (sockfd, request_msg, strlen (request_msg) + 1, 0) <
strlen (request_msg)) {
close (sockfd);
return EAGAIN;
}
buffer = NULL; /* receive message */
buffer_offset = 0; if ( ( msg_size = slurm_receive_msg ( sockfd , & response_msg ) ) == SLURM_SOCKET_ERROR )
buffer_size = 8 * 1024; return SLURM_SOCKET_ERROR ;
while (1) { /* shutdown message connection */
buffer = realloc (buffer, buffer_size); if ( ( rc = slurm_shutdown_msg_conn ( sockfd ) ) == SLURM_SOCKET_ERROR )
if (buffer == NULL) { return SLURM_SOCKET_ERROR ;
close (sockfd);
return EAGAIN;
}
in_size =
recv (sockfd, &buffer[buffer_offset],
(buffer_size - buffer_offset), 0);
if (in_size <= 0) { /* end of input */
in_size = 0;
break;
}
buffer_offset += in_size;
buffer_size += in_size;
}
close (sockfd);
buffer_size = buffer_offset + in_size;
buffer = realloc (buffer, buffer_size);
if (buffer == NULL)
return EAGAIN;
if (strcmp (buffer, "EAGAIN") == 0) { switch ( response_msg . msg_type )
free (buffer); {
return EAGAIN; case RESPONSE_SLURM_RC:
} rc_msg = ( return_code_msg_t * ) response_msg . data ;
if (strcmp (buffer, "EINVAL") == 0) { return rc_msg -> return_code ;
free (buffer); break ;
return EINVAL; default:
} return SLURM_UNEXPECTED_MSG_ERROR ;
printf ("%s\n", buffer); break ;
free (buffer); }
return 0;
return SLURM_SUCCESS ;
} }
...@@ -46,6 +46,7 @@ slurm_load_build (time_t update_time, struct build_table **build_table_ptr ) ...@@ -46,6 +46,7 @@ slurm_load_build (time_t update_time, struct build_table **build_table_ptr )
slurm_msg_t request_msg ; slurm_msg_t request_msg ;
slurm_msg_t response_msg ; slurm_msg_t response_msg ;
last_update_msg_t last_time_msg ; last_update_msg_t last_time_msg ;
return_code_msg_t * rc_msg ;
/* init message connection for message communication with controller */ /* init message connection for message communication with controller */
...@@ -77,7 +78,8 @@ slurm_load_build (time_t update_time, struct build_table **build_table_ptr ) ...@@ -77,7 +78,8 @@ slurm_load_build (time_t update_time, struct build_table **build_table_ptr )
return SLURM_SUCCESS ; return SLURM_SUCCESS ;
break ; break ;
case RESPONSE_SLURM_RC: case RESPONSE_SLURM_RC:
return SLURM_NO_CHANGE_IN_DATA ; rc_msg = ( return_code_msg_t * ) response_msg . data ;
return rc_msg->return_code ;
break ; break ;
default: default:
return SLURM_UNEXPECTED_MSG_ERROR ; return SLURM_UNEXPECTED_MSG_ERROR ;
......
...@@ -126,7 +126,7 @@ slurm_load_jobs (time_t update_time, job_info_msg_t **job_info_msg_pptr) ...@@ -126,7 +126,7 @@ slurm_load_jobs (time_t update_time, job_info_msg_t **job_info_msg_pptr)
slurm_msg_t request_msg ; slurm_msg_t request_msg ;
slurm_msg_t response_msg ; slurm_msg_t response_msg ;
last_update_msg_t last_time_msg ; last_update_msg_t last_time_msg ;
return_code_msg_t * slurm_rc_msg ; return_code_msg_t * 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_PORT ) ) == SLURM_SOCKET_ERROR ) if ( ( sockfd = slurm_open_controller_conn ( SLURM_PORT ) ) == SLURM_SOCKET_ERROR )
...@@ -153,7 +153,8 @@ slurm_load_jobs (time_t update_time, job_info_msg_t **job_info_msg_pptr) ...@@ -153,7 +153,8 @@ slurm_load_jobs (time_t update_time, job_info_msg_t **job_info_msg_pptr)
*job_info_msg_pptr = ( job_info_msg_t * ) response_msg . data ; *job_info_msg_pptr = ( job_info_msg_t * ) response_msg . data ;
break ; break ;
case RESPONSE_SLURM_RC: case RESPONSE_SLURM_RC:
slurm_rc_msg = ( return_code_msg_t * ) response_msg . data ; rc_msg = ( return_code_msg_t * ) response_msg . data ;
return rc_msg -> return_code ;
break ; break ;
default: default:
return SLURM_UNEXPECTED_MSG_ERROR ; return SLURM_UNEXPECTED_MSG_ERROR ;
......
...@@ -264,4 +264,4 @@ extern int slurm_reconfigure (); ...@@ -264,4 +264,4 @@ extern int slurm_reconfigure ();
* input: a line containing configuration information per the configuration file format * input: a line containing configuration information per the configuration file format
* output: returns 0 on success, errno otherwise * output: returns 0 on success, errno otherwise
*/ */
extern int update_config (char *spec); extern int slurm_update_config (char *spec);
...@@ -11,14 +11,8 @@ ...@@ -11,14 +11,8 @@
#include <errno.h> #include <errno.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <src/api/slurm.h>
#include <syslog.h> #include <src/common/slurm_protocol_api.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include "slurm.h"
#if DEBUG_MODULE #if DEBUG_MODULE
/* main is used here for module testing purposes only */ /* main is used here for module testing purposes only */
...@@ -54,62 +48,46 @@ main (int argc, char *argv[]) { ...@@ -54,62 +48,46 @@ main (int argc, char *argv[]) {
* output: returns 0 on success, errno otherwise * output: returns 0 on success, errno otherwise
*/ */
int int
update_config (char *spec) { slurm_update_config (char *spec) {
static int error_code; int msg_size ;
int buffer_offset, buffer_size, in_size; int rc ;
char *request_msg, *buffer; slurm_fd sockfd ;
int sockfd; slurm_msg_t request_msg ;
struct sockaddr_in serv_addr; slurm_msg_t response_msg ;
return_code_msg_t * rc_msg ;
if ((sockfd = socket (AF_INET, SOCK_STREAM, 0)) < 0)
return EINVAL; /* init message connection for message communication with controller */
serv_addr.sin_family = PF_INET;
serv_addr.sin_addr.s_addr = inet_addr (SLURMCTLD_HOST); if ( ( sockfd = slurm_open_controller_conn ( SLURM_PORT ) ) == SLURM_SOCKET_ERROR )
serv_addr.sin_port = htons (SLURMCTLD_PORT); return SLURM_SOCKET_ERROR ;
if (connect
(sockfd, (struct sockaddr *) &serv_addr,
sizeof (serv_addr)) < 0) { /* send request message */
close (sockfd); /* pack32 ( update_time , &buf_ptr , &buffer_size ); */
return EINVAL; /*request_msg . msg_type = REQUEST_UPDATE_CONFIG_INFO ;*/
} request_msg . data = NULL ;
request_msg = malloc (strlen (spec) + 10);
if (request_msg == NULL) { if ( ( rc = slurm_send_controller_msg ( sockfd , & request_msg ) ) == SLURM_SOCKET_ERROR )
close (sockfd); return SLURM_SOCKET_ERROR ;
return ENOMEM;
}
sprintf (request_msg, "Update %s", spec); /* receive message */
if (send (sockfd, request_msg, strlen (request_msg) + 1, 0) < if ( ( msg_size = slurm_receive_msg ( sockfd , & response_msg ) ) == SLURM_SOCKET_ERROR )
strlen (request_msg)) { return SLURM_SOCKET_ERROR ;
close (sockfd); /* shutdown message connection */
free (request_msg); if ( ( rc = slurm_shutdown_msg_conn ( sockfd ) ) == SLURM_SOCKET_ERROR )
return EINVAL; return SLURM_SOCKET_ERROR ;
}
free (request_msg); switch ( response_msg . msg_type )
buffer = NULL; {
buffer_offset = 0; case RESPONSE_SLURM_RC:
buffer_size = 1024; rc_msg = ( return_code_msg_t * ) response_msg . data ;
while (1) { return rc_msg->return_code ;
buffer = realloc (buffer, buffer_size); break ;
if (buffer == NULL) { default:
close (sockfd); return SLURM_UNEXPECTED_MSG_ERROR ;
return ENOMEM; break ;
} }
in_size =
recv (sockfd, &buffer[buffer_offset], return SLURM_SUCCESS ;
(buffer_size - buffer_offset), 0);
if (in_size <= 0) { /* end if input */
in_size = 0;
break;
}
buffer_offset += in_size;
buffer_size += in_size;
}
close (sockfd);
buffer_size = buffer_offset + in_size;
buffer = realloc (buffer, buffer_size);
if (buffer == NULL)
return ENOMEM;
error_code = atoi (buffer);
free (buffer);
return error_code;
} }
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