From c957760172f04b55380308aca47e6a3f95b1b73f Mon Sep 17 00:00:00 2001 From: Moe Jette <jette1@llnl.gov> Date: Wed, 5 Jan 2011 01:32:22 +0000 Subject: [PATCH] sview display for front-end is getting close, still need to add a few more fields, white-out all compute nodes, and add update functionality --- src/sview/common.c | 6 ++ src/sview/front_end_info.c | 121 +++++++++++++++++++++++++++---------- 2 files changed, 95 insertions(+), 32 deletions(-) diff --git a/src/sview/common.c b/src/sview/common.c index 0e6ad4c87bf..49bb8ff485f 100644 --- a/src/sview/common.c +++ b/src/sview/common.c @@ -595,6 +595,9 @@ static void _selected_page(GtkMenuItem *menuitem, display_data_t *display_data) case RESV_PAGE: each.pfunc = &popup_all_resv; break; + case FRONT_END_PAGE: + each.pfunc = &popup_all_front_end; + break; case ADMIN_PAGE: switch(display_data->id) { case JOB_PAGE: @@ -1814,6 +1817,9 @@ extern void *popup_thr(popup_info_t *popup_win) case RESV_PAGE: specifc_info = specific_info_resv; break; + case FRONT_END_PAGE: + specifc_info = specific_info_front_end; + break; case SUBMIT_PAGE: default: g_print("thread got unknown type %d\n", popup_win->type); diff --git a/src/sview/front_end_info.c b/src/sview/front_end_info.c index e4c674c0584..252f97448c5 100644 --- a/src/sview/front_end_info.c +++ b/src/sview/front_end_info.c @@ -37,6 +37,10 @@ typedef struct { int color_inx; front_end_info_t *front_end_ptr; + char *boot_time; + char *reason; + char *slurmd_start_time; + char *state; } sview_front_end_info_t; enum { @@ -47,9 +51,11 @@ enum { /* These need to be in alpha order (except POS and CNT) */ enum { SORTID_POS = POS_LOC, + SORTID_BOOT_TIME, SORTID_COLOR, SORTID_COLOR_INX, SORTID_NAME, + SORTID_SLURMD_START_TIME, SORTID_STATE, SORTID_CNT }; @@ -64,14 +70,19 @@ enum { * s/b a const probably*/ static char *_initial_page_opts = "Name,State"; -static display_data_t display_data_resv[] = { +static display_data_t display_data_front_end[] = { {G_TYPE_INT, SORTID_POS, NULL, FALSE, EDIT_NONE, refresh_front_end, create_model_front_end, admin_edit_front_end}, {G_TYPE_STRING, SORTID_NAME, "Name", FALSE, EDIT_NONE, refresh_front_end, create_model_front_end, admin_edit_front_end}, + {G_TYPE_STRING, SORTID_COLOR, NULL, TRUE, EDIT_COLOR, + refresh_front_end, create_model_front_end, admin_edit_front_end}, {G_TYPE_STRING, SORTID_STATE, "State", FALSE, EDIT_MODEL, refresh_front_end, create_model_front_end, admin_edit_front_end}, - {G_TYPE_STRING, SORTID_COLOR, NULL, TRUE, EDIT_COLOR, + {G_TYPE_STRING, SORTID_BOOT_TIME, "BootTime", FALSE, EDIT_NONE, + refresh_front_end, create_model_front_end, admin_edit_front_end}, + {G_TYPE_STRING, SORTID_SLURMD_START_TIME, "SlurmdStartTime", + FALSE, EDIT_NONE, refresh_front_end, create_model_front_end, admin_edit_front_end}, {G_TYPE_INT, SORTID_COLOR_INX, NULL, FALSE, EDIT_NONE, refresh_front_end, create_model_front_end, admin_edit_front_end}, @@ -80,17 +91,7 @@ static display_data_t display_data_resv[] = { static display_data_t options_data_resv[] = { {G_TYPE_INT, SORTID_POS, NULL, FALSE, EDIT_NONE}, - {G_TYPE_STRING, INFO_PAGE, "Full Info", TRUE, RESV_PAGE}, - {G_TYPE_STRING, RESV_PAGE, "Remove", TRUE, ADMIN_PAGE}, - {G_TYPE_STRING, RESV_PAGE, "Edit Reservation", TRUE, ADMIN_PAGE}, - {G_TYPE_STRING, JOB_PAGE, "Jobs", TRUE, RESV_PAGE}, -#ifdef HAVE_BG - {G_TYPE_STRING, BLOCK_PAGE, "Blocks", TRUE, RESV_PAGE}, - {G_TYPE_STRING, NODE_PAGE, "Base Partitions", TRUE, RESV_PAGE}, -#else - {G_TYPE_STRING, BLOCK_PAGE, NULL, TRUE, RESV_PAGE}, - {G_TYPE_STRING, NODE_PAGE, "Nodes", TRUE, RESV_PAGE}, -#endif + {G_TYPE_STRING, INFO_PAGE, "Full Info", TRUE, FRONT_END_PAGE}, {G_TYPE_NONE, -1, NULL, FALSE, EDIT_NONE} }; @@ -150,7 +151,15 @@ static const char *_set_resv_msg(resv_desc_msg_t *resv_msg, static void _front_end_info_list_del(void *object) { - xfree(object); + sview_front_end_info_t *sview_front_end_info; + + sview_front_end_info = (sview_front_end_info_t *)object; + if (sview_front_end_info) { + xfree(sview_front_end_info->boot_time); + xfree(sview_front_end_info->slurmd_start_time); + xfree(sview_front_end_info->state); + xfree(sview_front_end_info); + } } static void _admin_edit_combo_box_resv(GtkComboBox *combo, @@ -216,7 +225,7 @@ static GtkWidget *_admin_full_edit_resv(resv_desc_msg_t *resv_msg, GtkViewport *view = NULL; GtkTable *table = NULL; int i = 0, row = 0; - display_data_t *display_data = display_data_resv; + display_data_t *display_data = display_data_front_end; gtk_scrolled_window_set_policy(window, GTK_POLICY_NEVER, @@ -245,7 +254,7 @@ static GtkWidget *_admin_full_edit_resv(resv_desc_msg_t *resv_msg, _set_active_combo_resv); break; } - display_data = display_data_resv; + display_data = display_data_front_end; } gtk_table_resize(table, row, 2); @@ -256,8 +265,34 @@ static void _layout_resv_record(GtkTreeView *treeview, sview_front_end_info_t *sview_front_end_info, int update) { + GtkTreeIter iter; + front_end_info_t *front_end_ptr = + sview_front_end_info->front_end_ptr; GtkTreeStore *treestore = GTK_TREE_STORE(gtk_tree_view_get_model(treeview)); + + if (!treestore) + return; + + add_display_treestore_line(update, treestore, &iter, + find_col_name(display_data_front_end, + SORTID_NAME), + front_end_ptr->name); + + add_display_treestore_line(update, treestore, &iter, + find_col_name(display_data_front_end, + SORTID_STATE), + sview_front_end_info->state); + + add_display_treestore_line(update, treestore, &iter, + find_col_name(display_data_front_end, + SORTID_BOOT_TIME), + sview_front_end_info->boot_time); + + add_display_treestore_line(update, treestore, &iter, + find_col_name(display_data_front_end, + SORTID_SLURMD_START_TIME), + sview_front_end_info->slurmd_start_time); } static void _update_resv_record(sview_front_end_info_t *sview_front_end_info_ptr, @@ -265,7 +300,6 @@ static void _update_resv_record(sview_front_end_info_t *sview_front_end_info_ptr GtkTreeIter *iter) { front_end_info_t *front_end_ptr; - char *upper = NULL, *lower = NULL; front_end_ptr = sview_front_end_info_ptr->front_end_ptr; gtk_tree_store_set(treestore, iter, SORTID_COLOR, @@ -277,10 +311,14 @@ static void _update_resv_record(sview_front_end_info_t *sview_front_end_info_ptr gtk_tree_store_set(treestore, iter, SORTID_NAME, front_end_ptr->name, -1); - upper = node_state_string(front_end_ptr->node_state); - lower = str_tolower(upper); - gtk_tree_store_set(treestore, iter, SORTID_STATE, lower, -1); - xfree(lower); + gtk_tree_store_set(treestore, iter, SORTID_STATE, + sview_front_end_info_ptr->state, -1); + + gtk_tree_store_set(treestore, iter, SORTID_BOOT_TIME, + sview_front_end_info_ptr->boot_time, -1); + + gtk_tree_store_set(treestore, iter, SORTID_SLURMD_START_TIME, + sview_front_end_info_ptr->slurmd_start_time, -1); return; } @@ -362,6 +400,8 @@ static void _update_info_resv(List info_list, static List _create_front_end_info_list(front_end_info_msg_t *front_end_info_ptr, int changed) { + char *upper = NULL; + char time_str[32]; static List info_list = NULL; int i = 0; sview_front_end_info_t *sview_front_end_info_ptr = NULL; @@ -380,12 +420,26 @@ static List _create_front_end_info_list(front_end_info_msg_t *front_end_info_ptr return NULL; } - for (i=0; i<front_end_info_ptr->record_count; i++) { + for (i = 0; i < front_end_info_ptr->record_count; i++) { front_end_ptr = &(front_end_info_ptr->front_end_array[i]); sview_front_end_info_ptr = xmalloc(sizeof(sview_front_end_info_t)); sview_front_end_info_ptr->front_end_ptr = front_end_ptr; sview_front_end_info_ptr->color_inx = i % sview_colors_cnt; + if (front_end_ptr->boot_time) { + slurm_make_time_str(&front_end_ptr->boot_time, + time_str, sizeof(time_str)); + sview_front_end_info_ptr->boot_time = + xstrdup(time_str); + } + if (front_end_ptr->slurmd_start_time) { + slurm_make_time_str(&front_end_ptr->slurmd_start_time, + time_str, sizeof(time_str)); + sview_front_end_info_ptr->slurmd_start_time = + xstrdup(time_str); + } + upper = node_state_string(front_end_ptr->node_state); + sview_front_end_info_ptr->state = str_tolower(upper); list_append(info_list, sview_front_end_info_ptr); } @@ -436,7 +490,7 @@ need_refresh: if (!found) { if (!popup_win->not_found) { - char *temp = "RESERVATION DOESN'T EXSIST\n"; + char *temp = "FRONT END DOESN'T EXSIST\n"; GtkTreeIter iter; GtkTreeModel *model = NULL; @@ -621,7 +675,7 @@ extern void get_info_front_end(GtkTable *table, display_data_t *display_data) static bool set_opts = FALSE; if (!set_opts) - set_page_opts(FRONT_END_PAGE, display_data_resv, + set_page_opts(FRONT_END_PAGE, display_data_front_end, SORTID_CNT, _initial_page_opts); set_opts = TRUE; @@ -637,7 +691,7 @@ extern void get_info_front_end(GtkTable *table, display_data_t *display_data) if (display_data) local_display_data = display_data; if (!table) { - display_data_resv->set_menu = local_display_data->set_menu; + display_data_front_end->set_menu = local_display_data->set_menu; goto reset_curs; } if (display_widget && toggled) { @@ -708,7 +762,7 @@ display_it: /* since this function sets the model of the tree_view to the treestore we don't really care about the return value */ - create_treestore(tree_view, display_data_resv, + create_treestore(tree_view, display_data_front_end, SORTID_CNT, SORTID_NAME, SORTID_COLOR); } @@ -741,7 +795,7 @@ extern void specific_info_front_end(popup_info_t *popup_win) ListIterator itr = NULL; if (!spec_info->display_widget) { - setup_popup_info(popup_win, display_data_resv, SORTID_CNT); + setup_popup_info(popup_win, display_data_front_end, SORTID_CNT); } if (spec_info->display_widget && popup_win->toggled) { @@ -871,7 +925,7 @@ extern void set_menus_front_end(void *arg, void *arg2, GtkTreePath *path, switch (type) { case TAB_CLICKED: - make_fields_menu(NULL, menu, display_data_resv, SORTID_CNT); + make_fields_menu(NULL, menu, display_data_front_end, SORTID_CNT); break; case ROW_CLICKED: make_options_menu(tree_view, path, menu, options_data_resv); @@ -931,9 +985,12 @@ extern void popup_all_front_end(GtkTreeModel *model, GtkTreeIter *iter, int id) 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); + 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)); @@ -1107,7 +1164,7 @@ end_it: extern void cluster_change_front_end(void) { - display_data_t *display_data = display_data_resv; + display_data_t *display_data = display_data_front_end; display_data = options_data_resv; while (display_data++) { -- GitLab