diff --git a/src/sview/part_info.c b/src/sview/part_info.c index 2a04d13189aadbdf66dc57a30d29357047067797..03d89336f050261b8f44948f482f323c3a44d128 100644 --- a/src/sview/part_info.c +++ b/src/sview/part_info.c @@ -139,7 +139,7 @@ static display_data_t display_data_part[] = { {G_TYPE_STRING, SORTID_JOB_SIZE, "Job Size", FALSE, EDIT_NONE, refresh_part, create_model_part, admin_edit_part}, {G_TYPE_STRING, SORTID_PREEMPT_MODE, "PreemptMode", FALSE, - EDIT_TEXTBOX, refresh_part, create_model_part, admin_edit_part}, + EDIT_MODEL, refresh_part, create_model_part, admin_edit_part}, {G_TYPE_STRING, SORTID_PRIORITY, "Priority", FALSE, EDIT_TEXTBOX, refresh_part, create_model_part, admin_edit_part}, {G_TYPE_STRING, SORTID_NODES_MIN, "Nodes Min", FALSE, @@ -197,7 +197,7 @@ static display_data_t create_data_part[] = { {G_TYPE_STRING, SORTID_TIMELIMIT, "Time Limit", FALSE, EDIT_TEXTBOX, refresh_part, _create_model_part2, admin_edit_part}, {G_TYPE_STRING, SORTID_PREEMPT_MODE, "PreemptMode", FALSE, - EDIT_TEXTBOX, refresh_part, _create_model_part2, admin_edit_part}, + EDIT_MODEL, refresh_part, _create_model_part2, admin_edit_part}, {G_TYPE_STRING, SORTID_PRIORITY, "Priority", FALSE, EDIT_TEXTBOX, refresh_part, _create_model_part2, admin_edit_part}, {G_TYPE_STRING, SORTID_NODES_MIN, "Nodes Min", FALSE, @@ -370,6 +370,20 @@ static void _set_active_combo_part(GtkComboBox *combo, } break; + case SORTID_PREEMPT_MODE: + if (!strcasecmp(temp_char, "cancel")) + action = 0; + else if (!strcasecmp(temp_char, "checkpoint")) + action = 1; + else if (!strcasecmp(temp_char, "off")) + action = 2; + else if (!strcasecmp(temp_char, "requeue")) + action = 3; + else if (!strcasecmp(temp_char, "suspend")) + action = 4; + else + action = 2; /* off */ + break; default: break; } @@ -431,7 +445,6 @@ static const char *_set_part_msg(update_part_msg_t *part_msg, { char *type = "", *temp_char; int temp_int = 0; - uint16_t temp_uint16 = 0; global_edit_error = 0; @@ -475,11 +488,17 @@ static const char *_set_part_msg(update_part_msg_t *part_msg, part_msg->max_time = (uint32_t)temp_int; break; case SORTID_PREEMPT_MODE: - temp_uint16 = preempt_mode_num(new_text); + if (!strcasecmp(new_text, "cancel")) + part_msg->preempt_mode = PREEMPT_MODE_CANCEL; + else if (!strcasecmp(new_text, "checkpoint")) + part_msg->preempt_mode = PREEMPT_MODE_CHECKPOINT; + else if (!strcasecmp(new_text, "off")) + part_msg->preempt_mode = PREEMPT_MODE_OFF; + else if (!strcasecmp(new_text, "requeue")) + part_msg->preempt_mode = PREEMPT_MODE_REQUEUE; + else if (!strcasecmp(new_text, "suspend")) + part_msg->preempt_mode = PREEMPT_MODE_SUSPEND; type = "preempt_mode"; - if (temp_uint16 == (uint16_t) NO_VAL) - goto return_error; - part_msg->preempt_mode = temp_uint16; break; case SORTID_PRIORITY: temp_int = strtol(new_text, (char **)NULL, 10); @@ -1103,7 +1122,6 @@ static void _update_part_record(sview_part_info_t *sview_part_info, secs2time_str((part_ptr->max_time * 60), time_buf, sizeof(time_buf)); } - gtk_tree_store_set(treestore, iter, SORTID_TIMELIMIT, time_buf, -1); _build_min_max_32_string(time_buf, sizeof(time_buf), @@ -1990,6 +2008,28 @@ static GtkListStore *_create_model_part2(int type) gtk_list_store_set(model, &iter, 0, "drain", 1, SORTID_PART_STATE, -1); break; + case SORTID_PREEMPT_MODE: + model = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_INT); + gtk_list_store_append(model, &iter); + gtk_list_store_set(model, &iter, 0, + preempt_mode_string(slurm_get_preempt_mode()), + 1, SORTID_PREEMPT_MODE, -1); + gtk_list_store_append(model, &iter); + gtk_list_store_set(model, &iter, + 0, "cancel", 1, SORTID_PREEMPT_MODE, -1); + gtk_list_store_append(model, &iter); + gtk_list_store_set(model, &iter, + 0, "checkpoint", 1, SORTID_PREEMPT_MODE,-1); + gtk_list_store_append(model, &iter); + gtk_list_store_set(model, &iter, + 0, "off", 1, SORTID_PREEMPT_MODE, -1); + gtk_list_store_append(model, &iter); + gtk_list_store_set(model, &iter, + 0, "requeue", 1, SORTID_PREEMPT_MODE, -1); + gtk_list_store_append(model, &iter); + gtk_list_store_set(model, &iter, + 0, "suspend", 1, SORTID_PREEMPT_MODE, -1); + break; } return model; @@ -2015,6 +2055,23 @@ extern GtkListStore *create_model_part(int type) 0, "no", 1, type, -1); break; case SORTID_PREEMPT_MODE: + model = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_INT); + gtk_list_store_append(model, &iter); + gtk_list_store_set(model, &iter, + 0, "cancel", 1, SORTID_PREEMPT_MODE, -1); + gtk_list_store_append(model, &iter); + gtk_list_store_set(model, &iter, + 0, "checkpoint", 1, SORTID_PREEMPT_MODE,-1); + gtk_list_store_append(model, &iter); + gtk_list_store_set(model, &iter, + 0, "off", 1, SORTID_PREEMPT_MODE, -1); + gtk_list_store_append(model, &iter); + gtk_list_store_set(model, &iter, + 0, "requeue", 1, SORTID_PREEMPT_MODE, -1); + gtk_list_store_append(model, &iter); + gtk_list_store_set(model, &iter, + 0, "suspend", 1, SORTID_PREEMPT_MODE, -1); + break; case SORTID_PRIORITY: case SORTID_TIMELIMIT: case SORTID_NODES_MIN: @@ -2054,7 +2111,6 @@ extern GtkListStore *create_model_part(int type) gtk_list_store_set(model, &iter, 0, "drain", 1, SORTID_PART_STATE, -1); break; - break; case SORTID_NODE_STATE: model = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_INT); gtk_list_store_append(model, &iter);