ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/fillCrabFjr.py
Revision: 1.3.2.1
Committed: Tue Jun 24 13:54:11 2008 UTC (16 years, 10 months ago) by fanzago
Content type: text/x-python
CVS Tags: CRAB_2_3_1_pre1
Changes since 1.3: +10 -3 lines
Log Message:
some changes according to the head of CRAB (24/06/2008)

File Contents

# User Rev Content
1 spiga 1.1 #!/usr/bin/env python
2     """
3     _fillCrabFjr.py
4    
5     Adds to the FJR the WrapperExitCode and the ExeExitCode
6    
7    
8     """
9     import os, string
10     import sys
11     import popen2
12    
13     from ProdCommon.FwkJobRep.ReportParser import readJobReport
14     from ProdCommon.FwkJobRep.FwkJobReport import FwkJobReport
15    
16 fanzago 1.3.2.1 from ProdCommon.FwkJobRep.PerformanceReport import PerformanceReport
17    
18 spiga 1.1 class fjrParser:
19     def __init__(self, argv):
20     try:
21     self.reportFileName = argv[1]
22 farinafa 1.2 self.directive = argv[2]
23 spiga 1.1 except:
24     print "it is necessary to specify the fjr name"
25     sys.exit(2)
26    
27 farinafa 1.2 if self.directive=='--errorcode':
28     try:
29     self.wrapperExitCode = argv[3]
30     self.exeExitCode = argv[4]
31     except:
32     self.exeExitCode=''
33    
34     elif self.directive=='--timing':
35     self.wrapperTime = 'NULL'
36     self.exeTime = 'NULL'
37     self.stageoutTime = 'NULL'
38 fanzago 1.3.2.1 self.cpuTime = 'NULL'
39 farinafa 1.2 try:
40     self.wrapperTime = argv[3]
41     self.exeTime = argv[4]
42     self.stageoutTime = argv[5]
43 fanzago 1.3.2.1 # pay attenition that the input env var is actually a string of 3 attrutes # Fabio
44     self.cpuTime = "%s %s %s"%(argv[6], argv[7], argv[8])
45 farinafa 1.2 except:
46     pass
47     else:
48     print "bad directive specified"
49     sys.exit(2)
50 spiga 1.1 return
51    
52     def run(self):
53    
54     if not os.path.exists(self.reportFileName):
55     self.writeFJR()
56     else:
57     self.fillFJR()
58     self.setStatus()
59    
60     return
61    
62     def setStatus(self):
63     """
64     """
65     if (self.wrapperExitCode == '0') and (self.exeExitCode == '0'):
66     status = 'Success'
67     else:
68     status = 'Failed'
69    
70     jobReport = readJobReport(self.reportFileName)[0]
71     jobReport.status = status
72     jobReport.write(self.reportFileName)
73    
74     return
75    
76     def writeFJR(self):
77     """
78     """
79     fwjr = FwkJobReport()
80     fwjr.addError(self.wrapperExitCode, "WrapperExitCode")
81     if (self.exeExitCode != ""):
82     fwjr.addError(self.exeExitCode, "ExeExitCode")
83     fwjr.write(self.reportFileName)
84    
85     return
86    
87     def checkValidFJR(self):
88     """
89     """
90     valid = 0
91     fjr=open(self.reportFileName,'r')
92     lines = fjr.readlines()
93     if len(lines) > 0: valid = 1
94    
95     return valid
96    
97     def fillFJR(self):
98     """
99     """
100     valid = self.checkValidFJR()
101 farinafa 1.2 if valid == 1 and self.directive=='--errorcode':
102 spiga 1.1 jobReport = readJobReport(self.reportFileName)[0]
103     if (len(jobReport.errors) > 0):
104     error = 0
105     for err in jobReport.errors:
106     if err['Type'] == "WrapperExitCode" :
107     err['ExitStatus'] = self.wrapperExitCode
108     jobReport.write(self.reportFileName)
109     error = 1
110     if (self.exeExitCode != ""):
111     if err['Type'] == "ExeExitCode" :
112     err['ExitStatus'] = self.exeExitCode
113     jobReport.write(self.reportFileName)
114     error = 1
115     if (error == 0):
116     jobReport.addError(self.wrapperExitCode, "WrapperExitCode")
117     if (self.exeExitCode != ""):
118     jobReport.addError(self.exeExitCode, "ExeExitCode")
119     jobReport.write(self.reportFileName)
120     else:
121     jobReport.addError(self.wrapperExitCode, "WrapperExitCode")
122     if (self.exeExitCode != ""):
123     jobReport.addError(self.exeExitCode, "ExeExitCode")
124     jobReport.write(self.reportFileName)
125 farinafa 1.2
126     elif valid == 1 and self.directive=='--timing':
127 fanzago 1.3.2.1 jobReport = readJobReport(self.reportFileName)[0]
128 farinafa 1.2 # add here timing settings
129 fanzago 1.3.2.1 perf = jobReport.performance
130     perf.addSummary("CrabTiming", WrapperTime = self.wrapperTime, ExeTime = self.exeTime,\
131     StageoutTime = self.stageoutTime, CpuTime = self.cpuTime)
132     jobReport.write(self.reportFileName)
133 farinafa 1.2 pass
134 spiga 1.1 else:
135     self.writeFJR()
136    
137     if __name__ == '__main__':
138     try:
139     FjrParser_ = fjrParser(sys.argv)
140     FjrParser_.run()
141     except:
142     pass
143