ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/ServerCommunicator.py
(Generate patch)

Comparing COMP/CRAB/python/ServerCommunicator.py (file contents):
Revision 1.26 by farinafa, Fri Sep 19 16:22:29 2008 UTC vs.
Revision 1.27 by spiga, Sun Oct 26 16:09:00 2008 UTC

# Line 27 | Line 27 | class ServerCommunicator:
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']:
# Line 37 | Line 39 | class ServerCommunicator:
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
# Line 89 | Line 92 | class ServerCommunicator:
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
# Line 207 | Line 237 | class ServerCommunicator:
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) )
# Line 215 | Line 246 | class ServerCommunicator:
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 = {}
# Line 276 | Line 308 | class ServerCommunicator:
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 = ''
# Line 284 | Line 316 | class ServerCommunicator:
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      

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines