Changeset 3203 for trunk/Ohana/src/opihi/pcontrol/CheckSystem.c
- Timestamp:
- Feb 12, 2005, 9:34:34 AM (21 years ago)
- File:
-
- 1 edited
-
trunk/Ohana/src/opihi/pcontrol/CheckSystem.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/opihi/pcontrol/CheckSystem.c
r3187 r3203 4 4 5 5 CheckBusyJobs(); 6 CheckDoneJobs(); 7 CheckDoneHosts(); 8 CheckIdleHosts(); 9 CheckDownHosts(); 10 11 /** add in different timescales for heartbeat? **/ 6 12 CheckLiveHosts(); 7 CheckDownHosts();8 CheckIdleHosts();9 10 13 } 11 14 12 CheckBusyJobs () {15 int CheckBusyJobs () { 13 16 14 queue = GetJobQueue (PCONTROL_JOB_BUSY); 15 Nobjects = queue[0].Nobjects; 17 int i, Nobject; 18 Stack *stack; 19 Job *job; 16 20 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); 20 27 } 21 28 } 22 29 23 CheckLiveHosts () {30 int CheckDoneJobs () { 24 31 25 queue = GetHostQueue (PCONTROL_HOST_IDLE); 26 Nobjects = queue[0].Nobjects; 32 int i, Nobject; 33 Stack *stack; 34 Job *job; 27 35 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 45 int 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 */ 61 int 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); 30 72 CheckHost (host); 31 73 } 32 74 33 queue = GetHostQueue(PCONTROL_HOST_BUSY);34 Nobject s = queue[0].Nobjects;75 stack = GetHostStack (PCONTROL_HOST_BUSY); 76 Nobject = stack[0].Nobject; 35 77 36 for (i = 0; i < Nobject s; i++) {37 host = Get Object (queue, QUEUE_TOP);78 for (i = 0; i < Nobject; i++) { 79 host = GetStack (stack, STACK_TOP); 38 80 CheckHost (host); 39 81 } 40 82 } 41 83 42 CheckDownHosts () {84 int CheckDownHosts () { 43 85 44 queue = GetHostQueue (PCONTROL_HOST_DOWN); 45 Nobjects = queue[0].Nobjects; 86 int i, Nobject; 87 Stack *stack; 88 Host *host; 46 89 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); 49 95 StartHost (host); 50 96 } 51 97 } 52 98 53 CheckIdleHosts () {99 int CheckIdleHosts () { 54 100 55 hqueue = HostPool_Idle; 56 jqueue = JobPool_Pending; 101 int i, Nobject; 102 Stack *stack; 103 Host *host; 57 104 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; 65 108 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); 67 115 } 68 116 } 69 70 /*** this section is tricky: need to have a plan on making WANTHOST likely71 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 host74 - keep job through N tries waiting for WANTHOST75 ***/
Note:
See TracChangeset
for help on using the changeset viewer.
