/* * scontrol_print_topo - print the switch topology above the specified node * IN node_name - NULL to print all topology information */ extern void scontrol_print_topo (char *node_list) { static topo_info_response_msg_t *topo_info_msg = NULL; int i, match, match_cnt = 0; hostset_t hs; if ((topo_info_msg == NULL) && slurm_load_topo(&topo_info_msg)) { slurm_perror ("slurm_load_topo error"); return; } if ((node_list == NULL) || (node_list[0] == '\0')) { slurm_print_topo_info_msg(stdout, topo_info_msg, one_liner); return; } /* Search for matching switch name */ for (i=0; i<topo_info_msg->record_count; i++) { if (strcmp(topo_info_msg->topo_array[i].name, node_list)) continue; slurm_print_topo_record(stdout, &topo_info_msg->topo_array[i], one_liner); return; } /* Search for matching node name */ for (i=0; i<topo_info_msg->record_count; i++) { if ((topo_info_msg->topo_array[i].nodes == NULL) || (topo_info_msg->topo_array[i].nodes[0] == '\0')) continue; hs = hostset_create(topo_info_msg->topo_array[i].nodes); if (hs == NULL) fatal("hostset_create: memory allocation failure"); match = hostset_within(hs, node_list); hostset_destroy(hs); if (!match) continue; match_cnt++; slurm_print_topo_record(stdout, &topo_info_msg->topo_array[i], one_liner); } if (match_cnt == 0) { error("Topology information contains no switch or " "node named %s", node_list); } }
/* * slurm_print_topo_info_msg - output information about all switch topology * configuration information based upon message as loaded using * slurm_load_topo * IN out - file to write to * IN topo_info_msg_ptr - switch topology information message pointer * IN one_liner - print as a single line if not zero */ extern void slurm_print_topo_info_msg( FILE * out, topo_info_response_msg_t *topo_info_msg_ptr, int one_liner) { int i; topo_info_t *topo_ptr = topo_info_msg_ptr->topo_array; if (topo_info_msg_ptr->record_count == 0) { error("No topology information available"); return; } for (i = 0; i < topo_info_msg_ptr->record_count; i++) slurm_print_topo_record(out, &topo_ptr[i], one_liner); }