static int _sort_job_by_state_compact(void *void1, void *void2) { int diff; job_info_t *job1; job_info_t *job2; _get_job_info_from_void(&job1, &job2, void1, void2); diff = strcmp(job_state_string_compact(job1->job_state), job_state_string_compact(job2->job_state)); if (reverse_order) diff = -diff; return diff; }
int _print_job_job_state_compact(job_info_t * job, int width, bool right, char* suffix) { if (job == NULL) /* Print the Header instead */ _print_str("ST", width, right, true); else _print_str(job_state_string_compact(job->job_state), width, right, true); if (suffix) printf("%s", suffix); return SLURM_SUCCESS; }
/* * Print information about a job to stdout */ void print_job (job_info_t * job_ptr, char * user) { char * user_name = uid_to_string((uid_t)job_ptr->user_id); if (user == NULL || strcmp(user, user_name) == 0) { uint32_t job_id = job_ptr->job_id; char * job_state = job_state_string_compact(job_ptr->job_state); char * partition = job_ptr->partition; char * batch_host = (job_ptr->batch_host == NULL) ? "N/A" : job_ptr->batch_host; char req_cores[128]; char submit_time_str[32]; char start_time_str[32]; _sprint_range(req_cores, sizeof(req_cores), job_ptr->num_cpus, job_ptr->max_cpus); make_time_str((time_t *)&job_ptr->submit_time, submit_time_str, sizeof(submit_time_str)); make_time_str((time_t *)&job_ptr->start_time, start_time_str, sizeof(start_time_str)); printf("%u|%s|%s|%s|%s|%s|%s|%s\n", job_id, job_state, user_name, partition, req_cores, batch_host, submit_time_str, start_time_str); } }
static int _print_text_job(job_info_t * job_ptr) { time_t time_diff; int printed = 0; int tempxcord; int prefixlen = 0; int i = 0; int width = 0; char time_buf[20]; char tmp_cnt[8]; uint32_t node_cnt = 0; char *uname; node_cnt = job_ptr->num_nodes; if ((node_cnt == 0) || (node_cnt == NO_VAL)) node_cnt = job_ptr->num_nodes; snprintf(tmp_cnt, sizeof(tmp_cnt), "%d", node_cnt); if (!params.commandline) { mvwprintw(text_win, main_ycord, main_xcord, "%c", job_ptr->num_cpus); main_xcord += 3; if (job_ptr->array_task_str) { mvwprintw(text_win, main_ycord, main_xcord, "%u_[%s]", job_ptr->array_job_id, job_ptr->array_task_str); } else if (job_ptr->array_task_id != NO_VAL) { mvwprintw(text_win, main_ycord, main_xcord, "%u_%u (%u)", job_ptr->array_job_id, job_ptr->array_task_id, job_ptr->job_id); } else if (job_ptr->pack_job_id) { mvwprintw(text_win, main_ycord, main_xcord, "%u+%u ", job_ptr->pack_job_id, job_ptr->pack_job_offset); } else { mvwprintw(text_win, main_ycord, main_xcord, "%u", job_ptr->job_id); } main_xcord += 19; mvwprintw(text_win, main_ycord, main_xcord, "%.10s", job_ptr->partition); main_xcord += 10; if (params.cluster_flags & CLUSTER_FLAG_CRAY_A) { mvwprintw(text_win, main_ycord, main_xcord, "%.16s", select_g_select_jobinfo_sprint( job_ptr->select_jobinfo, time_buf, sizeof(time_buf), SELECT_PRINT_DATA)); main_xcord += 18; } uname = uid_to_string_cached((uid_t) job_ptr->user_id); mvwprintw(text_win, main_ycord, main_xcord, "%.8s", uname); main_xcord += 9; mvwprintw(text_win, main_ycord, main_xcord, "%.9s", job_ptr->name); main_xcord += 10; mvwprintw(text_win, main_ycord, main_xcord, "%.2s", job_state_string_compact(job_ptr->job_state)); main_xcord += 2; if (!xstrcasecmp(job_ptr->nodes,"waiting...")) { sprintf(time_buf,"00:00:00"); } else { time_diff = (time_t) _job_time_used(job_ptr); secs2time_str(time_diff, time_buf, sizeof(time_buf)); } width = strlen(time_buf); mvwprintw(text_win, main_ycord, main_xcord + (10 - width), "%s", time_buf); main_xcord += 11; mvwprintw(text_win, main_ycord, main_xcord, "%5s", tmp_cnt); main_xcord += 6; tempxcord = main_xcord; i=0; while (job_ptr->nodes[i] != '\0') { if ((printed = mvwaddch(text_win, main_ycord, main_xcord, job_ptr->nodes[i])) < 0) { return printed; } main_xcord++; width = getmaxx(text_win) - 1 - main_xcord; if (job_ptr->nodes[i] == '[') prefixlen = i + 1; else if (job_ptr->nodes[i] == ',' && (width - 9) <= 0) { main_ycord++; main_xcord = tempxcord + prefixlen; } i++; } main_xcord = 1; main_ycord++; } else { if (job_ptr->pack_job_id) { printf("%8u+%u ", job_ptr->pack_job_id, job_ptr->pack_job_offset); } else printf("%8u ", job_ptr->job_id); printf("%9.9s ", job_ptr->partition); if (params.cluster_flags & CLUSTER_FLAG_CRAY_A) printf("%16.16s ", select_g_select_jobinfo_sprint( job_ptr->select_jobinfo, time_buf, sizeof(time_buf), SELECT_PRINT_DATA)); uname = uid_to_string_cached((uid_t) job_ptr->user_id); printf("%8.8s ", uname); printf("%6.6s ", job_ptr->name); printf("%2.2s ", job_state_string_compact(job_ptr->job_state)); if (!xstrcasecmp(job_ptr->nodes,"waiting...")) { sprintf(time_buf,"00:00:00"); } else { time_diff = (time_t) _job_time_used(job_ptr); secs2time_str(time_diff, time_buf, sizeof(time_buf)); } printf("%10.10s ", time_buf); printf("%5s ", tmp_cnt); printf("%s", job_ptr->nodes); printf("\n"); } return printed; }