Changed lines at line 43
43: - on http request for executeable: reply with the binary for the right platform
44: - on http request for new task: reply with the next command to execute and all parameters.
45: - on post: validate result and mark set and collect results
46: - no more parameter set to process: exit and display statistics.
47: 1.1 Client
48: - gets via command line: Session ID, command name (path and name of the executeable), md5 checksum of the executeable, server name and port
49: - register at the server and fetch configuration
50: - check for the executeable: if not there or the MD5 checksum is wrong: fetch it (for own platform) from the server
51: - fetch a task
52: - run program
53: - check return code: if failed -> Post failture otherwise take the results and post them.
54: - fetch next task.
55: - die is there is no more task or the server is not responding.
56: - different settings for termination: delete executeable (if fetched), delete the client program?
57:
58: 1 Protocol
59: 1.1 Configuration
60: - Request: GET \http://master/config?sessionID=SESSIONID
61: - Fail (due to wrong session id): 403 (Forbidden)
62: - Successful Reply: List of Key = Value pairs.
63: {code:none}
64: DeleteProgram=Yes/No
65: DeleteClient=Yes/No
66: Ping=#
67: {code}
68: 1.1 Ping (HTTP)
69: - Ping interval is given in seconds. 0 for no ping.
70: - Purpose of the ping is that the client realises if the server is stopped or finished or even dead.
71: - Request: GET \http://master/ping?sessionID=SESSIONID&ticket=TICKET
72: - Fail due to wrong session id: 403 (Forbidden)
73: - Successful, but ticket expired (task allready done): 205 Reset Content
74: - Successful (keep on it!): 204 (No Content)
75: 1.1 Binary
76: - Request: GET \http://master/binary?sessionID=SESSIONID&name=NAME&platform=PLATFORM
77: - Fail (due to wrong session id, or wrong name): 403 (Forbidden)
78: - Fail (due to unsupported platform): 415 Unsupported Media Type
79: - Success: binary file
80: 1.1 Task
81: - Request: GET \http://master/task?sessionID=SESSIONID
82: - Fail (due to wrong session id): 403 (Forbidden)
83: - Fail (because no task left): 503 Service Unavailable
84: - Success:
85: {code:none}
86: Ticket=# (unique number (usually 5 digits))
87: Timeout=# (in seconds)
88: CommandLine=commandline
89: [Input]*
90: File=filename (or "stdin")
91: --begin content--
92: real file content here (binary)
93: --end content--
94: [Result]+
95: Name=resultname
96: File=filename (or "stdout")
97: {code}
98: 1.1 Task completed
99: - Successful: POST \http://master/complete?sessionID=SESSIONID&ticket=TICKET
100: {code:none}
101: [Result]+
102: Name=resultname
103: --begin content--
104: file content here (binary)
105: --end content--
106: {code}
107: - Failed: GET \http://master/failed?sessionID=SESSIONID&ticket=TICKET
108: - Reply Fail due to wrong session id: 403 (Forbidden)
109: - Reply Otherwise: 200 OK
110: 1 Implementation Details
111: 1.1 Configuation and Files
112: - Cluster file: list of computers, one per line
113: - Parameter file: csv file, cells seperated with |, parameter names in the headline and every following line contains one parameter set. All lines have to have the same amount of cells like the headline!
114: - Commandline specification: Command line: a perl syntax string with parameter Variables for the parameters; Input files: Name of the file and parameter name to write in.
115: - Result specification: A result consists of a list of name and value pairs. Where name specifies the name of the particular output and value decides where the output comes from. For example output="stdout", outputfile="out.txt".
116: - Validation function: function template that gets the parameter set and the result of the programm and returns success or not
117: - Collection function: gets the parameters set and the result of the programm and can do whatever with it (usually print it in a file).
118: 1.1 Error detection
119: Remote shell command (ssh) termination code:
120: - 0 => Success: The program has been executed with success!
121: - otherswise => Failure: Can have the following reasons: connection failed, programm not found or terminated without success.
122: - on http request for worker executeable: reply with the binary for the right platform
123: - on http request for new task: reply with the next command to execute and all parameters.
124: - on post: validate result and mark set and collect results
125: - no more parameter set to process: exit and display statistics.
126: 1.1 Client
127: - gets via command line: Session ID, command name (path and name of the executeable), md5 checksum of the executeable, server name and port
128: - register at the server and fetch configuration
129: - check for the executeable: if not there or the MD5 checksum is wrong: fetch it (for own platform) from the server
130: - fetch a task
131: - run worker
132: - check return code: if failed -> Post failture otherwise take the results and post them.
133: - fetch next task.
134: - die is there is no more task or the server is not responding.
135: - different settings for termination: delete executeable (if fetched), delete the client program?
136:
137: 1 Protocol
138: 1.1 Configuration
139: - Request: GET \http://master/config?sessionID=SESSIONID
140: - Fail (due to wrong session id): 403 (Forbidden)
141: - Successful Reply: List of Key = Value pairs.
142: {code:none}
143: DeleteWorker=Yes/No
144: DeleteClient=Yes/No
145: Ping=#
146: {code}
147: 1.1 Ping (HTTP)
148: - Ping interval is given in seconds. 0 for no ping.
149: - Purpose of the ping is that the client realises if the server is stopped or finished or even dead.
150: - Request: GET \http://master/ping?sessionID=SESSIONID&ticket=TICKET
151: - Fail due to wrong session id: 403 (Forbidden)
152: - Successful, but ticket expired (task allready done): 205 Reset Content
153: - Successful (keep on it!): 204 (No Content)
154: 1.1 Worker
155: - Request: GET \http://master/worker?sessionID=SESSIONID&name=NAME&platform=PLATFORM
156: - Fail (due to wrong session id, or wrong name): 403 (Forbidden)
157: - Fail (due to unsupported platform): 415 Unsupported Media Type
158: - Success: binary file
159: 1.1 Task
160: - Request: GET \http://master/task?sessionID=SESSIONID
161: - Fail (due to wrong session id): 403 (Forbidden)
162: - Fail (because no task left): 503 Service Unavailable
163: - Success:
164: {code:none}
165: Ticket=# (unique number (usually 5 digits))
166: Timeout=# (in seconds)
167: CommandLine=commandline
168: [Input]*
169: File=filename (or "stdin")
170: --begin content--
171: real file content here (binary)
172: --end content--
173: [Result]+
174: Name=resultname
175: File=filename (or "stdout")
176: {code}
177: 1.1 Task completed
178: - Successful: POST \http://master/complete?sessionID=SESSIONID&ticket=TICKET
179: {code:none}
180: [Result]+
181: Name=resultname
182: --begin content--
183: file content here (binary)
184: --end content--
185: {code}
186: - Failed: GET \http://master/failed?sessionID=SESSIONID&ticket=TICKET
187: - Reply Fail due to wrong session id: 403 (Forbidden)
188: - Reply Otherwise: 200 OK
189: 1 Implementation Details
190: 1.1 Configuation and Files
191: - Cluster file: list of computers, one per line
192: - Parameter file: csv file, cells seperated with |, parameter names in the headline and every following line contains one parameter set. All lines have to have the same amount of cells like the headline!
193: - Specification of worker: Command line: a perl syntax string with parameter Variables for the parameters; Input files: Name of the file and parameter name to write in.
194: - Result specification: A result consists of a list of name and value pairs. Where name specifies the name of the particular output and value decides where the output comes from. For example output="stdout", outputfile="out.txt".
195: - Validation function: function template that gets the parameter set and the result of the worker and returns success or not
196: - Collection function: gets the parameters set and the result of the worker and can do whatever with it (usually print it in a file).
197: 1.1 Error detection
198: Remote shell command (ssh) termination code:
199: - 0 => Success: The worker has been executed with success!
200: - otherswise => Failure: Can have the following reasons: connection failed, program not found or terminated without success.