/* Connects to each server listed on the command line and sets the time */ int main(int argc, char *argv[]) { int i; if (argc <= 1) { printf("Usage: %s <server> [server [...]]\n", argv[0]); return 1; } for (i = 1; i < argc; ++i) { char *srv; char buf[256]; strcpy(buf, argv[i]); srv = strtok(buf, " "); while (srv) { int rc = query_server(srv); /* Done, time set! */ if (0 == rc) return 0; /* Fatal error, exit now. */ if (-1 == rc) return 1; /* No response, or other error, try next server */ srv = strtok(NULL, " "); } } return 1; }
std::set<std::string> query_server(T begin, T end) { if (begin == end) return std::set<std::string>(); std::vector<std::string> local(begin, end); return query_server(local); }
void uHTRPowerMezzMenu::query_servers() { for(std::map<int,Board>::iterator board = boards_.begin(); board != boards_.end(); board++) { Board * b = &board->second; query_server(b); } }
/* Connects to each server listed on the command line and sets the time */ int ntp() { int i; char value[30]; memset(value,'\0',sizeof(value)); read_file("NTP","ntpaddress",value); if(strlen(value)!=0) { int rc = query_server(value); /* Done, time set! */ if (0 == rc){ printf("set time ok!\n"); system("date"); return 0; } /* Fatal error, exit now. */ if (-1 == rc) return 1; } return 1; }
int scheduling_cycle( int sd) { server_info *sinfo; /* ptr to the server/queue/job/node info */ job_info *jinfo; /* ptr to the job to see if it can run */ int ret = SUCCESS; /* return code from is_ok_to_run_job() */ char log_msg[MAX_LOG_SIZE]; /* used to log an message about job */ char comment[MAX_COMMENT_SIZE]; /* used to update comment of job */ sched_log(PBSEVENT_DEBUG2, PBS_EVENTCLASS_REQUEST, "", "Entering Schedule"); update_cycle_status(); /* create the server / queue / job / node structures */ if ((sinfo = query_server(sd)) == NULL) { fprintf(stderr, "Problem with creating server data strucutre\n"); return(0); } if (init_scheduling_cycle(sinfo) == 0) { sched_log( PBSEVENT_DEBUG, PBS_EVENTCLASS_SERVER, sinfo -> name, "init_scheduling_cycle failed."); free_server(sinfo, 1); return(0); } /* main scheduling loop */ while ((jinfo = next_job(sinfo, 0))) { sched_log( PBSEVENT_DEBUG2, PBS_EVENTCLASS_JOB, jinfo->name, "Considering job to run"); if ((ret = is_ok_to_run_job(sd, sinfo, jinfo->queue, jinfo)) == SUCCESS) { run_update_job(sd, sinfo, jinfo->queue, jinfo); } else { if (jinfo->can_never_run) { sched_log( PBSEVENT_JOB, PBS_EVENTCLASS_JOB, jinfo->name, "Job Deleted because it would never run"); pbs_deljob(sd, jinfo->name, "Job could never run"); } jinfo->can_not_run = 1; if (translate_job_fail_code(ret, comment, log_msg)) { /* if the comment doesn't get changed, its because it hasn't changed. * if the reason for the job has not changed, we do not need to log it */ if (update_job_comment(sd, jinfo, comment) == 0) { sched_log( PBSEVENT_SCHED, PBS_EVENTCLASS_JOB, jinfo->name, log_msg); } } if ((ret != NOT_QUEUED) && cstat.strict_fifo) { update_jobs_cant_run( sd, jinfo->queue->jobs, jinfo, COMMENT_STRICT_FIFO, START_AFTER_JOB); } } } if (cstat.fair_share) update_last_running(sinfo); free_server(sinfo, 1); /* free server and queues and jobs */ sched_log(PBSEVENT_DEBUG2, PBS_EVENTCLASS_REQUEST, "", "Leaving schedule\n"); return 0; }
int uHTRPowerMezzMenu::start_test(char *responce) { if (n_checks_ < 0) return -1; int key_code; char resp; if(( key_code = getch()) == ERR) { return 0; } else { n_checks_ = shutdown_time_; *responce = key_code; char buff[64]; switch(key_code) { case KEY_DOWN: ++selected_board_; if(selected_board_ == boards_.end()) selected_board_ = boards_.begin(); draw_star(); break; case KEY_UP: if(selected_board_ == boards_.begin()) { selected_board_ = boards_.end(); --selected_board_; } else --selected_board_; draw_star(); break; case 'q': return -1; break; case 's': case 't': query_server(&selected_board_->second); if(selected_board_->second.pid != 0 ) break; sprintf(buff,"Start test on board %d [y,N]: ",selected_board_->first); mvaddstr(yinit_ + 5 + boards_.size(),xinit_ + 2,buff); resp = readch(); sprintf(buff," "); mvaddstr(yinit_ + 5 + boards_.size(),xinit_ + 2,buff); if(resp != 'y') break; if(key_code == 's') { sprintf(buff,"Enter name[%s]:",tester); mvaddstr(yinit_ + 5 + boards_.size(),xinit_ + 2,buff); char tstr[64]; readstr(tstr); sprintf(buff," "); mvaddstr(yinit_ + 5 + boards_.size(),xinit_ + 2,buff); if(strlen(tstr) != 0) { sprintf(tester,"%s",tstr); } else if (strlen(tester) == 0) { sprintf(buff,"Tester must be set to start test"); mvaddstr(yinit_ + 5 + boards_.size(),xinit_ + 2,buff); break; } selected_board_->second.mezzanines->labelAll(tester,"MINNESOTA"); usleep(100000); } if(fork() == 0) return selected_board_->first; break; case 'k': //Check if Process exists //if not ask to cleanup board if(selected_board_->second.pid == 0) break; if(kill(selected_board_->second.pid,0)) { sprintf(buff,"PID %d not found. Cleanup? [Y/n]",selected_board_->second.pid); mvaddstr(yinit_ + 5 + boards_.size(),xinit_ + 2,buff); resp = readch(); sprintf(buff," "); mvaddstr(yinit_ + 5 + boards_.size(),xinit_ + 2,buff); if(resp == KEY_ENTER || resp == 'y') { //selected_board_->second.mezzanines->setPrimaryLoad(false, false); //selected_board_->second.mezzanines->setSecondaryLoad(false, false, false, false); //selected_board_->second.mezzanines->setRun(false); selected_board_->second.s20->stopTest(); } } else { sprintf(buff,"Kill test on board %d (pid %d) [y,N]:",selected_board_->first,selected_board_->second.pid); mvaddstr(yinit_ + 5 + boards_.size(),xinit_ + 2,buff); resp = readch(); sprintf(buff," "); mvaddstr(yinit_ + 5 + boards_.size(),xinit_ + 2,buff); if(resp != 'y') break; if (kill(selected_board_->second.pid,SIGINT)) { sprintf(buff,"Failed to kill %d pid with SIGINT. Force test to stop? [y/N]", selected_board_->second.pid); mvaddstr(yinit_ + 5 + boards_.size(),xinit_ + 2,buff); resp = readch(); sprintf(buff," "); mvaddstr(yinit_ + 5 + boards_.size(),xinit_ + 2,buff); if(resp != 'y') break; if(kill(selected_board_->second.pid,SIGKILL)) { sprintf(buff,"Failed to kill %d pid with SIGKILL. You might need help.", selected_board_->second.pid); mvaddstr(yinit_ + 5 + boards_.size(),xinit_ + 2,buff); } //selected_board_->second.mezzanines->setPrimaryLoad(false, false); //selected_board_->second.mezzanines->setSecondaryLoad(false, false, false, false); //selected_board_->second.mezzanines->setRun(false); } } //break; // Purposeful flowthrough to 'd' DO NOT place anything between 'k' and 'd' case 'd': io::printf("Disabling board %d", selected_board_->first); selected_board_->second.mezzanines->disableMezzanines(); break; case 'g': /*sprintf(buff,"Start test on all idle boards[y,N]:"); mvaddstr(yinit_ + 5 + boards_.size(),xinit_ + 2,buff); resp = readch(); sprintf(buff," "); mvaddstr(yinit_ + 5 + boards_.size(),xinit_ + 2,buff); if(resp != 'y') break; { sprintf(buff,"Enter name[%s]:",tester); mvaddstr(yinit_ + 5 + boards_.size(),xinit_ + 2,buff); char tstr[64]; readstr(tstr); sprintf(buff," "); mvaddstr(yinit_ + 5 + boards_.size(),xinit_ + 2,buff); if(strlen(tstr) != 0) { sprintf(tester,"%s",tstr); } else if (strlen(tester) == 0) { sprintf(buff,"Tester must be set to start test"); mvaddstr(yinit_ + 5 + boards_.size(),xinit_ + 2,buff); break; } query_servers(); for(std::map<int,Board>::iterator board = boards_.begin(); board != boards_.end(); board++) { if(board->second.pid != 0 || !board->second.isConnected) continue; board->second.mezzanines->labelAll(tester,"Minnesota"); pid_t pid = fork(); if(pid == 0) return board->first; } }*/ break; case 'r': query_server(&selected_board_->second); if(selected_board_->second.pid != 0 ) { selected_board_->second.mezzanines->printMezzMAC(); } else { io::set_wait(true); selected_board_->second.mezzanines->readEeprom(); io::set_wait(false); } break; case 'w': { query_server(&selected_board_->second); if(selected_board_->second.pid != 0 ) break; sprintf(buff,"Enter name[%s]:",tester); mvaddstr(yinit_ + 5 + boards_.size(),xinit_ + 2,buff); char tstr[64]; readstr(tstr); sprintf(buff," "); mvaddstr(yinit_ + 5 + boards_.size(),xinit_ + 2,buff); if(strlen(tstr) != 0) { sprintf(tester,"%s",tstr); } else if (strlen(tester) == 0) { sprintf(buff,"Tester must be set to start test"); mvaddstr(yinit_ + 5 + boards_.size(),xinit_ + 2,buff); break; } selected_board_->second.mezzanines->labelAll(tester,"Minnesota"); } break; case 'p': break; case '?': io::set_wait(true); io::printf("**************Controls*****************"); io::printf("'Up/Down' - Change selected board"); io::printf("'s' - Start Short Test on selected board"); io::printf("'t' - Start Long Test on selected board"); io::printf("'k' - Kill Test on selected board"); io::printf("'d' - Disable selected board WITHOUT ASKING ANY QUESTIONS!"); io::printf("'r' - Read EEPROM on selected board"); io::printf("'w' - Write EEPROM on selected board"); io::printf("'p' - Print Mac Addresses"); //io::printf("'p' - Program EEPROM on all idle boards"); //io::printf("'g' - Start all idle boards (Go)"); io::printf("'q' - Quit"); io::set_wait(false); default: break; } return 0; } }