Exemple #1
0
/* 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;
}
Exemple #2
0
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;
}
Exemple #5
0
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;
    }
}