/*-------------------------------------------------------------------------*/ static Boolean qmonCkptGetAsk( lListElem *ckp ) { String ckpt_name = NULL; String ckpt_interface = NULL; String ckpt_ckpt_command = NULL; String ckpt_migr_command = NULL; String ckpt_rest_command = NULL; String ckpt_clean_command = NULL; String ckpt_ckpt_dir = NULL; String ckpt_signal = NULL; int state; int i; char ckpt_when[20]; static String ckpt_when_strings[] = { "s", /* shutdown of execd */ "m", /* minimum CPU interval */ "x", /* suspend of Job */ "r" /* reschedule job */ }; DENTER(GUI_LAYER, "qmonCkptGetAsk"); if (!ckp) { DEXIT; return False; } ckpt_name = XmtInputFieldGetString(ckpt_name_w); if (!ckpt_name || ckpt_name[0] == '\0') { qmonMessageShow(ckpt_ask_layout, True, "Checkpoint name required !"); DEXIT; return False; } lSetString(ckp, CK_name, qmon_trim(ckpt_name)); state = XmtChooserGetState(ckpt_interface_w); ckpt_interface = ckpt_interface_types[state]; if (!ckpt_interface || ckpt_interface[0] == '\0') { qmonMessageShow(ckpt_ask_layout, True, "Checkpoint interface required !"); DEXIT; return False; } lSetString(ckp, CK_interface, ckpt_interface); ckpt_ckpt_command = XmtInputFieldGetString(ckpt_ckpt_command_w); if (!ckpt_ckpt_command || ckpt_ckpt_command[0] == '\0') { qmonMessageShow(ckpt_ask_layout, True, "Checkpoint ckpt_command required !"); DEXIT; return False; } lSetString(ckp, CK_ckpt_command, ckpt_ckpt_command); ckpt_migr_command = XmtInputFieldGetString(ckpt_migr_command_w); if (!ckpt_migr_command || ckpt_migr_command[0] == '\0') { qmonMessageShow(ckpt_ask_layout, True, "Checkpoint migr_command required !"); DEXIT; return False; } lSetString(ckp, CK_migr_command, ckpt_migr_command); ckpt_rest_command = XmtInputFieldGetString(ckpt_rest_command_w); if (!ckpt_rest_command || ckpt_rest_command[0] == '\0') { qmonMessageShow(ckpt_ask_layout, True, "Checkpoint rest_command required !"); DEXIT; return False; } lSetString(ckp, CK_rest_command, ckpt_rest_command); ckpt_clean_command = XmtInputFieldGetString(ckpt_clean_command_w); if (!ckpt_clean_command || ckpt_clean_command[0] == '\0') { qmonMessageShow(ckpt_ask_layout, True, "Checkpoint clean_command required !"); DEXIT; return False; } lSetString(ckp, CK_clean_command, ckpt_clean_command); ckpt_ckpt_dir = XmtInputFieldGetString(ckpt_ckpt_dir_w); if (!ckpt_ckpt_dir || ckpt_ckpt_dir[0] == '\0') { qmonMessageShow(ckpt_ask_layout, True, "Checkpoint ckpt_dir required !"); DEXIT; return False; } lSetString(ckp, CK_ckpt_dir, ckpt_ckpt_dir); state = XmtChooserGetState(ckpt_when_w); strcpy(ckpt_when, ""); for (i=0; i<XtNumber(ckpt_when_strings); i++) { if (state & (1<<i)) strcat(ckpt_when, ckpt_when_strings[i]); } if (ckpt_when[0] == '\0') { qmonMessageShow(ckpt_ask_layout, True, "Checkpoint when required !"); DEXIT; return False; } lSetString(ckp, CK_when, ckpt_when); ckpt_signal = XmtInputFieldGetString(ckpt_signal_w); if (!ckpt_signal || ckpt_signal[0] == '\0') { qmonMessageShow(ckpt_ask_layout, True, "Checkpoint signal required !"); DEXIT; return False; } lSetString(ckp, CK_signal, ckpt_signal); DEXIT; return True; }
/*-------------------------------------------------------------------------*/ static Boolean qmonSchedGet(lListElem *sep) { int job_info; lList *alp = NULL; String str; char buf[BUFSIZ]; DENTER(GUI_LAYER, "qmonSchedGet"); if (!sep) { goto error_exit; } /* ** get entries from dialog */ XmtDialogGetDialogValues(qmon_sconf, &data); /** printf("<-data.algorithm: '%s'\n", data.algorithm ? data.algorithm : "-NA-"); printf("<-data.schedule_interval: '%s'\n", data.schedule_interval ? data.schedule_interval : "-NA-"); printf("<-data.sc_params: '%s'\n", data.sc_params ? data.sc_params : "-NA-"); printf("<-data.maxujobs: '%d'\n", data.maxujobs ); printf("<-data.flush_submit_secs: '%d'\n", data.flush_submit_secs ); printf("<-data.flush_finish_secs: '%d'\n", data.flush_finish_secs ); printf("<-data.max_reservation: '%d'\n", data.max_reservation ); printf("<-data.queue_sort_method: '%d'\n", data.queue_sort_method ); printf("<-data.load_adjustment_decay_time: '%s'\n", data.load_adjustment_decay_time ? data.load_adjustment_decay_time : "-NA-"); printf("<-data.load_formula: '%s'\n", data.load_formula ? data.load_formula : "-NA-"); **/ if (!data.algorithm || data.algorithm[0] == '\0') { qmonMessageShow(qmon_sconf, True, "@{Algorithm required!}"); goto error_exit; } lSetString(sep, SC_algorithm, data.algorithm); if (!data.schedule_interval || data.schedule_interval[0] == '\0') { qmonMessageShow(qmon_sconf, True, "@{Schedule Interval required!}"); goto error_exit; } lSetString(sep, SC_schedule_interval, data.schedule_interval); lSetString(sep, SC_params, data.sc_params); lSetUlong(sep, SC_maxujobs, (u_long32) data.maxujobs); lSetUlong(sep, SC_flush_submit_sec, (u_long32) data.flush_submit_secs); lSetUlong(sep, SC_flush_finish_sec, (u_long32) data.flush_finish_secs); lSetUlong(sep, SC_max_reservation, (u_long32) data.max_reservation); lSetUlong(sep, SC_queue_sort_method, (u_long32) data.queue_sort_method); /* ** load adjustments need special treatment */ lSetList(sep, SC_job_load_adjustments, data.job_load_adjustments); data.job_load_adjustments = NULL; if (!data.load_adjustment_decay_time || data.load_adjustment_decay_time[0] == '\0') { qmonMessageShow(qmon_sconf, True, "@{Load Adjustment Decay Time required!}"); goto error_exit; } lSetString(sep, SC_load_adjustment_decay_time, data.load_adjustment_decay_time); if (!data.load_formula || data.load_formula[0] == '\0') { qmonMessageShow(qmon_sconf, True, "@{Load Formula required!}"); goto error_exit; } lSetString(sep, SC_load_formula, data.load_formula); if (!data.reprioritize_interval|| data.reprioritize_interval[0] == '\0') { qmonMessageShow(qmon_sconf, True, "@{Reprioritize Interval required!}"); goto error_exit; } lSetString(sep, SC_reprioritize_interval, data.reprioritize_interval); if (!data.default_duration|| data.default_duration[0] == '\0') { qmonMessageShow(qmon_sconf, True, "@{Default duration required!}"); goto error_exit; } lSetString(sep, SC_default_duration, data.default_duration); /* ** schedd_job_info needs some extras ** see comment for schedd_job_info in qmonScheddSet */ job_info = XmtChooserGetState(sconf_job_info); switch (job_info) { case 0: lSetString(sep, SC_schedd_job_info, "false"); break; case 1: lSetString(sep, SC_schedd_job_info, "true"); break; case 2: str = XmtInputFieldGetString(sconf_job_range); { lList *range_list = NULL; range_list_parse_from_string(&range_list, &alp, str, 1, 0, INF_NOT_ALLOWED); lFreeList(&range_list); } if (alp) { qmonMessageShow(sconf_job_range, True, (StringConst)lGetString(lFirst(alp), AN_text)); lFreeList(&alp); goto error_exit; } if (str && str[0] != '\0') { strcpy(buf, "job_list "); strcat(buf, str); lSetString(sep, SC_schedd_job_info, buf); } else { qmonMessageShow(qmon_sconf, True, "@{Job Range required!}"); goto error_exit; } } /* printf("------> qmonSchedGet\n"); */ /* lWriteElemTo(sep, stdout); */ qmonSchedFreeData(); DRETURN(True); error_exit: qmonSchedFreeData(); DRETURN(False); }
/*-------------------------------------------------------------------------*/ static void qmonUsersetOk(Widget w, XtPointer cld, XtPointer cad) { String usetname = NULL; XmString xusetname = NULL; lList *lp = NULL; lList *ul = NULL; lList *alp = NULL; lListElem *up = NULL; lEnumeration *what = NULL; Boolean status = False; int usettype = 0; DENTER(GUI_LAYER, "qmonUsersetOk"); /* ** get the dialog data and */ usetname = XmtInputFieldGetString(uset_name); usettype = XmtChooserGetState(uset_type); /* ** usetname required, show warning dialog */ if (usetname && usetname[0] != '\0') { ul = XmStringToCull(uset_user_list, UE_Type, UE_name, ALL_ITEMS); /* ** do gdi stuff here */ if (add_mode) { lAddElemStr(&lp, US_name, usetname, US_Type); } else { up = lCopyElem(lGetElemStr(qmonMirrorList(SGE_US_LIST), US_name, usetname)); lp = lCreateList("userset", US_Type); lAppendElem(lp, up); } lSetList(lFirst(lp), US_entries, ul); lSetUlong(lFirst(lp), US_type, usettype); what = lWhat("%T(ALL)", US_Type); if (add_mode) { alp = qmonAddList(SGE_US_LIST, qmonMirrorListRef(SGE_US_LIST), US_name, &lp, NULL, what); } else { alp = qmonModList(SGE_US_LIST, qmonMirrorListRef(SGE_US_LIST), US_name, &lp, NULL, what); } if (!qmonMessageBox(w, alp, 0)) status = True; updateUsersetList(); xusetname = XmtCreateXmString(usetname); XmListSelectItem(userset_names, xusetname, True); XmStringFree(xusetname); lFreeWhat(&what); lFreeList(&lp); lFreeList(&alp); } else { qmonMessageShow(w, True, "Userset List Name required !"); } if (status) XtUnmanageChild(userset_ask_layout); DEXIT; }