/* * slurm_print_job_step_info_msg - output information about all Slurm * job steps based upon message as loaded using slurm_get_job_steps * IN out - file to write to * IN job_step_info_msg_ptr - job step information message pointer * IN one_liner - print as a single line if true */ void slurm_print_job_step_info_msg ( FILE* out, job_step_info_response_msg_t * job_step_info_msg_ptr, int one_liner ) { int i; job_step_info_t *job_step_ptr = job_step_info_msg_ptr->job_steps ; char time_str[32]; slurm_make_time_str ((time_t *)&job_step_info_msg_ptr->last_update, time_str, sizeof(time_str)); fprintf( out, "Job step data as of %s, record count %d\n", time_str, job_step_info_msg_ptr->job_step_count); for (i = 0; i < job_step_info_msg_ptr-> job_step_count; i++) { slurm_print_job_step_info ( out, & job_step_ptr[i], one_liner ) ; } }
/* * scontrol_print_step - print the specified job step's information * IN job_step_id_str - job step's id or NULL to print information * about all job steps */ extern void scontrol_print_step (char *job_step_id_str) { int error_code, i, print_cnt = 0; uint32_t job_id = NO_VAL, step_id = NO_VAL; uint16_t array_id = (uint16_t) NO_VAL; char *next_str; job_step_info_response_msg_t *job_step_info_ptr; job_step_info_t * job_step_ptr; static uint32_t last_job_id = 0, last_array_id, last_step_id = 0; static job_step_info_response_msg_t *old_job_step_info_ptr = NULL; static uint16_t last_show_flags = 0xffff; uint16_t show_flags = 0; if (job_step_id_str) { job_id = (uint32_t) strtol (job_step_id_str, &next_str, 10); if (next_str[0] == '_') array_id = (uint16_t) strtol(next_str+1, &next_str, 10); if (next_str[0] == '.') step_id = (uint32_t) strtol (next_str+1, NULL, 10); } if (all_flag) show_flags |= SHOW_ALL; if ((old_job_step_info_ptr) && (last_job_id == job_id) && (last_array_id == array_id) && (last_step_id == step_id)) { if (last_show_flags != show_flags) old_job_step_info_ptr->last_update = (time_t) 0; error_code = slurm_get_job_steps ( old_job_step_info_ptr->last_update, job_id, step_id, &job_step_info_ptr, show_flags); if (error_code == SLURM_SUCCESS) slurm_free_job_step_info_response_msg ( old_job_step_info_ptr); else if (slurm_get_errno () == SLURM_NO_CHANGE_IN_DATA) { job_step_info_ptr = old_job_step_info_ptr; error_code = SLURM_SUCCESS; if (quiet_flag == -1) printf ("slurm_get_job_steps no change in data\n"); } } else { if (old_job_step_info_ptr) { slurm_free_job_step_info_response_msg ( old_job_step_info_ptr); old_job_step_info_ptr = NULL; } error_code = slurm_get_job_steps ( (time_t) 0, job_id, step_id, &job_step_info_ptr, show_flags); } if (error_code) { exit_code = 1; if (quiet_flag != 1) slurm_perror ("slurm_get_job_steps error"); return; } old_job_step_info_ptr = job_step_info_ptr; last_show_flags = show_flags; last_job_id = job_id; last_step_id = step_id; if (quiet_flag == -1) { char time_str[32]; slurm_make_time_str ((time_t *)&job_step_info_ptr->last_update, time_str, sizeof(time_str)); printf ("last_update_time=%s, records=%d\n", time_str, job_step_info_ptr->job_step_count); } job_step_ptr = job_step_info_ptr->job_steps ; for (i = 0, job_step_ptr = job_step_info_ptr->job_steps; i < job_step_info_ptr->job_step_count; i++, job_step_ptr++) { if ((array_id != (uint16_t) NO_VAL) && (array_id != job_step_ptr->array_task_id)) continue; slurm_print_job_step_info(stdout, job_step_ptr, one_liner); print_cnt++; } if (print_cnt == 0) { if (job_step_id_str) { exit_code = 1; if (quiet_flag != 1) { if (array_id == (uint16_t) NO_VAL) { printf ("Job step %u.%u not found\n", job_id, step_id); } else { printf ("Job step %u_%u.%u not found\n", job_id, array_id, step_id); } } } else if (quiet_flag != 1) printf ("No job steps in the system\n"); } }