diff --git a/src/slurmctld/proc_req.c b/src/slurmctld/proc_req.c index 3482cef99b9c2d6087388012e3a7da3a8e6d1cf3..3cb59d24edc16f778126a55972455e03b778f6a5 100644 --- a/src/slurmctld/proc_req.c +++ b/src/slurmctld/proc_req.c @@ -3862,6 +3862,7 @@ inline static void _slurm_rpc_set_debug_flags(slurm_msg_t *msg) debug_flags &= (~request_msg->debug_flags_minus); debug_flags |= request_msg->debug_flags_plus; slurm_set_debug_flags(debug_flags); + slurmctld_conf.last_update = time(NULL); unlock_slurmctld (config_write_lock); flag_string = debug_flags2str(debug_flags); info("Set DebugFlags to %s", flag_string); diff --git a/src/sview/sview.c b/src/sview/sview.c index cfbf353c6d49617ef12fd052914097e386bc8b35..c8db7f4256dfd15b840a33983548e6fa4c9072e7 100644 --- a/src/sview/sview.c +++ b/src/sview/sview.c @@ -165,26 +165,6 @@ display_data_t main_display_data[] = { {G_TYPE_NONE, -1, NULL, FALSE, -1} }; -typedef struct { - bool flags_backfill; - bool flags_bg_algo; - bool flags_bg_algo_deep; - bool flags_bg_pick; - bool flags_bg_wires; - bool flags_cpu_bind; - bool flags_front_end; - bool flags_gang; - bool flags_gres; - bool flags_no_conf_hash; - bool flags_prio; - bool flags_reservation; - bool flags_select_type; - bool flags_steps; - bool flags_triggers; - bool flags_wiki; -} debug_flags_t; -debug_flags_t ctld_debug_flags; - void *_page_thr(void *arg) { page_thr_t *page = (page_thr_t *)arg; @@ -524,25 +504,142 @@ static void _get_current_debug_flags(GtkToggleAction *action) static uint32_t debug_flags = 0; static slurm_ctl_conf_info_msg_t *slurm_ctl_conf_ptr = NULL; int err_code = get_new_info_config(&slurm_ctl_conf_ptr); + GtkAction *debug_action = NULL; + GtkToggleAction *toggle_action; + gboolean orig_state, new_state; if (err_code != SLURM_ERROR) debug_flags = slurm_ctl_conf_ptr->debug_flags; -#if 0 - /* Logic of this sorf should work, but I am not sure how to get each - * GtkToggleButton from the GtkToggleAction argument above */ - static GtkAction *debug_action = NULL; - gboolean flag_state; - - debug_action = gtk_action_group_get_action(menu_action_group, "flags_backfill"); - flag_state = debug_flags & DEBUG_FLAG_BACKFILL; - gtk_toggle_button_set_active(GtkToggleButton, flag_state); - /* - for (each button) { - gtk_toggle_button_set_active(GtkToggleButton, gboolean); - } */ -#endif + + debug_action = gtk_action_group_get_action(menu_action_group, + "flags_backfill"); + toggle_action = GTK_TOGGLE_ACTION(debug_action); + orig_state = gtk_toggle_action_get_active(toggle_action); + new_state = debug_flags & DEBUG_FLAG_BACKFILL; + if (orig_state != new_state) + gtk_toggle_action_set_active(toggle_action, new_state); + + debug_action = gtk_action_group_get_action(menu_action_group, + "flags_bg_algo"); + toggle_action = GTK_TOGGLE_ACTION(debug_action); + orig_state = gtk_toggle_action_get_active(toggle_action); + new_state = debug_flags & DEBUG_FLAG_BG_ALGO; + if (orig_state != new_state) + gtk_toggle_action_set_active(toggle_action, new_state); + + debug_action = gtk_action_group_get_action(menu_action_group, + "flags_bg_algo_deep"); + toggle_action = GTK_TOGGLE_ACTION(debug_action); + orig_state = gtk_toggle_action_get_active(toggle_action); + new_state = debug_flags & DEBUG_FLAG_BG_ALGO_DEEP; + if (orig_state != new_state) + gtk_toggle_action_set_active(toggle_action, new_state); + + debug_action = gtk_action_group_get_action(menu_action_group, + "flags_bg_pick"); + toggle_action = GTK_TOGGLE_ACTION(debug_action); + orig_state = gtk_toggle_action_get_active(toggle_action); + new_state = debug_flags & DEBUG_FLAG_BG_PICK; + if (orig_state != new_state) + gtk_toggle_action_set_active(toggle_action, new_state); + + debug_action = gtk_action_group_get_action(menu_action_group, + "flags_bg_wires"); + toggle_action = GTK_TOGGLE_ACTION(debug_action); + orig_state = gtk_toggle_action_get_active(toggle_action); + new_state = debug_flags & DEBUG_FLAG_BG_WIRES; + if (orig_state != new_state) + gtk_toggle_action_set_active(toggle_action, new_state); + + debug_action = gtk_action_group_get_action(menu_action_group, + "flags_cpu_bind"); + toggle_action = GTK_TOGGLE_ACTION(debug_action); + orig_state = gtk_toggle_action_get_active(toggle_action); + new_state = debug_flags & DEBUG_FLAG_CPU_BIND; + if (orig_state != new_state) + gtk_toggle_action_set_active(toggle_action, new_state); + + debug_action = gtk_action_group_get_action(menu_action_group, + "flags_front_end"); + toggle_action = GTK_TOGGLE_ACTION(debug_action); + orig_state = gtk_toggle_action_get_active(toggle_action); + new_state = debug_flags & DEBUG_FLAG_FRONT_END; + if (orig_state != new_state) + gtk_toggle_action_set_active(toggle_action, new_state); + + debug_action = gtk_action_group_get_action(menu_action_group, + "flags_gang"); + toggle_action = GTK_TOGGLE_ACTION(debug_action); + orig_state = gtk_toggle_action_get_active(toggle_action); + new_state = debug_flags & DEBUG_FLAG_GANG; + if (orig_state != new_state) + gtk_toggle_action_set_active(toggle_action, new_state); + + debug_action = gtk_action_group_get_action(menu_action_group, + "flags_gres"); + toggle_action = GTK_TOGGLE_ACTION(debug_action); + orig_state = gtk_toggle_action_get_active(toggle_action); + new_state = debug_flags & DEBUG_FLAG_GRES; + if (orig_state != new_state) + gtk_toggle_action_set_active(toggle_action, new_state); + + debug_action = gtk_action_group_get_action(menu_action_group, + "flags_no_conf_hash"); + toggle_action = GTK_TOGGLE_ACTION(debug_action); + orig_state = gtk_toggle_action_get_active(toggle_action); + new_state = debug_flags & DEBUG_FLAG_NO_CONF_HASH; + if (orig_state != new_state) + gtk_toggle_action_set_active(toggle_action, new_state); + + debug_action = gtk_action_group_get_action(menu_action_group, + "flags_prio"); + toggle_action = GTK_TOGGLE_ACTION(debug_action); + orig_state = gtk_toggle_action_get_active(toggle_action); + new_state = debug_flags & DEBUG_FLAG_PRIO; + if (orig_state != new_state) + gtk_toggle_action_set_active(toggle_action, new_state); + + debug_action = gtk_action_group_get_action(menu_action_group, + "flags_reservation"); + toggle_action = GTK_TOGGLE_ACTION(debug_action); + orig_state = gtk_toggle_action_get_active(toggle_action); + new_state = debug_flags & DEBUG_FLAG_RESERVATION; + if (orig_state != new_state) + gtk_toggle_action_set_active(toggle_action, new_state); + + debug_action = gtk_action_group_get_action(menu_action_group, + "flags_select_type"); + toggle_action = GTK_TOGGLE_ACTION(debug_action); + orig_state = gtk_toggle_action_get_active(toggle_action); + new_state = debug_flags & DEBUG_FLAG_SELECT_TYPE; + if (orig_state != new_state) + gtk_toggle_action_set_active(toggle_action, new_state); + + debug_action = gtk_action_group_get_action(menu_action_group, + "flags_steps"); + toggle_action = GTK_TOGGLE_ACTION(debug_action); + orig_state = gtk_toggle_action_get_active(toggle_action); + new_state = debug_flags & DEBUG_FLAG_STEPS; + if (orig_state != new_state) + gtk_toggle_action_set_active(toggle_action, new_state); + + debug_action = gtk_action_group_get_action(menu_action_group, + "flags_triggers"); + toggle_action = GTK_TOGGLE_ACTION(debug_action); + orig_state = gtk_toggle_action_get_active(toggle_action); + new_state = debug_flags & DEBUG_FLAG_TRIGGERS; + if (orig_state != new_state) + gtk_toggle_action_set_active(toggle_action, new_state); + + debug_action = gtk_action_group_get_action(menu_action_group, + "flags_wiki"); + toggle_action = GTK_TOGGLE_ACTION(debug_action); + orig_state = gtk_toggle_action_get_active(toggle_action); + new_state = debug_flags & DEBUG_FLAG_WIKI; + if (orig_state != new_state) + gtk_toggle_action_set_active(toggle_action, new_state); } - + static void _set_debug(GtkRadioAction *action, GtkRadioAction *extra, GtkNotebook *notebook) @@ -827,49 +924,6 @@ static char *_get_ui_description() return ui_description; } -static void _load_debug_flags(void) -{ - slurm_ctl_conf_t *confp; - - if (slurm_load_ctl_conf((time_t) 0, &confp) != SLURM_SUCCESS) - return; - - ctld_debug_flags.flags_backfill = confp->debug_flags & - DEBUG_FLAG_BACKFILL; - ctld_debug_flags.flags_bg_algo = confp->debug_flags & - DEBUG_FLAG_BG_ALGO; - ctld_debug_flags.flags_bg_algo_deep = confp->debug_flags & - DEBUG_FLAG_BG_ALGO_DEEP; - ctld_debug_flags.flags_bg_pick = confp->debug_flags & - DEBUG_FLAG_BG_PICK; - ctld_debug_flags.flags_bg_wires = confp->debug_flags & - DEBUG_FLAG_BG_WIRES; - ctld_debug_flags.flags_cpu_bind = confp->debug_flags & - DEBUG_FLAG_CPU_BIND; - ctld_debug_flags.flags_front_end = confp->debug_flags & - DEBUG_FLAG_FRONT_END; - ctld_debug_flags.flags_gang = confp->debug_flags & - DEBUG_FLAG_GANG; - ctld_debug_flags.flags_gres = confp->debug_flags & - DEBUG_FLAG_GRES; - ctld_debug_flags.flags_no_conf_hash = confp->debug_flags & - DEBUG_FLAG_NO_CONF_HASH; - ctld_debug_flags.flags_prio = confp->debug_flags & - DEBUG_FLAG_PRIO; - ctld_debug_flags.flags_reservation = confp->debug_flags & - DEBUG_FLAG_RESERVATION; - ctld_debug_flags.flags_select_type = confp->debug_flags & - DEBUG_FLAG_SELECT_TYPE; - ctld_debug_flags.flags_steps = confp->debug_flags & - DEBUG_FLAG_STEPS; - ctld_debug_flags.flags_triggers = confp->debug_flags & - DEBUG_FLAG_TRIGGERS; - ctld_debug_flags.flags_wiki = confp->debug_flags & - DEBUG_FLAG_WIKI; - - slurm_free_ctl_conf(confp); -} - /* Returns a menubar widget made from the above menu */ static GtkWidget *_get_menubar_menu(GtkWidget *window, GtkWidget *notebook) { @@ -1036,54 +1090,38 @@ static GtkWidget *_get_menubar_menu(GtkWidget *window, GtkWidget *notebook) }; GtkToggleActionEntry debug_flags[] = { - {"flags_backfill", NULL, "Backfill", - NULL, "Backfill", G_CALLBACK(_set_flags_backfill), - ctld_debug_flags.flags_backfill}, - {"flags_bg_algo", NULL, "BgBlockAlgo", - NULL, "BgBlockAlgo", G_CALLBACK(_set_flags_bg_algo), - ctld_debug_flags.flags_bg_algo}, - {"flags_bg_algo_deep", NULL, "BgBlockAlgoDeep", - NULL, "BgBlockAlgoDeep", G_CALLBACK(_set_flags_bg_algo_deep), - ctld_debug_flags.flags_bg_algo_deep}, - {"flags_bg_pick", NULL, "BgBlockPick", - NULL, "BgBlockPick", G_CALLBACK(_set_flags_bg_pick), - ctld_debug_flags.flags_bg_pick}, - {"flags_bg_wires", NULL, "BgBlockWires", - NULL, "BgBlockWires", G_CALLBACK(_set_flags_bg_wires), - ctld_debug_flags.flags_bg_wires}, - {"flags_cpu_bind", NULL, "CPU Bind", - NULL, "CPU_Bind", G_CALLBACK(_set_flags_cpu_bind), - ctld_debug_flags.flags_cpu_bind}, - {"flags_front_end", NULL, "FrontEnd", - NULL, "FrontEnd", G_CALLBACK(_set_flags_front_end), - ctld_debug_flags.flags_front_end}, - {"flags_gang", NULL, "Gang", - NULL, "Gang", G_CALLBACK(_set_flags_gang), - ctld_debug_flags.flags_gang}, - {"flags_gres", NULL, "Gres", - NULL, "Gres", G_CALLBACK(_set_flags_gres), - ctld_debug_flags.flags_gres}, - {"flags_no_conf_hash", NULL, "NO CONF HASH", - NULL, "NO_CONF_HASH", G_CALLBACK(_set_flags_no_conf_hash), - ctld_debug_flags.flags_no_conf_hash}, - {"flags_prio", NULL, "Priority", - NULL, "Priority", G_CALLBACK(_set_flags_prio), - ctld_debug_flags.flags_prio}, - {"flags_reservation", NULL, "Reservation", - NULL, "Reservation", G_CALLBACK(_set_flags_reservation), - ctld_debug_flags.flags_reservation}, - {"flags_select_type", NULL, "SelectType", - NULL, "SelectType", G_CALLBACK(_set_flags_select_type), - ctld_debug_flags.flags_select_type}, - {"flags_steps", NULL, "Steps", - NULL, "Steps", G_CALLBACK(_set_flags_steps), - ctld_debug_flags.flags_steps}, - {"flags_triggers", NULL, "Triggers", - NULL, "Triggers", G_CALLBACK(_set_flags_triggers), - ctld_debug_flags.flags_triggers}, - {"flags_wiki", NULL, "Wiki", - NULL, "Wiki", G_CALLBACK(_set_flags_wiki), - ctld_debug_flags.flags_wiki}, + {"flags_backfill", NULL, "Backfill", NULL, + "Backfill", G_CALLBACK(_set_flags_backfill), FALSE}, + {"flags_bg_algo", NULL, "BgBlockAlgo", NULL, + "BgBlockAlgo", G_CALLBACK(_set_flags_bg_algo), FALSE}, + {"flags_bg_algo_deep", NULL, "BgBlockAlgoDeep", NULL, + "BgBlockAlgoDeep", G_CALLBACK(_set_flags_bg_algo_deep),FALSE}, + {"flags_bg_pick", NULL, "BgBlockPick", NULL, + "BgBlockPick", G_CALLBACK(_set_flags_bg_pick), FALSE}, + {"flags_bg_wires", NULL, "BgBlockWires", NULL, + "BgBlockWires", G_CALLBACK(_set_flags_bg_wires), FALSE}, + {"flags_cpu_bind", NULL, "CPU Bind", NULL, + "CPU_Bind", G_CALLBACK(_set_flags_cpu_bind), FALSE}, + {"flags_front_end", NULL, "FrontEnd", NULL, + "FrontEnd", G_CALLBACK(_set_flags_front_end), FALSE}, + {"flags_gang", NULL, "Gang", NULL, + "Gang", G_CALLBACK(_set_flags_gang), FALSE}, + {"flags_gres", NULL, "Gres", NULL, + "Gres", G_CALLBACK(_set_flags_gres), FALSE}, + {"flags_no_conf_hash", NULL, "NO CONF HASH", NULL, + "NO_CONF_HASH", G_CALLBACK(_set_flags_no_conf_hash), FALSE}, + {"flags_prio", NULL, "Priority", NULL, + "Priority", G_CALLBACK(_set_flags_prio), FALSE}, + {"flags_reservation", NULL, "Reservation", NULL, + "Reservation", G_CALLBACK(_set_flags_reservation), FALSE}, + {"flags_select_type", NULL, "SelectType", NULL, + "SelectType", G_CALLBACK(_set_flags_select_type), FALSE}, + {"flags_steps", NULL, "Steps", NULL, + "Steps", G_CALLBACK(_set_flags_steps), FALSE}, + {"flags_triggers", NULL, "Triggers", NULL, + "Triggers", G_CALLBACK(_set_flags_triggers), FALSE}, + {"flags_wiki", NULL, "Wiki", NULL, + "Wiki", G_CALLBACK(_set_flags_wiki), FALSE}, }; /* Make an accelerator group (shortcut keys) */ @@ -1637,7 +1675,6 @@ int main(int argc, char *argv[]) gtk_table_set_homogeneous(GTK_TABLE(table), FALSE); gtk_container_set_border_width(GTK_CONTAINER(table), 1); /* Create a menu */ - _load_debug_flags(); menubar = _get_menubar_menu(main_window, main_notebook); gtk_table_attach_defaults(GTK_TABLE(table), menubar, 0, 1, 0, 1);