Changeset 3212
- Timestamp:
- Feb 13, 2005, 9:37:58 PM (21 years ago)
- Location:
- trunk/Ohana/src/opihi
- Files:
-
- 1 added
- 18 edited
-
cmd.basic/quit.c (modified) (1 diff)
-
include/pcontrol.h (modified) (3 diffs)
-
pclient/ChildOps.c (modified) (1 diff)
-
pcontrol/CheckBusyJob.c (modified) (2 diffs)
-
pcontrol/CheckDoneHost.c (modified) (2 diffs)
-
pcontrol/CheckHost.c (modified) (1 diff)
-
pcontrol/CheckSystem.c (modified) (2 diffs)
-
pcontrol/GetJobOutput.c (modified) (2 diffs)
-
pcontrol/HostOps.c (modified) (5 diffs)
-
pcontrol/JobOps.c (modified) (4 diffs)
-
pcontrol/Makefile (modified) (1 diff)
-
pcontrol/ResetJob.c (modified) (2 diffs)
-
pcontrol/StartJob.c (modified) (2 diffs)
-
pcontrol/StopHosts.c (added)
-
pcontrol/host.c (modified) (5 diffs)
-
pcontrol/job.c (modified) (1 diff)
-
pcontrol/pclient.c (modified) (3 diffs)
-
pcontrol/pcontrol.c (modified) (2 diffs)
-
pcontrol/status.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/opihi/cmd.basic/quit.c
r2598 r3212 7 7 fprintf (stderr, "Goodbye!\n"); 8 8 cleanup (); 9 fprintf (stderr, "Cleanup done!\n"); 9 10 10 11 state = 0; -
trunk/Ohana/src/opihi/include/pcontrol.h
r3203 r3212 110 110 static char *CONNECT; /* connection method (ssh, rsh, etc) */ 111 111 static char *PCLIENT; /* shell on remote host (eg, pclient) */ 112 # define PCLIENT_PROMPT "pclient:" 112 113 113 114 # define FREE(X) if (X != NULL) { free (X); } … … 130 131 void AddHost (char *hostname); 131 132 void DownHost (Host *host); 133 void OffHost (Host *host); 132 134 void DelHost (Host *host); 133 135 int CheckSystem (); … … 149 151 int GetJobOutput (Job *job, char *channel); 150 152 int ResetJob (Job *job); 151 int PclientCommand (Host *host, char *command, IOBuffer *buffer);153 int PclientCommand (Host *host, char *command, char *response, IOBuffer *buffer); 152 154 int rconnect (char *command, char *hostname, char *shell, int *stdio); 153 155 int CheckHost (Host *host); -
trunk/Ohana/src/opihi/pclient/ChildOps.c
r3211 r3212 35 35 if (dtime < 0.0001) Nbad ++; 36 36 if (dtime > 0.01) Nbad = 0; 37 if (Nbad > 10) { 38 fprintf (stderr, "parent shutdown\n"); 39 exit (2); 40 } 37 if (Nbad > 10) exit (2); 41 38 42 39 /* this is a bit lame : we must exit if calling process exits */ 43 40 ppid = getppid(); 44 if (ppid == 1) { 45 fprintf (stderr, "parent shutdown\n"); 46 exit (2); 47 } 41 if (ppid == 1) exit (2); 48 42 49 43 CheckChildStatus (); -
trunk/Ohana/src/opihi/pcontrol/CheckBusyJob.c
r3203 r3212 16 16 InitIOBuffer (&buffer, 0x100); 17 17 18 status = PclientCommand (host, "status", &buffer);18 status = PclientCommand (host, "status", PCLIENT_PROMPT, &buffer); 19 19 20 20 /* check on success of pclient command */ … … 34 34 35 35 case PCLIENT_GOOD: 36 fprintf (stderr, "message received \n");36 fprintf (stderr, "message received (CheckBusyJob)\n"); 37 37 break; 38 38 -
trunk/Ohana/src/opihi/pcontrol/CheckDoneHost.c
r3203 r3212 9 9 InitIOBuffer (&buffer, 0x100); 10 10 11 status = PclientCommand (host, "reset", &buffer);11 status = PclientCommand (host, "reset", PCLIENT_PROMPT, &buffer); 12 12 13 13 /* check on success of pclient command */ … … 27 27 28 28 case PCLIENT_GOOD: 29 fprintf (stderr, "message received \n");29 fprintf (stderr, "message received (CheckDoneHost)\n"); 30 30 break; 31 31 -
trunk/Ohana/src/opihi/pcontrol/CheckHost.c
r3211 r3212 9 9 InitIOBuffer (&buffer, 0x100); 10 10 11 status = PclientCommand (host, "echo OK", &buffer);11 status = PclientCommand (host, "echo OK", PCLIENT_PROMPT, &buffer); 12 12 switch (status) { 13 13 case 0: -
trunk/Ohana/src/opihi/pcontrol/CheckSystem.c
r3203 r3212 11 11 /** add in different timescales for heartbeat? **/ 12 12 CheckLiveHosts(); 13 14 /* status (0, NULL); */ 13 15 } 14 16 … … 54 56 for (i = 0; i < Nobject; i++) { 55 57 host = GetStack (stack, STACK_TOP); 56 StartHost (host);58 CheckDoneHost (host); 57 59 } 58 60 } -
trunk/Ohana/src/opihi/pcontrol/GetJobOutput.c
r3203 r3212 20 20 /** must have a valid host : if not, move to pending? **/ 21 21 host = job[0].host; 22 status = PclientCommand (host, channel, buffer);22 status = PclientCommand (host, channel, PCLIENT_PROMPT, buffer); 23 23 24 24 /* check on success of pclient command */ … … 37 37 38 38 case PCLIENT_GOOD: 39 fprintf (stderr, "message received \n");39 fprintf (stderr, "message received (GetJobOutput : %s)\n", channel); 40 40 return (TRUE); 41 41 -
trunk/Ohana/src/opihi/pcontrol/HostOps.c
r3204 r3212 37 37 int PutHost (Host *host, int StackID, int where) { 38 38 39 int stat us;39 int stat; 40 40 Stack *stack; 41 41 … … 44 44 45 45 host[0].stack = StackID; 46 status = PutStack (stack, where, host); 47 return (status); 46 stat = PutStack (stack, where, host); 47 /* status (0, NULL); */ 48 return (stat); 48 49 } 49 50 … … 70 71 71 72 for (i = 0; i < stack[0].Nobject; i++) { 72 host = (Host *) stack[0].object ;73 host = (Host *) stack[0].object[i]; 73 74 if (host[0].HostID == HostID) { 74 75 return (i); … … 88 89 89 90 for (i = 0; i < stack[0].Nobject; i++) { 90 host = (Host *) stack[0].object ;91 host = (Host *) stack[0].object[i]; 91 92 if (!strcasecmp (host[0].hostname, name)) { 92 93 return (i); … … 113 114 } 114 115 115 void DownHost (Host *host) {116 117 CLOSE (host[0].stdin);118 CLOSE (host[0].stdout);119 CLOSE (host[0].stderr);120 host[0].job = NULL;121 PutHost (host, PCONTROL_HOST_DOWN, STACK_BOTTOM);122 }123 124 116 void DelHost (Host *host) { 125 117 FREE (host[0].hostname); -
trunk/Ohana/src/opihi/pcontrol/JobOps.c
r3204 r3212 37 37 int PutJob (Job *job, int StackID, int where) { 38 38 39 int stat us;39 int stat; 40 40 Stack *stack; 41 41 … … 46 46 job[0].state = StackID; 47 47 job[0].stack = StackID; 48 status = PutStack (stack, where, job); 49 return (status); 48 stat = PutStack (stack, where, job); 49 /* status (0, NULL); */ 50 return (stat); 50 51 } 51 52 … … 72 73 73 74 for (i = 0; i < stack[0].Nobject; i++) { 74 job = (Job *) stack[0].object ;75 job = (Job *) stack[0].object[i]; 75 76 if (job[0].JobID == JobID) { 76 77 return (i); … … 163 164 164 165 void LinkJobAndHost (Job *job, Host *host) { 166 int N; 167 165 168 job[0].host = host; 166 169 host[0].job = job; 170 171 # if (0) 172 /*** need to pop host off of correct stack XXX ***/ 173 N = FindHost (host[0].HostID, host[0].stack); 174 if (N < 0) { 175 fprintf (stderr, "programming error: host is not found in current stack\n"); 176 exit (2); 177 } 178 host = GetHost (host[0].stack, N); 179 # endif 180 181 /*** need to pop job off of correct stack XXX ***/ 182 N = FindJob (job[0].JobID, job[0].stack); 183 if (N < 0) { 184 fprintf (stderr, "programming error: job is not found in current stack\n"); 185 exit (2); 186 } 187 job = GetJob (job[0].stack, N); 188 189 /*** this is fairly crazy : the only reason this works is cause I 190 get the same host ptr here and in CheckIdleHost 191 ***/ 167 192 } -
trunk/Ohana/src/opihi/pcontrol/Makefile
r3203 r3212 45 45 $(SDIR)/ResetJob.$(ARCH).o \ 46 46 $(SDIR)/StartHost.$(ARCH).o \ 47 $(SDIR)/StopHosts.$(ARCH).o \ 47 48 $(SDIR)/StartJob.$(ARCH).o 48 49 -
trunk/Ohana/src/opihi/pcontrol/ResetJob.c
r3203 r3212 15 15 job[0].Reset = TRUE; 16 16 17 status = PclientCommand (host, "reset", &buffer);17 status = PclientCommand (host, "reset", PCLIENT_PROMPT, &buffer); 18 18 19 19 /* check on success of pclient command */ … … 32 32 33 33 case PCLIENT_GOOD: 34 fprintf (stderr, "message received \n");34 fprintf (stderr, "message received (ResetJob)\n"); 35 35 FreeIOBuffer (&buffer); 36 36 return (TRUE); -
trunk/Ohana/src/opihi/pcontrol/StartJob.c
r3203 r3212 30 30 } 31 31 32 status = PclientCommand (host, line, &buffer);32 status = PclientCommand (host, line, PCLIENT_PROMPT, &buffer); 33 33 free (line); 34 34 … … 44 44 45 45 case PCLIENT_GOOD: 46 fprintf (stderr, "message received \n");46 fprintf (stderr, "message received (StartJob)\n"); 47 47 break; 48 48 -
trunk/Ohana/src/opihi/pcontrol/host.c
r3204 r3212 3 3 int host (int argc, char **argv) { 4 4 5 int N, Delete, Off, On ;5 int N, Delete, Off, On, Start, Stop, Check; 6 6 Host *host; 7 7 … … 26 26 /* this section needs some help: find the specified host in the stacks */ 27 27 On = FALSE; 28 if ((N = get_argument (argc, argv, "-o ff"))) {28 if ((N = get_argument (argc, argv, "-on"))) { 29 29 if (Delete || Off) { 30 30 fprintf (stderr, "only one of -delete, -off, -on\n"); … … 35 35 } 36 36 37 if (argc < 2) { 37 /* this section needs some help: find the specified host in the stacks */ 38 Start = FALSE; 39 if ((N = get_argument (argc, argv, "-start"))) { 40 remove_argument (N, &argc, argv); 41 Start = TRUE; 42 } 43 44 /* this section needs some help: find the specified host in the stacks */ 45 Check = FALSE; 46 if ((N = get_argument (argc, argv, "-check"))) { 47 remove_argument (N, &argc, argv); 48 Check = TRUE; 49 } 50 51 /* this section needs some help: find the specified host in the stacks */ 52 Stop = FALSE; 53 if ((N = get_argument (argc, argv, "-stop"))) { 54 remove_argument (N, &argc, argv); 55 Stop = TRUE; 56 } 57 58 if (argc != 2) { 38 59 fprintf (stderr, "USAGE: host (hostname) [-delete]\n"); 39 60 return (FALSE); … … 62 83 } 63 84 85 if (Check) { 86 N = FindNamedHost (argv[1], PCONTROL_HOST_IDLE); 87 if (N >= 0) { 88 host = GetHost (PCONTROL_HOST_IDLE, N); 89 CheckHost (host); 90 return (TRUE); 91 } 92 N = FindNamedHost (argv[1], PCONTROL_HOST_BUSY); 93 if (N >= 0) { 94 host = GetHost (PCONTROL_HOST_BUSY, N); 95 CheckHost (host); 96 return (TRUE); 97 } 98 fprintf (stderr, "host %s is not BUSY or IDLE\n", argv[1]); 99 return (FALSE); 100 } 101 102 if (Start) { 103 N = FindNamedHost (argv[1], PCONTROL_HOST_DOWN); 104 if (N < 0) { 105 fprintf (stderr, "host %s is not DOWN\n", argv[1]); 106 return (FALSE); 107 } 108 host = GetHost (PCONTROL_HOST_DOWN, N); 109 StartHost (host); 110 return (TRUE); 111 } 112 if (Stop) { 113 N = FindNamedHost (argv[1], PCONTROL_HOST_IDLE); 114 if (N < 0) { 115 fprintf (stderr, "host %s is not IDLE\n", argv[1]); 116 return (FALSE); 117 } 118 host = GetHost (PCONTROL_HOST_IDLE, N); 119 StopHost (host); 120 DownHost (host); 121 return (TRUE); 122 } 123 64 124 if (Off) { 65 125 N = FindNamedHost (argv[1], PCONTROL_HOST_IDLE); 66 126 if (N >= 0) { 67 127 host = GetHost (PCONTROL_HOST_IDLE, N); 68 CLOSE (host[0].stdin); 69 CLOSE (host[0].stdout); 70 CLOSE (host[0].stderr); 71 PutHost (host, PCONTROL_HOST_OFF, STACK_BOTTOM); 128 StopHost (host); 129 OffHost (host); 72 130 return (TRUE); 73 131 } … … 75 133 if (N >= 0) { 76 134 host = GetHost (PCONTROL_HOST_DOWN, N); 77 PutHost (host, PCONTROL_HOST_OFF, STACK_BOTTOM);135 OffHost (host); 78 136 return (TRUE); 79 137 } -
trunk/Ohana/src/opihi/pcontrol/job.c
r3203 r3212 48 48 JobID = AddJob (Host, Mode, Timeout, targc, targv); 49 49 FREE (Host); 50 51 fprintf (stdout, "STATUS %d\n", JobID);52 50 return (TRUE); 53 54 51 } -
trunk/Ohana/src/opihi/pcontrol/pclient.c
r3211 r3212 1 1 # include "pcontrol.h" 2 # define PCLIENT_TIMEOUT 20 2 3 3 # define PCLIENT_TIMEOUT 20 4 # define PCLIENT_PROMPT "pclient:" 5 6 int PclientCommand (Host *host, char *command, IOBuffer *buffer) { 4 int PclientCommand (Host *host, char *command, char *response, IOBuffer *buffer) { 7 5 8 6 int i; … … 10 8 char *line; 11 9 10 ReadtoIOBuffer (buffer, host[0].stdout); 11 FlushIOBuffer (buffer); 12 12 13 /* send command to client (adding on \n) */ 13 fprintf (stderr, "send: %s (%d)\n", command, buffer[0].Nbuffer);14 /* fprintf (stderr, "send: %s (%d)\n", command, buffer[0].Nbuffer); */ 14 15 ALLOCATE (line, char, MAX (1, strlen(command))); 15 16 sprintf (line, "%s\n", command); … … 25 26 for (i = 0; (i < PCLIENT_TIMEOUT) && (status == -1) && (line == NULL); i++) { 26 27 status = ReadtoIOBuffer (buffer, host[0].stdout); 27 line = memstr (buffer[0].buffer, PCLIENT_PROMPT, buffer[0].Nbuffer); 28 line = memstr (buffer[0].buffer, response, buffer[0].Nbuffer); 29 if (status == -1) usleep (10000); 28 30 } 29 31 if (status == 0) return (PCLIENT_DOWN); 30 32 if (status == -1) return (PCLIENT_HUNG); 31 fprintf (stderr, "buffer.buffer: %s\n", buffer[0].buffer);33 /* fprintf (stderr, "buffer.buffer: %s\n", buffer[0].buffer); */ 32 34 return (PCLIENT_GOOD); 33 35 } -
trunk/Ohana/src/opihi/pcontrol/pcontrol.c
r3203 r3212 45 45 rl_attempted_completion_function = command_completer; 46 46 rl_event_hook = CheckSystem; 47 /* rl_set_keyboard_input_timeout (2000000); */ 47 48 48 49 set_str_variable ("HISTORY", opihi_history); … … 57 58 /* add program-dependent exit functions here */ 58 59 void cleanup () { 60 DownHosts (); 59 61 return; 60 62 } -
trunk/Ohana/src/opihi/pcontrol/status.c
r3203 r3212 1 1 # include "pcontrol.h" 2 char jobname[6][32] = {"PENDING", "BUSY", "EXIT", "CRASH", "HUNG", "DONE"}; 3 char hostname[5][32] = {"IDLE", "BUSY", "DOWN", "DONE", "OFF"}; 2 4 3 5 int status (int argc, char **argv) { … … 28 30 stack = GetJobStack (Nstack); 29 31 Nobject = stack[0].Nobject; 30 fprintf (stderr, "job stack % d: %d objects\n", Nstack, Nobject);32 fprintf (stderr, "job stack %s: %d objects\n", jobname[Nstack], Nobject); 31 33 32 34 for (i = 0; i < Nobject; i++) { … … 49 51 stack = GetHostStack (Nstack); 50 52 Nobject = stack[0].Nobject; 51 fprintf (stderr, "host stack % d: %d objects\n", Nstack, Nobject);53 fprintf (stderr, "host stack %s: %d objects\n", hostname[Nstack], Nobject); 52 54 53 55 for (i = 0; i < Nobject; i++) {
Note:
See TracChangeset
for help on using the changeset viewer.
