extern void popup_all_resv(GtkTreeModel *model, GtkTreeIter *iter, int id) { char *name = NULL; char title[100]; ListIterator itr = NULL; popup_info_t *popup_win = NULL; GError *error = NULL; gtk_tree_model_get(model, iter, SORTID_NAME, &name, -1); switch(id) { case PART_PAGE: snprintf(title, 100, "Partition(s) with reservation %s", name); break; case JOB_PAGE: snprintf(title, 100, "Job(s) in reservation %s", name); break; case NODE_PAGE: if (cluster_flags & CLUSTER_FLAG_BG) snprintf(title, 100, "Midplane(s) in reservation %s", name); else snprintf(title, 100, "Node(s) in reservation %s ", name); break; case BLOCK_PAGE: snprintf(title, 100, "Block(s) in reservation %s", name); break; case SUBMIT_PAGE: snprintf(title, 100, "Submit job in reservation %s", name); break; case INFO_PAGE: snprintf(title, 100, "Full info for reservation %s", name); break; default: g_print("resv got %d\n", id); } itr = list_iterator_create(popup_list); while ((popup_win = list_next(itr))) { if (popup_win->spec_info) if (!strcmp(popup_win->spec_info->title, title)) { break; } } list_iterator_destroy(itr); if (!popup_win) { if (id == INFO_PAGE) popup_win = create_popup_info(id, RESV_PAGE, title); else popup_win = create_popup_info(RESV_PAGE, id, title); } else { g_free(name); gtk_window_present(GTK_WINDOW(popup_win->popup)); return; } /* Pass the model and the structs from the iter so we can always get the current node_inx. */ popup_win->model = model; popup_win->iter = *iter; popup_win->node_inx_id = SORTID_NODE_INX; switch(id) { case JOB_PAGE: case INFO_PAGE: popup_win->spec_info->search_info->gchar_data = name; //specific_info_job(popup_win); break; case BLOCK_PAGE: case NODE_PAGE: case PART_PAGE: g_free(name); gtk_tree_model_get(model, iter, SORTID_NODELIST, &name, -1); popup_win->spec_info->search_info->gchar_data = name; popup_win->spec_info->search_info->search_type = SEARCH_NODE_NAME; //specific_info_node(popup_win); break; case SUBMIT_PAGE: break; default: g_print("resv got unknown type %d\n", id); } if (!sview_thread_new((gpointer)popup_thr, popup_win, FALSE, &error)) { g_printerr ("Failed to create resv popup thread: %s\n", error->message); return; } }
/* Function to setup popup windows for Burst Buffer */ extern void popup_all_bb(GtkTreeModel *model, GtkTreeIter *iter, int id) { char *name = NULL; char title[100]; ListIterator itr = NULL; popup_info_t *popup_win = NULL; GError *error = NULL; gtk_tree_model_get(model, iter, SORTID_NAME, &name, -1); switch(id) { case INFO_PAGE: snprintf(title, 100, "Full info for Burst Buffer %s", name); break; default: g_print("Burst Buffer got %d\n", id); } itr = list_iterator_create(popup_list); while ((popup_win = list_next(itr))) { if (popup_win->spec_info) if (!xstrcmp(popup_win->spec_info->title, title)) { break; } } list_iterator_destroy(itr); if (!popup_win) { if (id == INFO_PAGE) { popup_win = create_popup_info(id, BB_PAGE, title); } else { popup_win = create_popup_info(BB_PAGE, id, title); } } else { g_free(name); gtk_window_present(GTK_WINDOW(popup_win->popup)); return; } /* Pass the model and the structs from the iter so we can always get the current node_inx. */ popup_win->model = model; popup_win->iter = *iter; /* Sets up right click information */ switch(id) { case JOB_PAGE: case INFO_PAGE: popup_win->spec_info->search_info->gchar_data = name; specific_info_bb(popup_win); break; case BLOCK_PAGE: case NODE_PAGE: case PART_PAGE: case SUBMIT_PAGE: break; default: g_print("Burst Buffer got unknown type %d\n", id); } if (!sview_thread_new((gpointer)popup_thr, popup_win, FALSE, &error)) { g_printerr ("Failed to create burst buffer popup thread: %s\n", error->message); return; } }
extern void popup_all_block(GtkTreeModel *model, GtkTreeIter *iter, int id) { char *name = NULL; char title[100]; ListIterator itr = NULL; popup_info_t *popup_win = NULL; GError *error = NULL; int i=0; gtk_tree_model_get(model, iter, SORTID_BLOCK, &name, -1); switch(id) { case JOB_PAGE: snprintf(title, 100, "Jobs(s) in block %s", name); break; case PART_PAGE: snprintf(title, 100, "Partition(s) containing block %s", name); break; case RESV_PAGE: snprintf(title, 100, "Reservations(s) containing block %s", name); break; case NODE_PAGE: snprintf(title, 100, "Midplane(s) in block %s", name); break; case SUBMIT_PAGE: snprintf(title, 100, "Submit job on %s", name); break; case INFO_PAGE: snprintf(title, 100, "Full info for block %s", name); break; default: g_print("Block got %d\n", id); } itr = list_iterator_create(popup_list); while ((popup_win = list_next(itr))) { if (popup_win->spec_info) if (!xstrcmp(popup_win->spec_info->title, title)) { break; } } list_iterator_destroy(itr); if (!popup_win) { if (id == INFO_PAGE) popup_win = create_popup_info(id, BLOCK_PAGE, title); else popup_win = create_popup_info(BLOCK_PAGE, id, title); } else { g_free(name); gtk_window_present(GTK_WINDOW(popup_win->popup)); return; } /* Pass the model and the structs from the iter so we can always get the current node_inx. */ popup_win->model = model; popup_win->iter = *iter; popup_win->node_inx_id = SORTID_NODE_INX; switch(id) { case JOB_PAGE: popup_win->spec_info->search_info->gchar_data = name; break; case PART_PAGE: g_free(name); gtk_tree_model_get(model, iter, SORTID_PARTITION, &name, -1); popup_win->spec_info->search_info->gchar_data = name; break; case RESV_PAGE: case NODE_PAGE: g_free(name); gtk_tree_model_get(model, iter, SORTID_NODELIST, &name, -1); gtk_tree_model_get(model, iter, SORTID_SMALL_BLOCK, &i, -1); if (i) { i=0; /* strip off the ionodes part */ while (name[i]) { if (name[i] == '[') { name[i] = '\0'; break; } i++; } } popup_win->spec_info->search_info->gchar_data = name; break; case INFO_PAGE: popup_win->spec_info->search_info->gchar_data = name; break; default: g_print("block got %d\n", id); } if (!sview_thread_new((gpointer)popup_thr, popup_win, FALSE, &error)) { g_printerr ("Failed to create part popup thread: %s\n", error->message); return; } }
extern void popup_all_front_end(GtkTreeModel *model, GtkTreeIter *iter, int id) { char *name = NULL; char title[100] = {0}; ListIterator itr = NULL; popup_info_t *popup_win = NULL; GError *error = NULL; gtk_tree_model_get(model, iter, SORTID_NAME, &name, -1); switch (id) { case INFO_PAGE: snprintf(title, 100, "Full info for front end node %s", name); break; default: g_print("front end got %d\n", id); } itr = list_iterator_create(popup_list); while ((popup_win = list_next(itr))) { if (popup_win->spec_info) if (!xstrcmp(popup_win->spec_info->title, title)) { break; } } list_iterator_destroy(itr); if (!popup_win) { if (id == INFO_PAGE) popup_win = create_popup_info(id, FRONT_END_PAGE, title); else { popup_win = create_popup_info(FRONT_END_PAGE, id, title); } } else { g_free(name); gtk_window_present(GTK_WINDOW(popup_win->popup)); return; } /* Pass the model and the structs from the iter so we can always get * the current node_inx. */ popup_win->model = model; popup_win->iter = *iter; popup_win->node_inx_id = SORTID_NODE_INX; switch (id) { case INFO_PAGE: popup_win->spec_info->search_info->gchar_data = name; break; default: g_print("resv got unknown type %d\n", id); } if (!sview_thread_new((gpointer)popup_thr, popup_win, false, &error)) { g_printerr ("Failed to create resv popup thread: %s\n", error->message); return; } }
/* Creates a tree model containing the completions */ void _search_entry(sview_search_info_t *sview_search_info) { int id = 0; char title[100]; ListIterator itr = NULL; popup_info_t *popup_win = NULL; GError *error = NULL; char *upper = NULL, *lower = NULL; char *type; if (cluster_flags & CLUSTER_FLAG_BG) type = "Midplane"; else type = "Node"; if (sview_search_info->int_data == NO_VAL && (!sview_search_info->gchar_data || !strlen(sview_search_info->gchar_data))) { g_print("nothing given to search for.\n"); return; } switch(sview_search_info->search_type) { case SEARCH_JOB_STATE: id = JOB_PAGE; upper = job_state_string(sview_search_info->int_data); lower = str_tolower(upper); snprintf(title, 100, "Job(s) in the %s state", lower); xfree(lower); break; case SEARCH_JOB_ID: id = JOB_PAGE; snprintf(title, 100, "Job %s info", sview_search_info->gchar_data); break; case SEARCH_JOB_USER: id = JOB_PAGE; snprintf(title, 100, "Job(s) info for user %s", sview_search_info->gchar_data); break; case SEARCH_BLOCK_STATE: id = BLOCK_PAGE; upper = bg_block_state_string(sview_search_info->int_data); lower = str_tolower(upper); snprintf(title, 100, "BG Block(s) in the %s state", lower); xfree(lower); break; case SEARCH_BLOCK_NAME: id = BLOCK_PAGE; snprintf(title, 100, "Block %s info", sview_search_info->gchar_data); break; case SEARCH_BLOCK_SIZE: id = BLOCK_PAGE; sview_search_info->int_data = revert_num_unit(sview_search_info->gchar_data); if (sview_search_info->int_data == -1) return; snprintf(title, 100, "Block(s) of size %d cnodes", sview_search_info->int_data); break; case SEARCH_PARTITION_NAME: id = PART_PAGE; snprintf(title, 100, "Partition %s info", sview_search_info->gchar_data); break; case SEARCH_PARTITION_STATE: id = PART_PAGE; if (sview_search_info->int_data) snprintf(title, 100, "Partition(s) that are up"); else snprintf(title, 100, "Partition(s) that are down"); break; case SEARCH_NODE_NAME: id = NODE_PAGE; snprintf(title, 100, "%s(s) %s info", type, sview_search_info->gchar_data); break; case SEARCH_NODE_STATE: id = NODE_PAGE; upper = node_state_string(sview_search_info->int_data); lower = str_tolower(upper); snprintf(title, 100, "%s(s) in the %s state", type, lower); xfree(lower); break; case SEARCH_RESERVATION_NAME: id = RESV_PAGE; snprintf(title, 100, "Reservation %s info", sview_search_info->gchar_data); break; default: g_print("unknown search type %d.\n", sview_search_info->search_type); return; } itr = list_iterator_create(popup_list); while ((popup_win = list_next(itr))) { if (popup_win->spec_info) if (!strcmp(popup_win->spec_info->title, title)) { break; } } list_iterator_destroy(itr); if (!popup_win) { popup_win = create_popup_info(id, id, title); } else { gtk_window_present(GTK_WINDOW(popup_win->popup)); return; } memcpy(popup_win->spec_info->search_info, sview_search_info, sizeof(sview_search_info_t)); if (!sview_thread_new((gpointer)popup_thr, popup_win, FALSE, &error)) { g_printerr ("Failed to create main popup thread: %s\n", error->message); return; } return; }