ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/Reporter.py
Revision: 1.2
Committed: Fri Jan 23 11:43:22 2009 UTC (16 years, 3 months ago) by slacapra
Content type: text/x-python
Branch: MAIN
CVS Tags: CRAB_2_5_0_pre5, CRAB_2_5_0_pre4, CRAB_2_5_0_pre3, CRAB_2_5_0_pre2, CRAB_2_5_0_pre1, CRAB_2_4_4, CRAB_2_4_4_pre6, CRAB_2_4_4_pre5
Changes since 1.1: +20 -4 lines
Log Message:
add remote SE destination

File Contents

# Content
1 import os, common, string
2 from Actor import *
3 from crab_util import *
4
5 class Reporter(Actor):
6 """ A class to report a short summary of the info of a task, including what
7 is needed for user analysis, such as #events requestes/done, integrated
8 lumi and so one.
9 """
10 def __init__(self, cfg_params):
11 self.cfg_params = cfg_params
12 return
13
14 def run(self):
15 """
16 The main method of the class: report status of a task
17 """
18 common.logger.debug(5, "Reporter::run() called")
19 task = common._db.getTask()
20 #print self.cfg_params
21 print "\n----------------------------\n"
22 print "Dataset: ",task['dataset']
23 if self.cfg_params.has_key('USER.copy_data') and int(self.cfg_params['USER.copy_data'])==1:
24 print "Remote output :"
25 ## TODO: SL should come from jobDB!
26 from PhEDExDatasvcInfo import PhEDExDatasvcInfo
27 stageout = PhEDExDatasvcInfo(self.cfg_params)
28 endpoint, lfn, SE, SE_PATH, user = stageout.getEndpoint()
29 #print endpoint, lfn, SE, SE_PATH, user
30
31 print "SE:",self.cfg_params['USER.storage_element'],SE," srmPath:",endpoint
32
33 else:
34 print "Local output: ",task['outputDirectory']
35 #print task
36 from ProdCommon.FwkJobRep.ReportParser import readJobReport
37 possible_status = [ 'Created',
38 'Undefined',
39 'Submitting',
40 'Submitted',
41 'Waiting',
42 'Ready',
43 'Scheduled',
44 'Running',
45 'Done',
46 'Killing',
47 'Killed',
48 'Aborted',
49 'Unknown',
50 'Done (Failed)',
51 'Cleared',
52 'retrieved'
53 ]
54 eventsRead=0
55 eventsRequired=0
56 filesRead=0
57 filesRequired=0
58 for job in task.getJobs():
59 #print job
60 # get FJR filename
61 fjr=task['outputDirectory']+job['outputFiles'][-1]
62 #print fjr
63 jobReport = readJobReport(fjr)
64 if len(jobReport)>0:
65 inputFiles=jobReport[0].inputFiles
66 for inputFile in inputFiles:
67 runs=inputFile.runs
68 #print [inputFile[it] for it in ['LFN','EventsRead']]
69 # print "FileIn :",inputFile['LFN'],": Events",inputFile['EventsRead']
70 # for run in runs.keys():
71 # print "Run",run,": lumi sections",runs[run]
72 filesRead+=1
73 eventsRead+=int(inputFile['EventsRead'])
74
75 #print jobReport[0].inputFiles,'\n'
76 else:
77 print 'no FJR avaialble for job #%s'%job['jobId']
78 #print "--------------------------"
79 print "Total Events read: ",eventsRead," required: ",eventsRequired
80 print "Total Files read: ",filesRead," required: ",filesRequired
81 print "Total Jobs : ",len(task.getJobs())
82 list_ID={}
83 for st in possible_status:
84 list_ID = common._db.queryAttrRunJob({'statusScheduler':st},'jobId')
85 if (len(list_ID)>0):
86 print " # Jobs:",str(st),":",len(list_ID)
87 pass
88 print "\n----------------------------\n"
89
90 return