27 |
|
""" |
28 |
|
Open the communication with an Analysis Server by passing the server URL and the port |
29 |
|
""" |
30 |
+ |
|
31 |
+ |
self.ServerTwiki = 'https://twiki.cern.ch/twiki/bin/view/CMS/CrabServer#Server_available_for_users' |
32 |
|
|
33 |
|
self.dontMoveProxy = False |
34 |
|
if string.lower(cfg_params.get("CRAB.scheduler")) in ['lsf','caf']: |
39 |
|
self.userSubj = '' |
40 |
|
self.serverName = serverName |
41 |
|
|
42 |
+ |
CliServerParams(self) |
43 |
|
self.crab_task_name = common.work_space.topDir().split('/')[-2] # nice task name "crab_0_..." |
44 |
|
|
45 |
|
x509 = proxyPath |
92 |
|
|
93 |
|
ret = -1 |
94 |
|
ret = self.asSession.transferTaskAndSubmit(blXml, cmdXML, blTaskName) |
95 |
< |
logMsg = '' |
95 |
> |
|
96 |
|
if ret == 0: |
97 |
|
# success |
98 |
|
logMsg = 'Task %s successfully submitted to server %s'%(self.crab_task_name, self.serverName) |
99 |
|
common.logger.message(logMsg+'\n') |
100 |
|
else: |
101 |
< |
if ret == 10: |
102 |
< |
# overlaod |
103 |
< |
logMsg = 'The server %s refused to accept the task %s because it is overloaded'%(self.serverName, self.crab_task_name) |
104 |
< |
elif ret == 101: |
105 |
< |
# overlaod |
106 |
< |
logMsg = 'The server %s refused the submission %s because you asked a too large task. Please submit by range'%(self.serverName, self.crab_task_name) |
107 |
< |
elif ret == 11: |
108 |
< |
# failed to push message in DB |
109 |
< |
logMsg = 'Backend unable to release messages to trigger the computation of task %s'%self.crab_task_name |
110 |
< |
elif ret == 12: |
111 |
< |
# failed SOAP communication |
112 |
< |
logMsg = 'Error during SOAP communication with server %s.\n'%self.serverName |
113 |
< |
logMsg +='\t ----- The server could be under maintainance. ----- ' |
114 |
< |
else: |
115 |
< |
logMsg = 'Unexpected return code from server %s: %d'%(self.serverName, ret) |
101 |
> |
self.checkServerResponse(ret) |
102 |
> |
|
103 |
> |
return ret |
104 |
> |
|
105 |
> |
def checkServerResponse(self, ret): |
106 |
> |
""" |
107 |
> |
analyze the server return codes |
108 |
> |
""" |
109 |
> |
|
110 |
> |
logMsg = '' |
111 |
> |
if ret == 10: |
112 |
> |
# overlaod |
113 |
> |
logMsg = 'Error The server %s refused to accept the task %s because it is overloaded\n'%(self.serverName, self.crab_task_name) |
114 |
> |
logMsg += '\t For Further infos please contact the server Admin: %s'%self.server_admin |
115 |
> |
elif ret == 14: |
116 |
> |
# Draining |
117 |
> |
logMsg = 'Error The server %s refused to accept the task %s because it is Draining\n'%(self.serverName, self.crab_task_name) |
118 |
> |
logMsg += '\t For Further infos please contact the server Admin: %s'%self.server_admin |
119 |
> |
elif ret == 101: |
120 |
> |
# overlaod |
121 |
> |
logMsg = 'Error The server %s refused the submission %s because you asked a too large task. Please submit by range'%(self.serverName, self.crab_task_name) |
122 |
> |
elif ret == 11: |
123 |
> |
# failed to push message in DB |
124 |
> |
logMsg = 'Backend unable to release messages to trigger the computation of task %s'%self.crab_task_name |
125 |
> |
elif ret == 12: |
126 |
> |
# failed SOAP communication |
127 |
> |
logMsg = 'Error The server %s refused to accept the task %s. It could be under maintainance. \n'%(self.serverName, self.crab_task_name) |
128 |
> |
logMsg += '\t For Further infos please contact the server Admin: %s'%self.server_admin |
129 |
> |
elif ret == 20: |
130 |
> |
# failed to push message in PA |
131 |
> |
logMsg = 'Backend unable to release messages to trigger the computation of task %s'%self.crab_task_name |
132 |
> |
elif ret == 22: |
133 |
> |
# failed SOAP communication |
134 |
> |
logMsg = 'Error during SOAP communication with server %s'%self.serverName |
135 |
> |
elif ret == 33: |
136 |
> |
# uncompatible client version |
137 |
> |
logMsg = 'Error You are using a wrong client version for server: %s\n'%self.serverName |
138 |
> |
logMsg += '\t For further informations about "Servers available for users" please check here:\n \t%s '%self.ServerTwiki |
139 |
> |
else: |
140 |
> |
logMsg = 'Unexpected return code from server %s: %d'%(self.serverName, ret) |
141 |
|
|
142 |
+ |
# print loggings |
143 |
+ |
if logMsg != '': |
144 |
|
common.logger.write(logMsg+'\n') |
145 |
|
raise CrabException(logMsg) |
146 |
|
return ret |
237 |
|
xmlString = '' |
238 |
|
cfile = minidom.Document() |
239 |
|
|
240 |
+ |
ver = common.prog_version_str |
241 |
|
node = cfile.createElement("TaskCommand") |
242 |
|
node.setAttribute("Task", str(taskUName) ) |
243 |
|
node.setAttribute("Subject", str(self.userSubj) ) |
246 |
|
node.setAttribute("Scheduler", str(self.cfg_params['CRAB.scheduler']) ) |
247 |
|
node.setAttribute("Flavour", str(flavour) ) |
248 |
|
node.setAttribute("Type", str(type) ) |
249 |
+ |
node.setAttribute("ClientVersion", str(ver) ) |
250 |
|
|
251 |
|
# create a mini-cfg to be transfered to the server |
252 |
|
miniCfg = {} |
308 |
|
if not cmdXML: |
309 |
|
raise CrabException('Error while creating the Command XML') |
310 |
|
return -3 |
311 |
< |
|
311 |
> |
|
312 |
|
ret = -1 |
313 |
|
ret = self.asSession.sendCommand(cmdXML, blTaskName) |
314 |
|
logMsg = '' |
316 |
|
if ret == 0: |
317 |
|
# success |
318 |
|
debugMsg = 'Command successfully sent to server %s for task %s'%(self.serverName, self.crab_task_name) |
287 |
– |
elif ret == 101: |
288 |
– |
# overlaod |
289 |
– |
logMsg = 'The server %s refused the submission %s because you asked to handle a too large task. Please submit by range'%(self.serverName, self.crab_task_name) |
290 |
– |
elif ret == 20: |
291 |
– |
# failed to push message in PA |
292 |
– |
logMsg = 'Backend unable to release messages to trigger the computation of task %s'%self.crab_task_name |
293 |
– |
elif ret == 22: |
294 |
– |
# failed SOAP communication |
295 |
– |
logMsg = 'Error during SOAP communication with server %s'%self.serverName |
319 |
|
else: |
320 |
< |
logMsg = 'Unexpected return code from server %s: %d'%(self.serverName, ret) |
298 |
< |
|
299 |
< |
# print loggings |
300 |
< |
if logMsg != '': |
301 |
< |
common.logger.message(logMsg+'\n') |
302 |
< |
else: |
303 |
< |
common.logger.debug(3,debugMsg+'\n') |
320 |
> |
self.checkServerResponse(ret) |
321 |
|
return ret |
322 |
|
|