IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Feb 12, 2005, 9:34:34 AM (21 years ago)
Author:
eugene
Message:

pcontrol dev

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/pcontrol/CheckSystem.c

    r3187 r3203  
    44
    55  CheckBusyJobs();
     6  CheckDoneJobs();
     7  CheckDoneHosts();
     8  CheckIdleHosts();
     9  CheckDownHosts();
     10
     11  /** add in different timescales for heartbeat? **/
    612  CheckLiveHosts();
    7   CheckDownHosts();
    8   CheckIdleHosts();
    9 
    1013}
    1114
    12 CheckBusyJobs () {
     15int CheckBusyJobs () {
    1316
    14   queue = GetJobQueue (PCONTROL_JOB_BUSY);
    15   Nobjects = queue[0].Nobjects;
     17  int i, Nobject;
     18  Stack *stack;
     19  Job   *job;
    1620
    17   for (i = 0; i < Nobjects; i++) {
    18     job = GetObject (queue, QUEUE_TOP);
    19     CheckJob (job);
     21  stack = GetJobStack (PCONTROL_JOB_BUSY);
     22  Nobject = stack[0].Nobject;
     23
     24  for (i = 0; i < Nobject; i++) {
     25    job = GetStack (stack, STACK_TOP);
     26    CheckBusyJob (job);
    2027  }
    2128}
    2229
    23 CheckLiveHosts () {
     30int CheckDoneJobs () {
    2431
    25   queue = GetHostQueue (PCONTROL_HOST_IDLE);
    26   Nobjects = queue[0].Nobjects;
     32  int i, Nobject;
     33  Stack *stack;
     34  Job   *job;
    2735
    28   for (i = 0; i < Nobjects; i++) {
    29     host = GetObject (queue, QUEUE_TOP);
     36  stack = GetJobStack (PCONTROL_JOB_DONE);
     37  Nobject = stack[0].Nobject;
     38
     39  for (i = 0; i < Nobject; i++) {
     40    job = GetStack (stack, STACK_TOP);
     41    CheckDoneJob (job);
     42  }
     43}
     44
     45int CheckDoneHosts () {
     46
     47  int i, Nobject;
     48  Stack *stack;
     49  Host  *host;
     50
     51  stack = GetHostStack (PCONTROL_HOST_DONE);
     52  Nobject = stack[0].Nobject;
     53
     54  for (i = 0; i < Nobject; i++) {
     55    host = GetStack (stack, STACK_TOP);
     56    StartHost (host);
     57  }
     58}
     59
     60/* this is just a heartbeat check */
     61int CheckLiveHosts () {
     62
     63  int i, Nobject;
     64  Stack *stack;
     65  Host  *host;
     66
     67  stack = GetHostStack (PCONTROL_HOST_IDLE);
     68  Nobject = stack[0].Nobject;
     69
     70  for (i = 0; i < Nobject; i++) {
     71    host = GetStack (stack, STACK_TOP);
    3072    CheckHost (host);
    3173  }
    3274
    33   queue = GetHostQueue (PCONTROL_HOST_BUSY);
    34   Nobjects = queue[0].Nobjects;
     75  stack = GetHostStack (PCONTROL_HOST_BUSY);
     76  Nobject = stack[0].Nobject;
    3577
    36   for (i = 0; i < Nobjects; i++) {
    37     host = GetObject (queue, QUEUE_TOP);
     78  for (i = 0; i < Nobject; i++) {
     79    host = GetStack (stack, STACK_TOP);
    3880    CheckHost (host);
    3981  }
    4082}
    4183
    42 CheckDownHosts () {
     84int CheckDownHosts () {
    4385
    44   queue = GetHostQueue (PCONTROL_HOST_DOWN);
    45   Nobjects = queue[0].Nobjects;
     86  int i, Nobject;
     87  Stack *stack;
     88  Host  *host;
    4689
    47   for (i = 0; i < Nobjects; i++) {
    48     host = GetObject (queue, QUEUE_TOP);
     90  stack = GetHostStack (PCONTROL_HOST_DOWN);
     91  Nobject = stack[0].Nobject;
     92
     93  for (i = 0; i < Nobject; i++) {
     94    host = GetStack (stack, STACK_TOP);
    4995    StartHost (host);
    5096  }
    5197}
    5298
    53 CheckIdleHosts () {
     99int CheckIdleHosts () {
    54100
    55   hqueue = HostPool_Idle;
    56   jqueue = JobPool_Pending;
     101  int i, Nobject;
     102  Stack *stack;
     103  Host  *host;
    57104
    58   for (i = 0; i < hqueue[0].Nobjects; i++) {
    59     host = (Host *) hqueue[0].object[i];
    60     /** need to add a timeout here **/
    61     for (j = 0; j < jqueue[0].Nobjects; j++) {
    62       job = (Job *) jqueue[0].object[j];
    63       if ((job[0].mode == PCONTROL_JOB_ANYHOST) ||
    64           (!strcasecmp (job[0].hostname, host[0].hostname))
     105  /* check if there are any pending jobs, otherwise skip step */
     106  stack = GetJobStack (PCONTROL_JOB_PENDING);
     107  if (!stack[0].Nobject) return;
    65108
    66     StartHost (host);
     109  stack = GetHostStack (PCONTROL_HOST_IDLE);
     110  Nobject = stack[0].Nobject;
     111
     112  for (i = 0; i < Nobject; i++) {
     113    host = GetStack (stack, STACK_TOP);
     114    CheckIdleHost (host);
    67115  }
    68116}
    69 
    70 /*** this section is tricky: need to have a plan on making WANTHOST likely
    71      but not required  (on average, every host is currently in use.  some possible tricks:
    72 
    73      - search through PENDING for N entries looking for WANTHOST / matching host
    74      - keep job through N tries waiting for WANTHOST
    75 ***/
Note: See TracChangeset for help on using the changeset viewer.