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

Comparing COMP/CRAB/python/Splitter.py (file contents):
Revision 1.3 by spiga, Mon Feb 9 18:08:33 2009 UTC vs.
Revision 1.10 by spiga, Tue Mar 31 23:39:38 2009 UTC

# Line 64 | Line 64 | class JobSplitter:
64              msg = 'Must define exactly two of total_number_of_events, events_per_job, or number_of_jobs.'
65              raise CrabException(msg)
66  
67 <        blockSites = args['blockSites']
68 <        pubdata = args['pubdata']
67 >        blockSites = self.args['blockSites']
68 >        pubdata = self.args['pubdata']
69          filesbyblock=pubdata.getFiles()
70  
71          self.eventsbyblock=pubdata.getEventsPerBlock()
# Line 139 | Line 139 | class JobSplitter:
139                  numEventsInBlock = self.eventsbyblock[block]
140                  common.logger.debug(5,'Events in Block File '+str(numEventsInBlock))
141  
142 <                files = self.filesbyblock[block]
142 >                files = filesbyblock[block]
143                  numFilesInBlock = len(files)
144                  if (numFilesInBlock <= 0):
145                      continue
# Line 273 | Line 273 | class JobSplitter:
273          common.logger.message(str(jobCount)+" job(s) can run on "+str(totalEventCount)+" events.\n")
274  
275          # skip check on  block with no sites  DD
276 <        if noBboundary == 0 : self.checkBlockNoSite(blocks,jobsOfBlock)
276 >        if noBboundary == 0 : self.checkBlockNoSite(blocks,jobsOfBlock,blockSites)
277  
278         # prepare dict output
279          dictOut = {}
# Line 285 | Line 285 | class JobSplitter:
285  
286          # keep trace of block with no sites to print a warning at the end
287  
288 <    def checkBlockNoSite(self,blocks,jobsOfBlock):  
288 >    def checkBlockNoSite(self,blocks,jobsOfBlock,blockSites):  
289          # screen output
290          screenOutput = "List of jobs and available destination sites:\n\n"
291          noSiteBlock = []
292          bloskNoSite = []
293 +        allBlock = []
294  
295          blockCounter = 0
296          for block in blocks:
297              if block in jobsOfBlock.keys() :
298                  blockCounter += 1
299 +                allBlock.append( blockCounter )
300                  screenOutput += "Block %5i: jobs %20s: sites: %s\n" % (blockCounter,spanRanges(jobsOfBlock[block]),
301                      ','.join(self.blackWhiteListParser.checkWhiteList(self.blackWhiteListParser.checkBlackList(blockSites[block],[block]),[block])))
302                  if len(self.blackWhiteListParser.checkWhiteList(self.blackWhiteListParser.checkBlackList(blockSites[block],[block]),[block])) == 0:
# Line 327 | Line 329 | class JobSplitter:
329  
330              common.logger.message(msg)
331  
332 +        if bloskNoSite == allBlock:
333 +            raise CrabException('No jobs created')
334 +
335          return
336  
337  
# Line 344 | Line 349 | class JobSplitter:
349          from WMCore.DataStructs.Run import Run
350  
351          self.checkUserSettings()
352 <        blockSites = args['blockSites']
353 <        pubdata = args['pubdata']
352 >        blockSites = self.args['blockSites']
353 >        pubdata = self.args['pubdata']
354  
355          if self.selectNumberOfJobs == 0 :
356              self.theNumberOfJobs = 9999999
# Line 354 | Line 359 | class JobSplitter:
359          thefiles = Fileset(name='FilesToSplit')
360          fileList = pubdata.getListFiles()
361          for f in fileList:
357           # print f
362              block = f['Block']['Name']
359          #  if not blocks.has_key(block):
360          #      blocks[block] = reader.listFileBlockLocation(block)
363              try:
364                  f['Block']['StorageElementList'].extend(blockSites[block])
365              except:
# Line 399 | Line 401 | class JobSplitter:
401                  #need to check single file location
402                  jobDestination.append(res['locations'])  
403                  count +=1
402        #print jobDestination
404         # prepare dict output
405          dictOut = {}
406          dictOut['args'] = list_of_lists
# Line 419 | Line 420 | class JobSplitter:
420                  for loc in file['locations']:
421                      if tmp_check < 1 :
422                          locations.append(loc)
423 <                    tmp_check = tmp_check + 1
423 >                tmp_check = tmp_check + 1
424                  ### qui va messo il check per la locations
425          res['lfns'] = lfns
426          res['locations'] = locations
# Line 433 | Line 434 | class JobSplitter:
434          common.logger.debug(5,'Splitting per events')
435          self.checkUserSettings()
436          jobDestination=[]
437 <        if (self.selectNumberOfJobs == 0):
438 <            msg = 'Must specify  number_of_jobs.'
437 >        if ( (self.selectTotalNumberEvents + self.selectEventsPerJob + self.selectNumberOfJobs) != 2 ):
438 >            msg = 'Must define exactly two of total_number_of_events, events_per_job, or number_of_jobs.'
439              raise CrabException(msg)
440  
441          managedGenerators =self.args['managedGenerators']
# Line 489 | Line 490 | class JobSplitter:
490                      args.append('1')
491                  else:
492                      args.append(str(i*self.eventsPerJob))
493 +            args.append(str(self.eventsPerJob))
494              self.list_of_args.append(args)
495         # prepare dict output
496          dictOut = {}

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines