/** * @brief * disables a destination (queue) * * @param queue - The name of the queue to disable. * @param server - The name of the server that manages the queue. * * @return - Void * * @File Variables: * exitstatus Set to two if an error occurs. * */ static void execute(char *queue, char *server) { int ct; /* Connection to the server */ int merr; /* Error return from pbs_manager */ char *errmsg; /* Error message from pbs_manager */ /* The disable request */ static struct attropl attr = {NULL, "started", NULL, "FALSE", SET}; if ((ct = cnt2server(server)) > 0) { merr = pbs_manager(ct, MGR_CMD_SET, MGR_OBJ_QUEUE, queue, &attr, NULL); if (merr != 0) { errmsg = pbs_geterrmsg(ct); if (errmsg != NULL) { fprintf(stderr, "qstop: %s ", errmsg); } else { fprintf(stderr, "qstop: Error (%d) disabling queue ", pbs_errno); } if (notNULL(queue)) fprintf(stderr, "%s", queue); if (notNULL(server)) fprintf(stderr, "@%s", server); fprintf(stderr, "\n"); exitstatus = 2; } pbs_disconnect(ct); } else { fprintf(stderr, "qstop: could not connect to server %s (%d)\n", server, pbs_errno); exitstatus = 2; } }
/* * int execute( char *queue, char *server ) * * queue The name of the queue to disable. * server The name of the server that manages the queue. * * Returns: * None * * File Variables: * exitstatus Set to two if an error occurs. */ static void execute( char *queue, char *server) { int ct; /* Connection to the server */ int local_errno = 0; int merr; /* Error return from pbs_manager */ char *errmsg; /* Error message from pbs_manager */ /* The disable request */ static struct attropl attr = { NULL, (char *)"enabled", NULL, (char *)"FALSE", SET }; if ((ct = cnt2server(server)) > 0) { merr = pbs_manager_err(ct, MGR_CMD_SET, MGR_OBJ_QUEUE, queue, &attr, NULL, &local_errno); if (merr != 0) { errmsg = pbs_geterrmsg(ct); if (errmsg != NULL) { fprintf(stderr, "qdisable: %s ", errmsg); free(errmsg); } else { fprintf(stderr, "qdisable: Error disabling queue: %d - %s ", local_errno, pbs_strerror(local_errno)); } if (notNULL(queue)) fprintf(stderr, "%s", queue); if (notNULL(server)) fprintf(stderr, "@%s", server); fprintf(stderr, "\n"); exitstatus = 2; } pbs_disconnect(ct); } else { fprintf(stderr, "qdisable: could not connect to server %s (%d) %s\n", server, ct * -1, pbs_strerror(ct * -1)); exitstatus = 2; } }
/* * void execute( char *node, char *gpuid, int ecc_perm, int ecc_vol, char *server ) * * node The name of the MOM node. * gpuid The id of the GPU. * ecc_perm The value for resetting the permanent ECC count. * ecc_vol The value for resetting the volatile ECC count. * server The name of the server to send to. * * Returns: * None * * File Variables: * exitstatus Set to two if an error occurs. */ static void execute( char *node, char *gpuid, int ecc_perm, int ecc_vol, const char *server) { int local_errno = 0; int ct; /* Connection to the server */ int merr; /* Error return from pbs_manager */ char *errmsg; /* Error message from pbs_manager */ /* The request to change mode */ if ((ct = cnt2server(server, false)) > 0) { merr = pbs_gpureset_err(ct, node, gpuid, ecc_perm, ecc_vol, &local_errno); if (merr != 0) { errmsg = pbs_geterrmsg(ct); if (errmsg != NULL) { fprintf(stderr, " qgpureset: %s ", errmsg); free(errmsg); } else { fprintf(stderr, " qgpureset: Error (%d - %s) resetting GPU ECC counts", local_errno, pbs_strerror(local_errno)); } if (notNULL(server)) fprintf(stderr, "@%s", server); fprintf(stderr, "\n"); exitstatus = 2; } pbs_disconnect(ct); } else { local_errno = -1 * ct; fprintf(stderr, " qgpureset: could not connect to server %s (%d) %s\n", server, local_errno, pbs_strerror(local_errno)); exitstatus = 2; } }
static void execute( int manner, /* I */ const char *server) /* I */ { int ct; /* Connection to the server */ int err; /* Error return from pbs_terminate */ char *errmsg; /* Error message from pbs_terminate */ int local_errno = 0; if ((ct = cnt2server(server)) > 0) { err = pbs_terminate_err(ct, manner, NULL, &local_errno); if (err != 0) { errmsg = pbs_geterrmsg(ct); if (errmsg != NULL) { fprintf(stderr, "qterm: %s", errmsg); } else { fprintf(stderr, "qterm: Error (%d - %s) terminating server ", local_errno, pbs_strerror(local_errno)); } fprintf(stderr, "%s\n", server); exitstatus = 2; } pbs_disconnect(ct); } else { /* FAILURE */ local_errno = -1 * ct; fprintf(stderr, "qterm: could not connect to server '%s' (%d) %s\n", server, local_errno, pbs_strerror(local_errno)); exitstatus = 2; } return; } /* END execute() */
/** * @brief * executes a job * * @param[in] job - The fully qualified job id. * @param[in] server - The name of the server that manages the job. * @param[in] location - location indicating where to run job * * @return - Void * * @File Variables: * exitstatus Set to two if an error occurs. * */ static void execute(char *job, char *server, char *location) { int ct; /* Connection to the server */ int err; /* Error return from pbs_run */ int out; /* Stores the size of err_msg_buf*/ int located = FALSE; char *errmsg; char err_msg_buf[COMMENT_BUF_SIZE] = {'\0'}; /* generic buffer - comments & logging*/ char rmt_server[MAXSERVERNAME]; cnt: if ((ct = cnt2server(server)) > 0) { if (async) err = pbs_asyrunjob(ct, job, location, NULL); else err = pbs_runjob(ct, job, location, NULL); if (err && (pbs_errno != PBSE_UNKJOBID)) { errmsg = pbs_geterrmsg(ct); if (errmsg != NULL) { if (pbs_errno == PBSE_UNKNODE) { out = snprintf(err_msg_buf, sizeof(err_msg_buf),"qrun: %s %s",errmsg, location); if (out >= sizeof(err_msg_buf)) { fprintf(stderr,"%s...\n", err_msg_buf); } else { fprintf(stderr, "%s\n", err_msg_buf); } } else { prt_job_err("qrun", ct, job); } } else { fprintf(stderr, "qrun : Server returned error %d for job ", pbs_errno); } exitstatus = 2; } else if (err && (pbs_errno == PBSE_UNKJOBID) && !located) { located = TRUE; if (locate_job(job, server, rmt_server)) { pbs_disconnect(ct); strcpy(server, rmt_server); goto cnt; } prt_job_err("qrun", ct, job); exitstatus = 2; } pbs_disconnect(ct); } else { fprintf(stderr, "qrun: could not connect to server %s (%d)\n", server, pbs_errno); exitstatus = 2; } }
int main( int argc, /* I */ char **argv) /* I */ { int c; int errflg = 0; int any_failed = 0; int u_cnt, o_cnt, s_cnt; char *pc; char job_id[PBS_MAXCLTJOBID]; /* from the command line */ char job_id_out[PBS_MAXCLTJOBID]; char server_out[MAXSERVERNAME] = ""; char rmt_server[MAXSERVERNAME]; char extend[MAXPATHLEN]; #define MAX_HOLD_TYPE_LEN 32 char hold_type[MAX_HOLD_TYPE_LEN+1]; #define GETOPT_ARGS "h:t:" hold_type[0] = '\0'; while ((c = getopt(argc, argv, GETOPT_ARGS)) != EOF) { switch (c) { case 'h': while (isspace((int)*optarg)) optarg++; if (strlen(optarg) == 0) { fprintf(stderr, "qrls: illegal -h value\n"); errflg++; break; } pc = optarg; u_cnt = o_cnt = s_cnt = 0; while (*pc) { if (*pc == 'u') u_cnt++; else if (*pc == 'o') o_cnt++; else if (*pc == 's') s_cnt++; else { fprintf(stderr, "qrls: illegal -h value\n"); errflg++; break; } pc++; } strcpy(hold_type, optarg); break; case 't': pc = optarg; if (strlen(pc) == 0) { fprintf(stderr, "qrls: illegal -t value (array range cannot be zero length)\n"); errflg++; break; } snprintf(extend,sizeof(extend),"%s%s", ARRAY_RANGE, pc); break; default: errflg++; break; } } if (errflg || optind >= argc) { static char usage[] = "usage: qrls [-h {uos}] [-t array_range] job_identifier...\n"; fprintf(stderr,"%s", usage); exit(2); } for (;optind < argc;optind++) { int connect; int stat = 0; int located = FALSE; snprintf(job_id, sizeof(job_id), "%s", argv[optind]); if (get_server(job_id, job_id_out, sizeof(job_id_out), server_out, sizeof(server_out))) { fprintf(stderr, "qrls: illegally formed job identifier: %s\n", job_id); any_failed = 1; continue; } cnt: connect = cnt2server(server_out); if (connect <= 0) { any_failed = -1 * connect; if (server_out[0] != 0) fprintf(stderr, "qrls: cannot connect to server %s (errno=%d) %s\n", server_out, any_failed, pbs_strerror(any_failed)); else fprintf(stderr, "qrls: cannot connect to server %s (errno=%d) %s\n", pbs_server, any_failed, pbs_strerror(any_failed)); continue; } stat = pbs_rlsjob_err(connect, job_id_out, hold_type, extend, &any_failed); if (stat && (any_failed != PBSE_UNKJOBID)) { prt_job_err("qrls", connect, job_id_out); } else if (stat && (any_failed != PBSE_UNKJOBID) && !located) { located = TRUE; if (locate_job(job_id_out, server_out, rmt_server)) { pbs_disconnect(connect); strcpy(server_out, rmt_server); goto cnt; } prt_job_err("qrls", connect, job_id_out); } pbs_disconnect(connect); } /* END for () */ exit(any_failed); /*NOTREACHED*/ return(0); } /* END main() */
int main(int argc, char **argv, char **envp) /* qhold */ { int c; int errflg=0; int any_failed=0; char job_id[PBS_MAXCLTJOBID]; /* from the command line */ char job_id_out[PBS_MAXCLTJOBID]; char server_out[MAXSERVERNAME]; char rmt_server[MAXSERVERNAME]; struct ecl_attribute_errors *err_list; #define MAX_HOLD_TYPE_LEN 32 char hold_type[MAX_HOLD_TYPE_LEN+1]; #define GETOPT_ARGS "h:-:" /*test for real deal or just version and exit*/ execution_mode(argc, argv); #ifdef WIN32 winsock_init(); #endif hold_type[0]='\0'; while ((c = getopt(argc, argv, GETOPT_ARGS)) != EOF) switch (c) { case 'h': while (isspace((int)*optarg)) optarg++; if (optarg[0] == '\0') { fprintf(stderr, "qhold: illegal -h value\n"); errflg++; } else strcpy(hold_type, optarg); break; default : errflg++; } if (errflg || optind >= argc) { print_usage(); exit(2); } /*perform needed security library initializations (including none)*/ if (CS_client_init() != CS_SUCCESS) { fprintf(stderr, "qhold: unable to initialize security library.\n"); exit(2); } for (; optind < argc; optind++) { int connect; int stat=0; int located = FALSE; strcpy(job_id, argv[optind]); if (get_server(job_id, job_id_out, server_out)) { fprintf(stderr, "qhold: illegally formed job identifier: %s\n", job_id); any_failed = 1; continue; } cnt: connect = cnt2server(server_out); if (connect <= 0) { fprintf(stderr, "qhold: cannot connect to server %s (errno=%d)\n", pbs_server, pbs_errno); any_failed = pbs_errno; continue; } stat = pbs_holdjob(connect, job_id_out, hold_type, NULL); if (stat && (err_list = pbs_get_attributes_in_error(connect))) handle_attribute_errors(connect, err_list); if (stat && (pbs_errno != PBSE_UNKJOBID)) { prt_job_err("qhold", connect, job_id_out); any_failed = pbs_errno; } else if (stat && (pbs_errno == PBSE_UNKJOBID) && !located) { located = TRUE; if (locate_job(job_id_out, server_out, rmt_server)) { pbs_disconnect(connect); strcpy(server_out, rmt_server); goto cnt; } prt_job_err("qhold", connect, job_id_out); any_failed = pbs_errno; } pbs_disconnect(connect); } /*cleanup security library initializations before exiting*/ CS_close_app(); exit(any_failed); }
int main( int argc, char **argv) /* qrerun */ { int any_failed = 0; char job_id[PBS_MAXCLTJOBID]; /* from the command line */ char job_id_out[PBS_MAXCLTJOBID]; char server_out[PBS_MAXSERVERNAME] = ""; char rmt_server[MAXSERVERNAME]; char extend[1024]; int errflg = 0; int c; static char usage[] = "usage: qrerun [-f] <JOBID>[ <JOBID>]...\n"; if (argc < 2) { fprintf(stderr,"%s", usage); exit(2); } #define GETOPT_ARGS "m:f" extend[0] = '\0'; while ((c = (char) getopt(argc, argv, GETOPT_ARGS)) != EOF) { switch (c) { case 'm': /* add delete message */ if (extend[0] != '\0') { /* extension option already specified */ errflg++; break; } if (strchr(optarg, '=')) { /* message cannot contain '=' character */ errflg++; break; } strncpy(extend, optarg, sizeof(extend)); break; case 'f': if (extend[0] != '\0') { errflg++; break; } strcpy(extend, RERUNFORCE); break; } /* END switch (c) */ } /* END while ((c = getopt(argc,argv,GETOPT_ARGS)) != EOF) */ if ((errflg != 0) || (optind >= argc)) { fprintf(stderr,"%s", usage); exit(2); } for (;optind < argc;optind++) { int connect; int stat = 0; int located = FALSE; snprintf(job_id, sizeof(job_id), "%s", argv[optind]); if (get_server(job_id, job_id_out, sizeof(job_id_out), server_out, sizeof(server_out))) { fprintf(stderr, "qrerun: illegally formed job identifier: %s\n", job_id); any_failed = 1; continue; } cnt: connect = cnt2server(server_out); if (connect <= 0) { any_failed = -1 * connect; if (server_out[0] != 0) fprintf(stderr, "qrerun: cannot connect to server %s (errno=%d) %s\n", server_out, any_failed, pbs_strerror(any_failed)); else fprintf(stderr, "qrerun: cannot connect to server %s (errno=%d) %s\n", pbs_server, any_failed, pbs_strerror(any_failed)); continue; } if (extend[0] != '\0') stat = pbs_rerunjob_err(connect, job_id_out, extend, &any_failed); else stat = pbs_rerunjob_err(connect, job_id_out, NULL, &any_failed); if (stat && (any_failed != PBSE_UNKJOBID)) { prt_job_err("qrerun", connect, job_id_out); } else if (stat && (any_failed == PBSE_UNKJOBID) && !located) { located = TRUE; if (locate_job(job_id_out, server_out, rmt_server)) { pbs_disconnect(connect); snprintf(server_out, sizeof(server_out), "%s", rmt_server); goto cnt; } prt_job_err("qrerun", connect, job_id_out); } pbs_disconnect(connect); } exit(any_failed); } /* END main() */
int main(int argc, char **argv, char **envp) /* qmove */ { int any_failed=0; char job_id[PBS_MAXCLTJOBID]; /* from the command line */ char destination[PBS_MAXSERVERNAME]; /* from the command line */ char *q_n_out, *s_n_out; char job_id_out[PBS_MAXCLTJOBID]; char server_out[MAXSERVERNAME]; char rmt_server[MAXSERVERNAME]; /*test for real deal or just version and exit*/ execution_mode(argc, argv); #ifdef WIN32 winsock_init(); #endif if (argc < 3) { static char usage[]="usage: qmove destination job_identifier...\n"; static char usag2[]=" qmove --version\n"; fprintf(stderr, usage); fprintf(stderr, usag2); exit(2); } strcpy(destination, argv[1]); if (parse_destination_id(destination, &q_n_out, &s_n_out)) { fprintf(stderr, "qmove: illegally formed destination: %s\n", destination); exit(2); } /*perform needed security library initializations (including none)*/ if (CS_client_init() != CS_SUCCESS) { fprintf(stderr, "qmove: unable to initialize security library.\n"); exit(2); } for (optind = 2; optind < argc; optind++) { int connect; int stat=0; int located = FALSE; strcpy(job_id, argv[optind]); if (get_server(job_id, job_id_out, server_out)) { fprintf(stderr, "qmove: illegally formed job identifier: %s\n", job_id); any_failed = 1; continue; } cnt: connect = cnt2server(server_out); if (connect <= 0) { fprintf(stderr, "qmove: cannot connect to server %s (errno=%d)\n", pbs_server, pbs_errno); any_failed = pbs_errno; continue; } stat = pbs_movejob(connect, job_id_out, destination, NULL); if (stat && (pbs_errno != PBSE_UNKJOBID)) { if (stat != PBSE_NEEDQUET) { prt_job_err("qmove", connect, job_id_out); any_failed = pbs_errno; } else { fprintf(stderr, "qmove: Queue type not set for queue \'%s\'\n", destination); } } else if (stat && (pbs_errno == PBSE_UNKJOBID) && !located) { located = TRUE; if (locate_job(job_id_out, server_out, rmt_server)) { pbs_disconnect(connect); strcpy(server_out, rmt_server); goto cnt; } prt_job_err("qmove", connect, job_id_out); any_failed = pbs_errno; } pbs_disconnect(connect); } /*cleanup security library initializations before exiting*/ CS_close_app(); exit(any_failed); }
int qdel_main( int argc, char **argv, char **envp) { int c; int errflg = 0; int any_failed = 0; int purge_completed = FALSE; int located = FALSE; char *pc; bool dash_t = false; /* for array submission job handling */ int past_failure = 0; /* for multiple job submission error message tracking */ char job_id[PBS_MAXCLTJOBID]; /* from the command line */ char job_id_out[PBS_MAXCLTJOBID]; char server_out[MAXSERVERNAME] = ""; char rmt_server[MAXSERVERNAME] = ""; char extend[1024]; job_data_container attr; job_data *tmp_data = NULL; int client_retry = 0; #define GETOPT_ARGS "ab:cm:pW:t:" set_env_opts(&attr, envp); process_config_file(&attr); if (hash_find(&attr, "PBS_CLIENTRETRY", &tmp_data)) { client_retry = atoi(tmp_data->value.c_str()); } extend[0] = '\0'; while ((c = getopt(argc, argv, GETOPT_ARGS)) != EOF) { switch (c) { case 'a': /* Async job deletion */ if (extend[0] != '\0') { errflg++; break; } snprintf(extend, sizeof(extend), "%s", DELASYNC); break; case 'b': client_retry = atoi(optarg); break; case 'c': if (extend[0] != '\0') { errflg++; break; } snprintf(extend,sizeof(extend),"%s%ld",PURGECOMP,(long)(time(NULL))); purge_completed = TRUE; break; case 'm': /* add delete message */ if (extend[0] != '\0') { /* extension option already specified */ errflg++; break; } snprintf(extend, sizeof(extend), "%s", optarg); break; case 'p': if (extend[0] != '\0') { errflg++; break; } snprintf(extend, sizeof(extend), "%s1", DELPURGE); break; case 't': dash_t = true; if (extend[0] != '\0') { errflg++; break; } pc = optarg; if (strlen(pc) == 0) { fprintf(stderr, "qdel: illegal -t value (array range cannot be zero length)\n"); errflg++; break; } snprintf(extend,sizeof(extend),"%s%s", ARRAY_RANGE, pc); break; case 'W': if (extend[0] != '\0') { errflg++; break; } pc = optarg; if (strlen(pc) == 0) { fprintf(stderr, "qdel: illegal -W value\n"); errflg++; break; } while (*pc != '\0') { if (!isdigit(*pc)) { fprintf(stderr, "qdel: illegal -W value\n"); errflg++; break; } pc++; } snprintf(extend, sizeof(extend), "%s%s", DELDELAY, optarg); break; default: errflg++; break; } } /* END while (c) */ if (purge_completed) { snprintf(server_out, sizeof(server_out), "%s", pbs_default()); goto cnt; } if ((errflg != 0) || (optind >= argc)) { static char usage[] = "usage: qdel [{ -a | -c | -p | -t | -W delay | -m message}] [-b retry_seconds] [<JOBID>[<JOBID>]|'all'|'ALL']...\n"; fprintf(stderr, "%s", usage); fprintf(stderr, " -a -c, -m, -p, -t, and -W are mutually exclusive\n"); exit(2); } if (client_retry > 0) { cnt2server_conf(client_retry); /* set number of seconds to retry */ } for (;optind < argc;optind++) { int connect; int stat; /* check to see if user specified 'all' to delete all jobs */ snprintf(job_id, sizeof(job_id), "%s", argv[optind]); if ((dash_t == true) && is_array(job_id) == false) { fprintf(stderr, "qdel: Error: job id '%s' isn't a job array but -t was specified.\n", job_id); any_failed = 1; exit(any_failed); } if (get_server(job_id, job_id_out, sizeof(job_id_out), server_out, sizeof(server_out))) { fprintf(stderr, "qdel: illegally formed job identifier: %s\n", job_id); any_failed = 1; exit(any_failed); } cnt: connect = cnt2server(server_out); if (connect <= 0) { any_failed = -1 * connect; if(server_out[0] != 0) fprintf(stderr, "qdel: cannot connect to server %s (errno=%d) %s\n", server_out, any_failed, pbs_strerror(any_failed)); else fprintf(stderr, "qdel: cannot connect to server %s (errno=%d) %s\n", pbs_server, any_failed, pbs_strerror(any_failed)); continue; } int retries = 0; do { stat = pbs_deljob_err(connect, job_id_out, extend, &any_failed); if (any_failed == PBSE_TIMEOUT) { sleep(1); fprintf(stdout, "Connection to server timed out. Trying again"); } } while ((++retries < MAX_RETRIES) && (any_failed == PBSE_TIMEOUT)); if (past_failure == 0) past_failure = any_failed; if (stat && (any_failed != PBSE_UNKJOBID)) { if (!located) { located = TRUE; if (locate_job(job_id_out, server_out, rmt_server)) { pbs_disconnect(connect); strcpy(server_out, rmt_server); goto cnt; } } prt_job_err((char *)"qdel", connect, job_id_out); } if (!located && any_failed != 0) { fprintf(stderr, "qdel: nonexistent job id: %s\n", job_id); } pbs_disconnect(connect); } if ((past_failure != PBSE_NONE) && (any_failed == PBSE_NONE)) any_failed = past_failure; exit(any_failed); } /* END qdel_main() */
int main( int argc, char **argv) { int c; int errflg = 0; char *errmsg; #define MAX_OPTARG_LEN 256 #define MAX_RESOURCE_NAME_LEN 256 char optargout[MAX_OPTARG_LEN+1]; char resource_name[MAX_RESOURCE_NAME_LEN+1]; enum batch_op op; enum batch_op *pop = &op; struct attropl *select_list = 0; static char destination[PBS_MAXROUTEDEST+1] = ""; char server_out[MAXSERVERNAME] = ""; char *queue_name_out; char *server_name_out; int connect; char **selectjob_list; char *res_pos; char *pc; int u_cnt, o_cnt, s_cnt, n_cnt; time_t after; char a_value[80]; int exec_only = 0; if (getenv("PBS_QSTAT_EXECONLY") != NULL) exec_only = 1; #define GETOPT_ARGS "a:A:ec:h:l:N:p:q:r:s:u:" while ((c = getopt(argc, argv, GETOPT_ARGS)) != EOF) switch (c) { case 'a': check_op(optarg, pop, optargout); if ((after = cvtdate(optargout)) < 0) { fprintf(stderr, "qselect: illegal -a value\n"); errflg++; break; } sprintf(a_value, "%ld", (long)after); set_attrop(&select_list, ATTR_a, NULL, a_value, op); break; case 'e': exec_only = 1; break; case 'c': check_op(optarg, pop, optargout); pc = optargout; while (isspace((int)*pc)) pc++; if (strlen(pc) == 0) { fprintf(stderr, "qselect: illegal -c value\n"); errflg++; break; } if (strcmp(pc, "u") == 0) { if ((op != EQ) && (op != NE)) { fprintf(stderr, "qselect: illegal -c value\n"); errflg++; break; } } else if ((strcmp(pc, "n") != 0) && (strcmp(pc, "s") != 0) && (strcmp(pc, "c") != 0)) { if (strncmp(pc, "c=", 2) != 0) { fprintf(stderr, "qselect: illegal -c value\n"); errflg++; break; } pc += 2; if (strlen(pc) == 0) { fprintf(stderr, "qselect: illegal -c value\n"); errflg++; break; } while (*pc != '\0') { if (!isdigit((int)*pc)) { fprintf(stderr, "qselect: illegal -c value\n"); errflg++; break; } pc++; } } set_attrop(&select_list, ATTR_c, NULL, optargout, op); break; case 'h': check_op(optarg, pop, optargout); pc = optargout; while (isspace((int)*pc)) pc++; if (strlen(pc) == 0) { fprintf(stderr, "qselect: illegal -h value\n"); errflg++; break; } u_cnt = o_cnt = s_cnt = n_cnt = 0; while (*pc) { if (*pc == 'u') u_cnt++; else if (*pc == 'o') o_cnt++; else if (*pc == 's') s_cnt++; else if (*pc == 'n') n_cnt++; else { fprintf(stderr, "qselect: illegal -h value\n"); errflg++; break; } pc++; } if (n_cnt && (u_cnt + o_cnt + s_cnt)) { fprintf(stderr, "qselect: illegal -h value\n"); errflg++; break; } set_attrop(&select_list, ATTR_h, NULL, optargout, op); break; case 'l': res_pos = optarg; while (*res_pos != '\0') { if (check_res_op(res_pos, resource_name, pop, optargout, &res_pos) != 0) { errflg++; break; } set_attrop(&select_list, ATTR_l, resource_name, optargout, op); } break; case 'p': check_op(optarg, pop, optargout); set_attrop(&select_list, ATTR_p, NULL, optargout, op); break; case 'q': strncpy(destination, optarg, PBS_MAXROUTEDEST); check_op(optarg, pop, optargout); set_attrop(&select_list, ATTR_q, NULL, optargout, op); break; case 'r': op = EQ; pc = optarg; while (isspace((int)(*pc))) pc++; if (strlen(pc) != 1) { fprintf(stderr, "qsub: illegal -r value\n"); errflg++; break; } if (*pc != 'y' && *pc != 'n') { fprintf(stderr, "qsub: illegal -r value\n"); errflg++; break; } set_attrop(&select_list, ATTR_r, NULL, pc, op); break; case 's': check_op(optarg, pop, optargout); pc = optargout; while (isspace((int)(*pc))) pc++; if (strlen(optarg) == 0) { fprintf(stderr, "qselect: illegal -s value\n"); errflg++; break; } while (*pc) { if (*pc != 'C' && *pc != 'E' && *pc != 'H' && *pc != 'Q' && *pc != 'R' && *pc != 'T' && *pc != 'W') { fprintf(stderr, "qselect: illegal -s value\n"); errflg++; break; } pc++; } set_attrop(&select_list, ATTR_state, NULL, optargout, op); break; case 'u': op = EQ; if (parse_at_list(optarg, FALSE, FALSE)) { fprintf(stderr, "qselect: illegal -u value\n"); errflg++; break; } set_attrop(&select_list, ATTR_u, NULL, optarg, op); break; case 'A': op = EQ; set_attrop(&select_list, ATTR_A, NULL, optarg, op); break; case 'N': op = EQ; set_attrop(&select_list, ATTR_N, NULL, optarg, op); break; default : errflg++; } if (errflg || (optind < argc)) { static char usage[] = "usage: qselect \ [-a [op]date_time] [-A account_string] [-e] [-c [op]interval] \n\ [-h hold_list] [-l resource_list] [-N name] [-p [op]priority] \n\ [-q destination] [-r y|n] [-s states] [-u user_name]\n"; fprintf(stderr,"%s", usage); exit(2); } if (notNULL(destination)) { if (parse_destination_id(destination, &queue_name_out, &server_name_out)) { fprintf(stderr, "qselect: illegally formed destination: %s\n", destination); exit(2); } else { if (notNULL(server_name_out)) { strcpy(server_out, server_name_out); } } } connect = cnt2server(server_out); if (connect <= 0) { fprintf(stderr, "qselect: cannot connect to server %s (errno=%d) %s\n", pbs_server, pbs_errno, pbs_strerror(pbs_errno)); exit(pbs_errno); } selectjob_list = pbs_selectjob(connect, select_list, exec_only ? EXECQUEONLY : NULL); if (selectjob_list == NULL) { if (pbs_errno != PBSE_NONE) { errmsg = pbs_geterrmsg(connect); if (errmsg != NULL) { fprintf(stderr, "qselect: %s\n", errmsg); } else { fprintf(stderr, "qselect: Error (%d - %s) selecting jobs\n", pbs_errno, pbs_strerror(pbs_errno)); } exit(pbs_errno); } } else /* got some jobs ids */ { int i = 0; while (selectjob_list[i] != NULL) { printf("%s\n", selectjob_list[i++]); } free(selectjob_list); } pbs_disconnect(connect); exit(0); }
int main( int argc, char **argv) /* qmsg */ { int c; int to_file; int errflg = 0; int any_failed = 0; char job_id[PBS_MAXCLTJOBID]; /* from the command line */ char job_id_out[PBS_MAXCLTJOBID]; char server_out[MAXSERVERNAME] = ""; char rmt_server[MAXSERVERNAME]; #define MAX_MSG_STRING_LEN 256 char msg_string[MAX_MSG_STRING_LEN+1]; #define GETOPT_ARGS "EO" msg_string[0] = '\0'; to_file = 0; while ((c = getopt(argc, argv, GETOPT_ARGS)) != EOF) switch (c) { case 'E': to_file |= MSG_ERR; break; case 'O': to_file |= MSG_OUT; break; default : errflg++; } if (to_file == 0) to_file = MSG_ERR; /* default */ if (errflg || ((optind + 1) >= argc)) { static char usage[] = "usage: qmsg [-O] [-E] msg_string job_identifier...\n"; fprintf(stderr,"%s", usage); exit(2); } snprintf(msg_string, sizeof(msg_string), "%s", argv[optind]); for (optind++; optind < argc; optind++) { int connect; int stat = 0; int located = FALSE; std::string server_name; std::vector<std::string> id_list; snprintf(job_id, sizeof(job_id), "%s", argv[optind]); if (get_server_and_job_ids(job_id, id_list, server_name)) { fprintf(stderr, "qmsg: illegally formed job identifier: %s\n", job_id); any_failed = 1; continue; } snprintf(server_out, sizeof(server_out), "%s", server_name.c_str()); cnt: connect = cnt2server(server_out, false); if (connect <= 0) { any_failed = -1 * connect; if (server_out[0] != 0) fprintf(stderr, "qmsg: cannot connect to server %s (errno=%d) %s\n", server_out, any_failed, pbs_strerror(any_failed)); else fprintf(stderr, "qmsg: cannot connect to server %s (errno=%d) %s\n", pbs_server, any_failed, pbs_strerror(any_failed)); continue; } for (size_t i = 0; i < id_list.size(); i++) { snprintf(job_id_out, sizeof(job_id_out), "%s", id_list[i].c_str()); stat = pbs_msgjob_err(connect, job_id_out, to_file, msg_string, NULL, &any_failed); if (any_failed != PBSE_UNKJOBID) break; } if (stat && (any_failed != PBSE_UNKJOBID)) { prt_job_err("qmsg", connect, job_id_out); } else if (stat && (any_failed == PBSE_UNKJOBID) && !located) { located = TRUE; if (locate_job(job_id_out, server_out, rmt_server)) { pbs_disconnect(connect); strcpy(server_out, rmt_server); goto cnt; } prt_job_err("qmsg", connect, job_id_out); } pbs_disconnect(connect); } exit(any_failed); }
int main(int argc, char **argv, char **envp) /* qselect */ { int c; int errflg=0; char *errmsg; #define MAX_OPTARG_LEN 256 #define MAX_RESOURCE_NAME_LEN 256 char optargout[MAX_OPTARG_LEN+1]; char resource_name[MAX_RESOURCE_NAME_LEN+1]; enum batch_op op; enum batch_op *pop = &op; struct attropl *select_list = 0; static char destination[PBS_MAXQUEUENAME+1] = ""; char server_out[MAXSERVERNAME] = ""; char *queue_name_out; char *server_name_out; int connect; char **selectjob_list; char *res_pos; char *pc; time_t after; char a_value[80]; char extendopts[4] = ""; char *attr_time = NULL; struct ecl_attribute_errors *err_list; char *resc_time = NULL; #define GETOPT_ARGS "a:A:c:h:HJl:N:p:q:r:s:t:Tu:xP:" /*test for real deal or just version and exit*/ execution_mode(argc, argv); #ifdef WIN32 winsock_init(); #endif while ((c = getopt(argc, argv, GETOPT_ARGS)) != EOF) switch (c) { case 'a': check_op(optarg, pop, optargout); if ((after = cvtdate(optargout)) < 0) { fprintf(stderr, "qselect: illegal -a value\n"); errflg++; break; } sprintf(a_value, "%ld", (long)after); set_attrop(&select_list, ATTR_a, NULL, a_value, op); break; case 'c': check_op(optarg, pop, optargout); pc = optargout; while (isspace((int)*pc)) pc++; if (strlen(pc) == 0) { fprintf(stderr, "qselect: illegal -c value\n"); errflg++; break; } set_attrop(&select_list, ATTR_c, NULL, optargout, op); break; case 'h': check_op(optarg, pop, optargout); pc = optargout; while (isspace((int)*pc)) pc++; set_attrop(&select_list, ATTR_h, NULL, optargout, op); break; case 'J': op = EQ; set_attrop(&select_list, ATTR_array, NULL, "True", op); break; case 'l': res_pos = optarg; while (*res_pos != '\0') { if (check_res_op(res_pos, resource_name, pop, optargout, &res_pos) != 0) { errflg++; break; } set_attrop(&select_list, ATTR_l, resource_name, optargout, op); } break; case 'p': check_op(optarg, pop, optargout); set_attrop(&select_list, ATTR_p, NULL, optargout, op); break; case 'q': strcpy(destination, optarg); check_op(optarg, pop, optargout); set_attrop(&select_list, ATTR_q, NULL, optargout, op); break; case 'r': op = EQ; pc = optarg; while (isspace((int)(*pc))) pc++; if (*pc != 'y' && *pc != 'n') { /* qselect specific check - stays */ fprintf(stderr, "qselect: illegal -r value\n"); errflg++; break; } set_attrop(&select_list, ATTR_r, NULL, pc, op); break; case 's': check_op(optarg, pop, optargout); pc = optargout; while (isspace((int)(*pc))) pc++; set_attrop(&select_list, ATTR_state, NULL, optargout, op); break; case 't': if (get_tsubopt(*optarg, &attr_time, &resc_time)) { fprintf(stderr, "qselect: illegal -t value\n"); errflg++; break; } /* 1st character possess the subopt, so send optarg++ */ optarg ++; check_op(optarg, pop, optargout); if ((after = cvtdate(optargout)) < 0) { fprintf(stderr, "qselect: illegal -t value\n"); errflg++; break; } sprintf(a_value, "%ld", (long)after); set_attrop(&select_list, attr_time, resc_time, a_value, op); break; case 'T': if (strchr(extendopts, (int)'T') == NULL) (void)strcat(extendopts, "T"); break; case 'x': if (strchr(extendopts, (int)'x') == NULL) (void)strcat(extendopts, "x"); break; case 'H': op = EQ; if (strchr(extendopts, (int)'x') == NULL) (void)strcat(extendopts, "x"); set_attrop(&select_list, ATTR_state, NULL, "FM", op); break; case 'u': op = EQ; set_attrop(&select_list, ATTR_u, NULL, optarg, op); break; case 'A': op = EQ; set_attrop(&select_list, ATTR_A, NULL, optarg, op); break; case 'P': op = EQ; set_attrop(&select_list, ATTR_project, NULL, optarg, op); break; case 'N': op = EQ; set_attrop(&select_list, ATTR_N, NULL, optarg, op); break; default : errflg++; } if (errflg || (optind < argc)) { print_usage(); exit(2); } if (notNULL(destination)) { if (parse_destination_id(destination, &queue_name_out, &server_name_out)) { fprintf(stderr, "qselect: illegally formed destination: %s\n", destination); exit(2); } else { if (notNULL(server_name_out)) { strcpy(server_out, server_name_out); } } } /*perform needed security library initializations (including none)*/ if (CS_client_init() != CS_SUCCESS) { fprintf(stderr, "qselect: unable to initialize security library.\n"); exit(2); } connect = cnt2server(server_out); if (connect <= 0) { fprintf(stderr, "qselect: cannot connect to server %s (errno=%d)\n", pbs_server, pbs_errno); /*cleanup security library initializations before exiting*/ CS_close_app(); exit(pbs_errno); } if (extendopts[0] == '\0') selectjob_list = pbs_selectjob(connect, select_list, NULL); else selectjob_list = pbs_selectjob(connect, select_list, extendopts); if (selectjob_list == NULL) { if ((err_list = pbs_get_attributes_in_error(connect))) handle_attribute_errors(err_list); if (pbs_errno != PBSE_NONE) { errmsg = pbs_geterrmsg(connect); if (errmsg != NULL) { fprintf(stderr, "qselect: %s\n", errmsg); } else { fprintf(stderr, "qselect: Error (%d) selecting jobs\n", pbs_errno); } /* * If the server is not configured for history jobs i.e. * job_history_enable svr attr is unset/set to FALSE, qselect * command with -x/-H option is being used, then pbs_selectjob() * will return PBSE_JOBHISTNOTSET error code. But command will * exit with exit code '0'after printing the corresponding error * message. i.e. "job_history_enable is set to false" */ if (pbs_errno == PBSE_JOBHISTNOTSET) pbs_errno = 0; /*cleanup security library initializations before exiting*/ CS_close_app(); exit(pbs_errno); } } else { /* got some jobs ids */ int i = 0; while (selectjob_list[i] != NULL) { printf("%s\n", selectjob_list[i++]); } free(selectjob_list); } pbs_disconnect(connect); /*cleanup security library initializations before exiting*/ CS_close_app(); exit(0); }
int main( int argc, /* I */ char **argv) /* I */ { char job_id1[PBS_MAXCLTJOBID+1]; /* from the command line */ char job_id2[PBS_MAXCLTJOBID+1]; /* from the command line */ char job_id1_out[PBS_MAXCLTJOBID+1]; char job_id2_out[PBS_MAXCLTJOBID+1]; char *pn; int port1 = 0; int port2 = 0; char server_out1[MAXSERVERNAME+1]; char server_out2[MAXSERVERNAME+1]; char svrtmp[MAXSERVERNAME+1] = ""; int connect; int stat = 0; int rc = 0; int local_errno = 0; if (argc != 3) { static char usage[] = "usage: qorder job_identifier job_identifier\n"; fprintf(stderr, "%s", usage); exit(2); } snprintf(job_id1, sizeof(job_id1), "%s", argv[1]); snprintf(job_id2, sizeof(job_id2), "%s", argv[2]); svrtmp[0] = '\0'; if (get_server(job_id1, job_id1_out, sizeof(job_id1_out), svrtmp, sizeof(svrtmp))) { fprintf(stderr, "qorder: illegally formed job identifier: %s\n", job_id1); exit(1); } if (*svrtmp == '\0') { if ((pn = pbs_default())) { strcpy(svrtmp, pn); } else { fprintf(stderr, "qorder: could not get default server: %s\n", job_id1); exit(1); } } if ((pn = strchr(svrtmp, (int)':')) != 0) { *pn = '\0'; port1 = atoi(pn + 1); } if (get_fullhostname(svrtmp, server_out1, MAXSERVERNAME, NULL) != 0) { fprintf(stderr, "qorder: invalid server name: %s\n", job_id1); exit(1); } svrtmp[0] = '\0'; if (get_server(job_id2, job_id2_out, sizeof(job_id2_out), svrtmp, sizeof(svrtmp))) { fprintf(stderr, "qorder: illegally formed job identifier: %s\n", job_id2); exit(1); } if (*svrtmp == '\0') { if ((pn = pbs_default())) { snprintf(svrtmp, sizeof(svrtmp), "%s", pn); } else { fprintf(stderr, "qorder: could not get default server: %s\n", job_id1); exit(1); } } if ((pn = strchr(svrtmp, (int)':')) != 0) { *pn = '\0'; port2 = atoi(pn + 1); } if (get_fullhostname(svrtmp, server_out2, MAXSERVERNAME, NULL) != 0) { fprintf(stderr, "qorder: invalid server name: %s\n", job_id2); exit(1); } if ((strcmp(server_out1, server_out2) != 0) || (port1 != port2)) { fprintf(stderr, "qorder: both jobs ids must specify the same server\n"); exit(1); } if (pn != NULL) *pn = ':'; /* restore : if it was present */ connect = cnt2server(svrtmp); if (connect <= 0) { local_errno = -1 * connect; if (svrtmp[0] != 0) fprintf(stderr, "qorder: cannot connect to server %s (errno=%d) %s\n", svrtmp, local_errno, pbs_strerror(local_errno)); else fprintf(stderr, "qorder: cannot connect to server %s (errno=%d) %s\n", pbs_server, local_errno, pbs_strerror(local_errno)); exit(1); } stat = pbs_orderjob_err(connect, job_id1_out, job_id2_out, NULL, &local_errno); if (stat != 0) { prt_job_err("qorder", connect, ""); rc = local_errno; } pbs_disconnect(connect); exit(rc); } /* END main() */
static void execute( char *job, /* I */ char *server, /* I */ char *location, /* I */ int async) /* I */ { int ct; /* Connection to the server */ int err; /* Error return from pbs_run */ int located = FALSE; char rmt_server[MAXSERVERNAME]; int local_errno = 0; cnt: if ((ct = cnt2server(server)) > 0) { if (async == TRUE) { err = pbs_asyrunjob_err(ct, job, location, NULL, &local_errno); /* see lib/Libifl/pbsD_runjob.c */ } else { err = pbs_runjob_err(ct, job, location, NULL, &local_errno); /* see lib/Libifl/pbsD_runjob.c */ } if (err && (local_errno == PBSE_UNKNODE)) { fprintf(stderr, "qrun: Unknown node in hostlist '%.16s...' for job %s\n", location, job); exitstatus = 2; } else if (err && (local_errno != PBSE_UNKJOBID)) { prt_job_err("qrun", ct, job); exitstatus = 2; } else if (err && (local_errno == PBSE_UNKJOBID) && !located) { located = TRUE; if (locate_job(job, server, rmt_server)) { pbs_disconnect(ct); strcpy(server, rmt_server); goto cnt; } prt_job_err("qrun", ct, job); exitstatus = 2; } pbs_disconnect(ct); } else { fprintf(stderr, "qrun: could not connect to server %s (%d) %s\n", server, ct * -1, pbs_strerror(ct * -1)); exitstatus = 2; } return; } /* END execute() */
int main( int argc, char **argv) { int c; int errflg = 0; int any_failed = 0; int purge_completed = FALSE; int located = FALSE; char *pc; char job_id[PBS_MAXCLTJOBID]; /* from the command line */ char job_id_out[PBS_MAXCLTJOBID]; char server_out[MAXSERVERNAME] = ""; char rmt_server[MAXSERVERNAME] = ""; char extend[1024]; #define GETOPT_ARGS "acm:pW:t:" initialize_network_info(); extend[0] = '\0'; while ((c = getopt(argc, argv, GETOPT_ARGS)) != EOF) { switch (c) { case 'a': /* Async job deletion */ if (extend[0] != '\0') { errflg++; break; } strcpy(extend, DELASYNC); break; case 'c': if (extend[0] != '\0') { errflg++; break; } snprintf(extend,sizeof(extend),"%s%ld",PURGECOMP,(long)(time(NULL))); purge_completed = TRUE; break; case 'm': /* add delete message */ if (extend[0] != '\0') { /* extension option already specified */ errflg++; break; } strncpy(extend, optarg, sizeof(extend)); break; case 'p': if (extend[0] != '\0') { errflg++; break; } strcpy(extend, DELPURGE); strcat(extend, "1"); break; case 't': if (extend[0] != '\0') { errflg++; break; } pc = optarg; if (strlen(pc) == 0) { fprintf(stderr, "qdel: illegal -t value (array range cannot be zero length)\n"); errflg++; break; } snprintf(extend,sizeof(extend),"%s%s", ARRAY_RANGE, pc); break; case 'W': if (extend[0] != '\0') { errflg++; break; } pc = optarg; if (strlen(pc) == 0) { fprintf(stderr, "qdel: illegal -W value\n"); errflg++; break; } while (*pc != '\0') { if (!isdigit(*pc)) { fprintf(stderr, "qdel: illegal -W value\n"); errflg++; break; } pc++; } strcpy(extend, DELDELAY); strcat(extend, optarg); break; default: errflg++; break; } } /* END while (c) */ if (purge_completed) { strcpy(server_out,pbs_default()); goto cnt; } if ((errflg != 0) || (optind >= argc)) { static char usage[] = "usage: qdel [{ -a | -c | -p | -t | -W delay | -m message}] [<JOBID>[<JOBID>]|'all'|'ALL']...\n"; fprintf(stderr, "%s", usage); fprintf(stderr, " -a -c, -m, -p, -t, and -W are mutually exclusive\n"); exit(2); } for (;optind < argc;optind++) { int connect; int stat = 0; /* check to see if user specified 'all' to delete all jobs */ snprintf(job_id, sizeof(job_id), "%s", argv[optind]); if (get_server(job_id, job_id_out, sizeof(job_id_out), server_out, sizeof(server_out))) { fprintf(stderr, "qdel: illegally formed job identifier: %s\n", job_id); any_failed = 1; continue; } cnt: connect = cnt2server(server_out); if (connect <= 0) { any_failed = -1 * connect; if(server_out[0] != 0) fprintf(stderr, "qdel: cannot connect to server %s (errno=%d) %s\n", server_out, any_failed, pbs_strerror(any_failed)); else fprintf(stderr, "qdel: cannot connect to server %s (errno=%d) %s\n", pbs_server, any_failed, pbs_strerror(any_failed)); continue; } stat = pbs_deljob_err(connect, job_id_out, extend, &any_failed); if (stat && (any_failed != PBSE_UNKJOBID)) { prt_job_err("qdel", connect, job_id_out); } else if (stat && (any_failed != PBSE_UNKJOBID) && !located) { located = TRUE; if (locate_job(job_id_out, server_out, rmt_server)) { pbs_disconnect(connect); strcpy(server_out, rmt_server); goto cnt; } prt_job_err("qdel", connect, job_id_out); } pbs_disconnect(connect); } exit(any_failed); } /* END main() */
int main(int argc, char **argv, char **envp) /* qalter */ { int c; int errflg=0; int any_failed=0; char *pc; int i; struct attrl *attrib = NULL; char *keyword; char *valuewd; char *erplace; time_t after; char a_value[80]; char job_id[PBS_MAXCLTJOBID]; char job_id_out[PBS_MAXCLTJOBID]; char server_out[MAXSERVERNAME]; char rmt_server[MAXSERVERNAME]; struct ecl_attribute_errors *err_list; #ifdef WIN32 struct attrl *ap = NULL; short int nSizeofHostName = 0; char* orig_apvalue = NULL; char* temp_apvalue = NULL; #endif #define GETOPT_ARGS "a:A:c:e:h:j:k:l:m:M:N:o:p:r:R:S:u:W:P:" /*test for real deal or just version and exit*/ execution_mode(argc, argv); #ifdef WIN32 winsock_init(); #endif while ((c = getopt(argc, argv, GETOPT_ARGS)) != EOF) switch (c) { case 'a': if ((after = cvtdate(optarg)) < 0) { fprintf(stderr, "qalter: illegal -a value\n"); errflg++; break; } sprintf(a_value, "%ld", (long)after); set_attr(&attrib, ATTR_a, a_value); break; case 'A': set_attr(&attrib, ATTR_A, optarg); break; case 'P': set_attr(&attrib, ATTR_project, optarg); break; case 'c': while (isspace((int)*optarg)) optarg++; pc = optarg; if ((pc[0] == 'u') && (pc[1] == '\0')) { fprintf(stderr, "qalter: illegal -c value\n"); errflg++; break; } set_attr(&attrib, ATTR_c, optarg); break; case 'e': set_attr(&attrib, ATTR_e, optarg); break; case 'h': while (isspace((int)*optarg)) optarg++; set_attr(&attrib, ATTR_h, optarg); break; case 'j': set_attr(&attrib, ATTR_j, optarg); break; case 'k': set_attr(&attrib, ATTR_k, optarg); break; case 'l': if ((i = set_resources(&attrib, optarg, TRUE, &erplace)) != 0) { if (i > 1) { pbs_prt_parse_err("qalter: illegal -l value\n", optarg, erplace-optarg, i); } else fprintf(stderr, "qalter: illegal -l value\n"); errflg++; } break; case 'm': while (isspace((int)*optarg)) optarg++; set_attr(&attrib, ATTR_m, optarg); break; case 'M': set_attr(&attrib, ATTR_M, optarg); break; case 'N': set_attr(&attrib, ATTR_N, optarg); break; case 'o': set_attr(&attrib, ATTR_o, optarg); break; case 'p': while (isspace((int)*optarg)) optarg++; set_attr(&attrib, ATTR_p, optarg); break; case 'r': if (strlen(optarg) != 1) { fprintf(stderr, "qalter: illegal -r value\n"); errflg++; break; } if (*optarg != 'y' && *optarg != 'n') { fprintf(stderr, "qalter: illegal -r value\n"); errflg++; break; } set_attr(&attrib, ATTR_r, optarg); break; case 'R': set_attr(&attrib, ATTR_R, optarg); break; case 'S': set_attr(&attrib, ATTR_S, optarg); break; case 'u': set_attr(&attrib, ATTR_u, optarg); break; case 'W': while (isspace((int)*optarg)) optarg++; if (strlen(optarg) == 0) { fprintf(stderr, "qalter: illegal -W value\n"); errflg++; break; } #ifdef WIN32 back2forward_slash2(optarg); #endif i = parse_equal_string(optarg, &keyword, &valuewd); while (i == 1) { set_attr(&attrib, keyword, valuewd); i = parse_equal_string(NULL, &keyword, &valuewd); } if (i == -1) { fprintf(stderr, "qalter: illegal -W value\n"); errflg++; } break; case '?': default : errflg++; break; } if (errflg || optind == argc) { print_usage(); exit(2); } /*perform needed security library initializations (including none)*/ if (CS_client_init() != CS_SUCCESS) { fprintf(stderr, "qalter: unable to initialize security library.\n"); exit(1); } for (; optind < argc; optind++) { int connect; int stat=0; int located = FALSE; strcpy(job_id, argv[optind]); if (get_server(job_id, job_id_out, server_out)) { fprintf(stderr, "qalter: illegally formed job identifier: %s\n", job_id); any_failed = 1; continue; } cnt: connect = cnt2server(server_out); if (connect <= 0) { fprintf(stderr, "qalter: cannot connect to server %s (errno=%d)\n", pbs_server, pbs_errno); any_failed = pbs_errno; continue; } stat = pbs_alterjob(connect, job_id_out, attrib, NULL); if (stat && (pbs_errno != PBSE_UNKJOBID)) { if ((err_list = pbs_get_attributes_in_error(connect))) handle_attribute_errors(connect, err_list, job_id_out); prt_job_err("qalter", connect, job_id_out); any_failed = pbs_errno; } else if (stat && (pbs_errno == PBSE_UNKJOBID) && !located) { located = TRUE; if (locate_job(job_id_out, server_out, rmt_server)) { pbs_disconnect(connect); strcpy(server_out, rmt_server); goto cnt; } prt_job_err("qalter", connect, job_id_out); any_failed = pbs_errno; } pbs_disconnect(connect); } CS_close_app(); exit(any_failed); }
/** * @brief * The main function in C - entry point * * @param[in] argc - argument count * @param[in] argv - pointer to argument array * @param[in] envp - pointer to environment values * * @return int * @retval 0 - success * @retval !0 - error */ int main(int argc, char *argv[], char *envp[]) { int errflg; /* command line option error */ int connect; /* return from pbs_connect */ char *errmsg; /* return from pbs_geterrmsg */ char destbuf[256]; /* buffer for option server */ struct attrl *attrib; /* the attrib list */ char *new_resvname; /* the name returned from pbs_submit_resv */ struct ecl_attribute_errors *err_list; char *interactive = NULL; /*test for real deal or just version and exit*/ execution_mode(argc, argv); #ifdef WIN32 winsock_init(); #endif destbuf[0] = '\0'; errflg = process_opts(argc, argv, &attrib, destbuf); /* get cmdline options */ if (errflg || ((optind+1) < argc) || argc == 1) { print_usage(); exit(2); } /* Get any required environment variables needing to be sent. */ if (! set_resv_env(envp)) { fprintf(stderr, "pbs_rsub: can't send environment with the reservation\n"); exit(3); } /*perform needed security library initializations (including none)*/ if (CS_client_init() != CS_SUCCESS) { fprintf(stderr, "pbs_rsub: unable to initialize security library.\n"); exit(1); } /* Connect to the server */ connect = cnt2server(destbuf); if (connect <= 0) { fprintf(stderr, "pbs_rsub: cannot connect to server %s (errno=%d)\n", pbs_server, pbs_errno); CS_close_app(); exit(pbs_errno); } if (qmoveflg == TRUE) { qmoveflg = FALSE; interactive = get_attr(attrib, ATTR_inter, NULL); if (interactive == NULL) { set_attr(&attrib, ATTR_inter, DEFAULT_INTERACTIVE); } else { if (atoi(interactive) > -1) { fprintf(stderr, "pbs_rsub: -I <timeout> value must be negative when used with -Wqmove option.\n"); CS_close_app(); exit(2); } } errflg = cnvrt_proc_attrib(connect, &attrib, destbuf); if (errflg) { fprintf(stderr, "pbs_rsub: can't make a reservation with the qmove option\n"); CS_close_app(); exit(2); } } pbs_errno = 0; new_resvname = pbs_submit_resv(connect, (struct attropl *)attrib, NULL); if (new_resvname == NULL) { if ((err_list = pbs_get_attributes_in_error(connect))) handle_attribute_errors(err_list); errmsg = pbs_geterrmsg(connect); if (errmsg != NULL) { fprintf(stderr, "pbs_rsub: %s\n", errmsg); } else fprintf(stderr, "pbs_rsub: Error (%d) submitting reservation\n", pbs_errno); CS_close_app(); exit(pbs_errno); } else { printf("%s\n", new_resvname); free(new_resvname); } /* Disconnet from the server. */ pbs_disconnect(connect); CS_close_app(); exit(0); }
/* if a user requested deleting 'all' then this routine will get the list of * jobs from the server and try to delete all jobs that are not in a * 'C'omplete or 'E'xiting state */ void qdel_all( char *extend) /* I */ { char *jobid; char *state = 0; int connect; int stat; int retries; struct batch_status *p_status; struct batch_status *p; struct attropl *p_atropl = 0; struct attrl *a; connect = cnt2server('\0'); if (connect <= 0) { fprintf(stderr, "qdel: cannot connect to default server (errno=%d) %s\n", pbs_errno, pbs_strerror(pbs_errno)); return; } p_status = pbs_selstat(connect, p_atropl, NULL); if (p_status == NULL) { fprintf(stderr, "qdel: cannot find any jobs to delete\n"); } for (p = p_status;p != NULL;p = p->next) { jobid = p->name; a = p->attribs; while (a != NULL) { if ((a->name != NULL) && (!strcmp(a->name, ATTR_state))) { state = a->value; break; } a = a->next; } /* * Don't bother deleting jobs that are 'C'omplete or 'E'xiting * Unless we are Purging, then try 'C'ompleted jobs as well */ if (((strstr(extend,DELPURGE) != NULL) && (*state != 'E')) || ((*state != 'E') && (*state != 'C'))) { retries = 0; redo: stat = pbs_deljob(connect, jobid, extend); /* * if MOM is too slow to respond, we will retry a few times before * before giving up */ if (stat && (pbs_errno == PBSE_NORELYMOM) && (retries < 3)) { sleep(1); retries++; goto redo; } if (stat && (pbs_errno != PBSE_UNKJOBID) && (pbs_errno != PBSE_BADSTATE)) { printf("Deletion Error: %d (%s)\n", pbs_errno, pbs_strerror(pbs_errno)); prt_job_err("qdel", connect, jobid); } } } pbs_disconnect(connect); return; }
int main( int argc, char **argv) /* qhold */ { int c; int errflg = 0; int any_failed = 0; int u_cnt, o_cnt, s_cnt; char *pc; char extend[1024]; char job_id[PBS_MAXCLTJOBID]; /* from the command line */ char job_id_out[PBS_MAXCLTJOBID]; char server_out[MAXSERVERNAME] = ""; char rmt_server[MAXSERVERNAME] = ""; #define MAX_HOLD_TYPE_LEN 32 char hold_type[MAX_HOLD_TYPE_LEN+1]; #define GETOPT_ARGS "h:t:" hold_type[0] = '\0'; extend[0] = '\0'; while ((c = getopt(argc, argv, GETOPT_ARGS)) != EOF) switch (c) { case 'h': while (isspace((int)*optarg)) optarg++; if (strlen(optarg) == 0) { fprintf(stderr, "qhold: illegal -h value\n"); errflg++; break; } pc = optarg; u_cnt = o_cnt = s_cnt = 0; while (*pc) { if (*pc == 'u') u_cnt++; else if (*pc == 'o') o_cnt++; else if (*pc == 's') s_cnt++; else { fprintf(stderr, "qhold: illegal -h value\n"); errflg++; break; } pc++; } strcpy(hold_type, optarg); break; case 't': pc = optarg; if (strlen(pc) == 0) { fprintf(stderr, "qhold: illegal -t value (array range cannot be zero length)\n"); errflg++; break; } snprintf(extend,sizeof(extend),"%s%s", ARRAY_RANGE, pc); break; default : errflg++; } if (errflg || optind >= argc) { static char usage[] = "usage: qhold [-h hold_list] [-t array_range] job_identifier...\n"; fprintf(stderr,"%s", usage); exit(2); } for (; optind < argc; optind++) { int connect; int stat = 0; int located = FALSE; std::string server_name; std::vector<std::string> id_list; snprintf(job_id, sizeof(job_id), "%s", argv[optind]); if (get_server_and_job_ids(job_id, id_list, server_name)) { fprintf(stderr, "qhold: illegally formed job identifier: %s\n", job_id); any_failed = 1; continue; } cnt: connect = cnt2server(server_name.c_str()); if (connect <= 0) { any_failed = -1 * connect; if (server_out[0] != 0) fprintf(stderr, "qhold: cannot connect to server %s (errno=%d) %s\n", server_out, any_failed, pbs_strerror(any_failed)); else fprintf(stderr, "qhold: cannot connect to server %s (errno=%d) %s\n", pbs_server, any_failed, pbs_strerror(any_failed)); continue; } for (size_t i = 0; i < id_list.size(); i++) { snprintf(job_id_out, sizeof(job_id_out), "%s", id_list[i].c_str()); if (extend[0] == '\0') stat = pbs_holdjob_err(connect, job_id_out, hold_type, NULL, &any_failed); else stat = pbs_holdjob_err(connect, job_id_out, hold_type, extend, &any_failed); if (any_failed != PBSE_UNKJOBID) break; } if (stat && (any_failed != PBSE_UNKJOBID)) { if (!located) { located = TRUE; if (locate_job(job_id_out, server_out, rmt_server)) { pbs_disconnect(connect); strcpy(server_out, rmt_server); goto cnt; } } prt_job_err("qhold", connect, job_id_out); } pbs_disconnect(connect); } exit(any_failed); }
int main(int argc, char **argv, char **envp) /* qrls */ { int c; int errflg=0; int any_failed=0; int u_cnt, o_cnt, s_cnt, n_cnt, p_cnt; char *pc; char job_id[PBS_MAXCLTJOBID]; /* from the command line */ char job_id_out[PBS_MAXCLTJOBID]; char server_out[MAXSERVERNAME]; char rmt_server[MAXSERVERNAME]; #define MAX_HOLD_TYPE_LEN 32 char hold_type[MAX_HOLD_TYPE_LEN+1]; #define GETOPT_ARGS "h:" /*test for real deal or just version and exit*/ execution_mode(argc, argv); #ifdef WIN32 winsock_init(); #endif hold_type[0]='\0'; while ((c = getopt(argc, argv, GETOPT_ARGS)) != EOF) switch (c) { case 'h': while (isspace((int)*optarg)) optarg++; if (strlen(optarg) == 0) { fprintf(stderr, "qrls: illegal -h value\n"); errflg++; break; } pc = optarg; u_cnt = o_cnt = s_cnt = n_cnt = p_cnt = 0; while (*pc) { if (*pc == 'u') u_cnt++; else if (*pc == 'o') o_cnt++; else if (*pc == 's') s_cnt++; else if (*pc == 'p') p_cnt++; else if (*pc == 'n') n_cnt++; else { fprintf(stderr, "qrls: illegal -h value\n"); errflg++; break; } pc++; } if (n_cnt && (u_cnt + o_cnt + s_cnt + p_cnt)) { fprintf(stderr, "qrls: illegal -h value\n"); errflg++; break; } strcpy(hold_type, optarg); break; default : errflg++; } if (errflg || optind >= argc) { static char usage[]="usage: qrls [-h hold_list] job_identifier...\n"; static char usag2[]=" qrls --version\n"; fprintf(stderr, "%s", usage); fprintf(stderr, "%s", usag2); exit(2); } /*perform needed security library initializations (including none)*/ if (CS_client_init() != CS_SUCCESS) { fprintf(stderr, "qrls: unable to initialize security library.\n"); exit(1); } for (; optind < argc; optind++) { int connect; int stat=0; int located = FALSE; strcpy(job_id, argv[optind]); if (get_server(job_id, job_id_out, server_out)) { fprintf(stderr, "qrls: illegally formed job identifier: %s\n", job_id); any_failed = 1; continue; } cnt: connect = cnt2server(server_out); if (connect <= 0) { fprintf(stderr, "qrls: cannot connect to server %s (errno=%d)\n", pbs_server, pbs_errno); any_failed = pbs_errno; continue; } stat = pbs_rlsjob(connect, job_id_out, hold_type, NULL); if (stat && (pbs_errno != PBSE_UNKJOBID)) { prt_job_err("qrls", connect, job_id_out); any_failed = pbs_errno; } else if (stat && (pbs_errno == PBSE_UNKJOBID) && !located) { located = TRUE; if (locate_job(job_id_out, server_out, rmt_server)) { pbs_disconnect(connect); strcpy(server_out, rmt_server); goto cnt; } prt_job_err("qrls", connect, job_id_out); any_failed = pbs_errno; } pbs_disconnect(connect); } /*cleanup security library initializations before exiting*/ CS_close_app(); exit(any_failed); }
int main(int argc, char **argv, char **envp) /* pbs_release_nodes */ { int c; int errflg=0; int any_failed=0; char job_id[PBS_MAXCLTJOBID]; /* from the command line */ char job_id_out[PBS_MAXCLTJOBID]; char server_out[MAXSERVERNAME]; char rmt_server[MAXSERVERNAME]; int len; char *node_list = NULL; int connect; int stat=0; int k; int all_opt = 0; #define GETOPT_ARGS "j:a" /*test for real deal or just version and exit*/ execution_mode(argc, argv); #ifdef WIN32 winsock_init(); #endif job_id[0] = '\0'; while ((c = getopt(argc, argv, GETOPT_ARGS)) != EOF) { switch (c) { case 'j': strncpy(job_id, optarg, PBS_MAXCLTJOBID); job_id[PBS_MAXCLTJOBID-1] = '\0'; break; case 'a': all_opt = 1; break; default : errflg++; } } if (job_id[0] == '\0') { char *jid; jid = getenv("PBS_JOBID"); strncpy(job_id, jid?jid:"", PBS_MAXCLTJOBID); job_id[PBS_MAXCLTJOBID-1] = '\0'; } if (errflg || ((optind == argc) && !all_opt) || ((optind != argc) && all_opt) ) { fprintf(stderr, USAGE); fprintf(stderr, USAGE2); fprintf(stderr, USAGE3); exit(2); } if (job_id[0] == '\0') { fprintf(stderr, "pbs_release_nodes: No jobid given\n"); exit(2); } /*perform needed security library initializations (including none)*/ if (CS_client_init() != CS_SUCCESS) { fprintf(stderr, "pbs_release_nodes: unable to initialize security library.\n"); exit(2); } len = 0; for (k = optind; k < argc; k++) { len += (strlen(argv[k]) + 1); /* +1 for space */ } node_list = (char *)malloc(len + 1); if (node_list == NULL) { fprintf(stderr, "failed to malloc to store data (error %d)", errno); exit(2); } node_list[0] = '\0'; for (k = optind; k < argc; k++) { if (k != optind) strcat(node_list, "+"); strcat(node_list, argv[k]); } if (get_server(job_id, job_id_out, server_out)) { fprintf(stderr, "pbs_release_nodes: illegally formed job identifier: %s\n", job_id); free(node_list); exit(2); } pbs_errno = 0; stat = 0; while(1) { connect = cnt2server(server_out); if (connect <= 0) { fprintf(stderr, "pbs_release_nodes: cannot connect to server %s (errno=%d)\n", pbs_server, pbs_errno); break; } stat = pbs_relnodesjob(connect, job_id_out, node_list, NULL); if (stat && (pbs_errno == PBSE_UNKJOBID)) { if (locate_job(job_id_out, server_out, rmt_server)) { /* * job located at a different server * retry connect on the new server */ pbs_disconnect(connect); strcpy(server_out, rmt_server); } else { prt_job_err("pbs_release_nodes", connect, job_id_out); break; } } else { char *info_msg; if (stat && (pbs_errno != PBSE_UNKJOBID)) { prt_job_err("pbs_release_nodes", connect, ""); } else if ((info_msg = pbs_geterrmsg(connect)) != NULL) { /* print potential warning message */ printf("pbs_release_nodes: %s\n", info_msg); } break; } } any_failed = pbs_errno; pbs_disconnect(connect); /*cleanup security library initializations before exiting*/ CS_close_app(); exit(any_failed); }
int main( int argc, /* I */ char **argv) /* I */ { struct batch_status *bstatus = NULL; int con; char *specified_server = NULL; int errflg = 0; int i; extern char *optarg; extern int optind; char **pa; struct batch_status *pbstat; int flag = ALLI; char *note = NULL; enum note_flags note_flag = unused; char **nodeargs = NULL; int lindex; enum NStateEnum ListType = tnsNONE; /* get default server, may be changed by -s option */ progname = strdup(argv[0]); while ((i = getopt(argc, argv, "acdlopqrs:x-:N:n")) != EOF) { switch (i) { case 'a': flag = ALLI; break; case 'c': flag = CLEAR; break; case 'd': flag = DIAG; break; case 'l': flag = LIST; break; case 'o': flag = OFFLINE; break; case 'p': flag = PURGE; break; case 'q': quiet = 1; break; case 'r': flag = RESET; break; case 's': specified_server = optarg; break; case 'x': flag = ALLI; DisplayXML = TRUE; break; case 'N': /* preserve any previous option other than the default, * to allow -N to be combined with -o, -c, etc */ if (flag == ALLI) flag = NOTE; note = strdup(optarg); if (note == NULL) { perror("Error: strdup() returned NULL"); exit(1); } note_flag = set; /* -N n is the same as -N "" -- it clears the note */ if (!strcmp(note, "n")) *note = '\0'; if (strlen(note) > MAX_NOTE) { fprintf(stderr, "Warning: note exceeds length limit (%d) - server may reject it...\n", MAX_NOTE); } if (strchr(note, '\n') != NULL) fprintf(stderr, "Warning: note contains a newline - server may reject it...\n"); break; case 'n': note_flag = list; break; case '-': if ((optarg != NULL) && !strcmp(optarg, "version")) { fprintf(stderr, "Version: %s\nRevision: %s\n", PACKAGE_VERSION, SVN_VERSION); exit(0); } else if ((optarg != NULL) && !strcmp(optarg, "about")) { TShowAbout_exit(); } errflg = 1; break; case '?': default: errflg = 1; break; } /* END switch (i) */ } /* END while (i = getopt()) */ if ((note_flag == list) && (flag != LIST)) { fprintf(stderr, "Error: -n requires -l\n"); errflg = 1; } for (pa = argv + optind;*pa;pa++) { if (strlen(*pa) == 0) { errflg = 1; } } if (errflg != 0) { if (!quiet) { fprintf(stderr, "usage:\t%s [-{c|d|l|o|p|r}] [-s server] [-n] [-N \"note\"] [-q] node ...\n", progname); fprintf(stderr, "\t%s [-{a|x}] [-s server] [-q] [node]\n", progname); } exit(1); } con = cnt2server(specified_server); if (con <= 0) { if (!quiet) { fprintf(stderr, "%s: cannot connect to server %s, error=%d (%s)\n", progname, (specified_server) ? specified_server : pbs_default(), con * -1, pbs_strerror(con * -1)); } exit(1); } /* if flag is ALLI, LIST, get status of all nodes */ if ((flag == ALLI) || (flag == LIST) || (flag == DIAG)) { if ((flag == ALLI) || (flag == LIST) || (flag == DIAG)) { if (flag == LIST) { /* allow state specification */ if (argv[optind] != NULL) { for (lindex = 1;lindex < tnsLAST;lindex++) { if (!strcasecmp(NState[lindex], argv[optind])) { ListType = lindex; optind++; break; } } } } /* allow node specification (if none, then create an empty list) */ if (argv[optind] != NULL) { nodeargs = argv + optind; } else { nodeargs = calloc(2, sizeof(char **)); nodeargs[0] = strdup(""); nodeargs[1] = '\0'; } } } if ((note_flag == set) && (note != NULL)) { /* set the note attrib string on specified nodes */ for (pa = argv + optind;*pa;pa++) { set_note(con, *pa, note); } } switch (flag) { case DIAG: /* NYI */ break; case CLEAR: /* clear OFFLINE from specified nodes */ for (pa = argv + optind;*pa;pa++) { marknode(con, *pa, ND_offline, DECR, NULL, DECR); } break; case RESET: /* clear OFFLINE, add DOWN to specified nodes */ for (pa = argv + optind;*pa;pa++) { marknode(con, *pa, ND_offline, DECR, ND_down, INCR); } break; case OFFLINE: /* set OFFLINE on specified nodes */ for (pa = argv + optind;*pa;pa++) { marknode(con, *pa, ND_offline, INCR, NULL, INCR); } break; case PURGE: /* remove node record */ /* NYI */ break; case ALLI: if (DisplayXML == TRUE) { char *tmpBuf = NULL, *tail = NULL; int bufsize; mxml_t *DE; DE = NULL; MXMLCreateE(&DE, "Data"); for (lindex = 0;nodeargs[lindex] != '\0';lindex++) { bstatus = statnode(con, nodeargs[lindex]); for (pbstat = bstatus;pbstat;pbstat = pbstat->next) { addxmlnode(DE, pbstat); } /* END for (pbstat) */ pbs_statfree(pbstat); } MXMLToXString(DE, &tmpBuf, &bufsize, INT_MAX, &tail, TRUE); MXMLDestroyE(&DE); fprintf(stdout, "%s\n", tmpBuf); } else { for (lindex = 0;nodeargs[lindex] != '\0';lindex++) { bstatus = statnode(con, nodeargs[lindex]); for (pbstat = bstatus;pbstat;pbstat = pbstat->next) { printf("%s\n", pbstat->name); prt_node_attr(pbstat, 0); putchar('\n'); } /* END for (bpstat) */ pbs_statfree(pbstat); } } break; case LIST: /* list any node that is DOWN, OFFLINE, or UNKNOWN */ for (lindex = 0;nodeargs[lindex] != '\0';lindex++) { bstatus = statnode(con, nodeargs[lindex]); for (pbstat = bstatus;pbstat != NULL;pbstat = pbstat->next) { char *S; S = get_nstate(pbstat); if (filterbystate(pbstat, ListType, S)) { char *n; if ((note_flag == list) && (n = get_note(pbstat))) { printf("%-20.20s %-26.26s %s\n", pbstat->name, S, n); } else { printf("%-20.20s %s\n", pbstat->name, S); } } } pbs_statfree(pbstat); } break; } /* END switch (flag) */ pbs_disconnect(con); return(0); } /* END main() */
int main(int argc, char **argv, char **envp) { char job_id1[PBS_MAXCLTJOBID+1]; /* from the command line */ char job_id2[PBS_MAXCLTJOBID+1]; /* from the command line */ char job_id1_out[PBS_MAXCLTJOBID+1]; char job_id2_out[PBS_MAXCLTJOBID+1]; char *pn; int port1 = 0; int port2 = 0; char server_out1[MAXSERVERNAME+1]; char server_out2[MAXSERVERNAME+1]; char svrtmp[MAXSERVERNAME+1]; int connect; int stat=0; int rc = 0; extern char *PBS_get_server(); /*test for real deal or just version and exit*/ PRINT_VERSION_AND_EXIT(argc, argv); #ifdef WIN32 if (winsock_init()) { return 1; } #endif if (argc != 3) { static char usage[]="usage: qorder job_identifier job_identifier\n"; static char usag2[]=" qorder --version\n"; fprintf(stderr, "%s", usage); fprintf(stderr, "%s", usag2); exit(2); } strcpy(job_id1, argv[1]); strcpy(job_id2, argv[2]); svrtmp[0] = '\0'; if (get_server(job_id1, job_id1_out, svrtmp)) { fprintf(stderr, "qorder: illegally formed job identifier: %s\n", job_id1); exit(1); } if (*svrtmp == '\0') { if ((pn = pbs_default()) != NULL) { (void)strcpy(svrtmp, pn); } else { fprintf(stderr, "qorder: could not get default server: %s\n", job_id1); exit(1); } } if ((pn = strchr(svrtmp, (int)':')) != 0) { *pn = '\0'; port1 = atoi(pn+1); } if (get_fullhostname(svrtmp, server_out1, MAXSERVERNAME) != 0) { fprintf(stderr, "qorder: invalid server name: %s\n", job_id1); exit(1); } svrtmp[0] = '\0'; if (get_server(job_id2, job_id2_out, svrtmp)) { fprintf(stderr, "qorder: illegally formed job identifier: %s\n", job_id2); exit(1); } if (*svrtmp == '\0') { if ((pn = pbs_default()) != NULL) { (void)strcpy(svrtmp, pn); } else { fprintf(stderr, "qorder: could not get default server: %s\n", job_id1); exit(1); } } if ((pn = strchr(svrtmp, (int)':')) != 0) { *pn = '\0'; port2 = atoi(pn+1); } if (get_fullhostname(svrtmp, server_out2, MAXSERVERNAME) != 0) { fprintf(stderr, "qorder: invalid server name: %s\n", job_id2); exit(1); } if ((strcmp(server_out1, server_out2) != 0) || (port1 != port2)) { fprintf(stderr, "qorder: both jobs ids must specify the same server\n"); exit(1); } if (pn) *pn = ':'; /* restore : if it was present */ /*perform needed security library initializations (including none)*/ if (CS_client_init() != CS_SUCCESS) { fprintf(stderr, "qorder: unable to initialize security library.\n"); exit(1); } connect = cnt2server(svrtmp); if (connect <= 0) { fprintf(stderr, "qorder: cannot connect to server %s (errno=%d)\n", pbs_server, pbs_errno); exit(1);; } stat = pbs_orderjob(connect, job_id1_out, job_id2_out, NULL); if (stat) { char job_id_both[PBS_MAXCLTJOBID + PBS_MAXCLTJOBID + 3]; strcpy(job_id_both, job_id1_out); strcat(job_id_both, " or "); strcat(job_id_both, job_id2_out); prt_job_err("qorder", connect, job_id_both); rc = pbs_errno; } pbs_disconnect(connect); /*cleanup security library initializations before exiting*/ CS_close_app(); exit(rc); }
int main(int argc, char **argv) /* qchkpt */ { int any_failed = 0; static char usage[] = "Usage: qchkpt job_id ...\n"; char job_id[PBS_MAXCLTJOBID]; /* from the command line */ char job_id_out[PBS_MAXCLTJOBID] = ""; char server_out[MAXSERVERNAME] = ""; char rmt_server[MAXSERVERNAME] = ""; if (argc == 1) { fprintf(stderr, "%s", usage); return 1; } initialize_network_info(); for (optind = 1; optind < argc; optind++) { int connect; int stat = 0; int located = FALSE; snprintf(job_id, sizeof(job_id), "%s", argv[optind]); if (get_server(job_id, job_id_out, sizeof(job_id_out), server_out, sizeof(server_out))) { fprintf(stderr, "qchkpt: illegally formed job identifier: %s\n", job_id); any_failed = 1; continue; } cnt: connect = cnt2server(server_out); if (connect <= 0) { any_failed = -1 * connect; if (server_out[0] != '\0') fprintf(stderr, "qchkpt: cannot connect to server %s (errno=%d)\n", server_out, any_failed); else fprintf(stderr, "qchkpt: cannot connect to server %s (errno=%d)\n", pbs_server, any_failed); continue; } stat = pbs_checkpointjob_err(connect, job_id_out, NULL, &any_failed); if (stat && (any_failed != PBSE_UNKJOBID)) { prt_job_err("qchkpt", connect, job_id_out); } else if (stat && (any_failed == PBSE_UNKJOBID) && !located) { located = TRUE; if (locate_job(job_id_out, server_out, rmt_server)) { pbs_disconnect(connect); strcpy(server_out, rmt_server); goto cnt; } prt_job_err("qchkpt", connect, job_id_out); } pbs_disconnect(connect); } return any_failed; }
int main(int argc, char **argv, char **envp) /* qmsg */ { int c; int to_file; int errflg=0; int any_failed=0; char job_id[PBS_MAXCLTJOBID]; /* from the command line */ char job_id_out[PBS_MAXCLTJOBID]; char server_out[MAXSERVERNAME]; char rmt_server[MAXSERVERNAME]; #define MAX_MSG_STRING_LEN 256 char msg_string[MAX_MSG_STRING_LEN+1]; #define GETOPT_ARGS "EO" /*test for real deal or just version and exit*/ execution_mode(argc, argv); #ifdef WIN32 winsock_init(); #endif msg_string[0]='\0'; to_file = 0; while ((c = getopt(argc, argv, GETOPT_ARGS)) != EOF) switch (c) { case 'E': to_file |= MSG_ERR; break; case 'O': to_file |= MSG_OUT; break; default : errflg++; } if (to_file == 0) to_file = MSG_ERR; /* default */ if (errflg || ((optind+1) >= argc)) { static char usage[]= "usage: qmsg [-O] [-E] msg_string job_identifier...\n"; static char usag2[]= " qmsg --version\n"; fprintf(stderr, "%s", usage); fprintf(stderr, "%s", usag2); exit(2); } strcpy(msg_string, argv[optind]); /*perform needed security library initializations (including none)*/ if (CS_client_init() != CS_SUCCESS) { fprintf(stderr, "qmsg: unable to initialize security library.\n"); exit(2); } for (optind++; optind < argc; optind++) { int connect; int stat=0; int located = FALSE; strcpy(job_id, argv[optind]); if (get_server(job_id, job_id_out, server_out)) { fprintf(stderr, "qmsg: illegally formed job identifier: %s\n", job_id); any_failed = 1; continue; } cnt: connect = cnt2server(server_out); if (connect <= 0) { fprintf(stderr, "qmsg: cannot connect to server %s (errno=%d)\n", pbs_server, pbs_errno); any_failed = pbs_errno; continue; } stat = pbs_msgjob(connect, job_id_out, to_file, msg_string, NULL); if (stat && (pbs_errno != PBSE_UNKJOBID)) { prt_job_err("qmsg", connect, job_id_out); any_failed = pbs_errno; } else if (stat && (pbs_errno == PBSE_UNKJOBID) && !located) { located = TRUE; if (locate_job(job_id_out, server_out, rmt_server)) { pbs_disconnect(connect); strcpy(server_out, rmt_server); goto cnt; } prt_job_err("qmsg", connect, job_id_out); any_failed = pbs_errno; } pbs_disconnect(connect); } /*cleanup security library initializations before exiting*/ CS_close_app(); exit(any_failed); }