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() |
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 |
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 = {} |
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: |
329 |
|
|
330 |
|
common.logger.message(msg) |
331 |
|
|
332 |
+ |
if bloskNoSite == allBlock: |
333 |
+ |
raise CrabException('No jobs created') |
334 |
+ |
|
335 |
|
return |
336 |
|
|
337 |
|
|
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 |
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: |
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 |
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 |
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'] |
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 = {} |