ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/fillCrabFjr.py
Revision: 1.2
Committed: Tue Jun 3 17:20:23 2008 UTC (16 years, 10 months ago) by farinafa
Content type: text/x-python
Branch: MAIN
Changes since 1.1: +26 -7 lines
Log Message:
Added support for timing (just a stub). Interaction with fjr still under development

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     class fjrParser:
17     def __init__(self, argv):
18     try:
19     self.reportFileName = argv[1]
20 farinafa 1.2 self.directive = argv[2]
21 spiga 1.1 except:
22     print "it is necessary to specify the fjr name"
23     sys.exit(2)
24    
25 farinafa 1.2 if self.directive=='--errorcode':
26     try:
27     self.wrapperExitCode = argv[3]
28     self.exeExitCode = argv[4]
29     except:
30     self.exeExitCode=''
31    
32     elif self.directive=='--timing':
33     self.wrapperTime = 'NULL'
34     self.exeTime = 'NULL'
35     self.stageoutTime = 'NULL'
36     try:
37     self.wrapperTime = argv[3]
38     self.exeTime = argv[4]
39     self.stageoutTime = argv[5]
40     except:
41     pass
42     else:
43     print "bad directive specified"
44     sys.exit(2)
45 spiga 1.1 return
46    
47     def run(self):
48    
49     if not os.path.exists(self.reportFileName):
50     self.writeFJR()
51     else:
52     self.fillFJR()
53     self.setStatus()
54    
55     return
56    
57     def setStatus(self):
58     """
59     """
60     if (self.wrapperExitCode == '0') and (self.exeExitCode == '0'):
61     status = 'Success'
62     else:
63     status = 'Failed'
64    
65     jobReport = readJobReport(self.reportFileName)[0]
66     jobReport.status = status
67     jobReport.write(self.reportFileName)
68    
69     return
70    
71     def writeFJR(self):
72     """
73     """
74     fwjr = FwkJobReport()
75     fwjr.addError(self.wrapperExitCode, "WrapperExitCode")
76     if (self.exeExitCode != ""):
77     fwjr.addError(self.exeExitCode, "ExeExitCode")
78     fwjr.write(self.reportFileName)
79    
80     return
81    
82     def checkValidFJR(self):
83     """
84     """
85     valid = 0
86     fjr=open(self.reportFileName,'r')
87     lines = fjr.readlines()
88     if len(lines) > 0: valid = 1
89    
90     return valid
91    
92     def fillFJR(self):
93     """
94     """
95     valid = self.checkValidFJR()
96 farinafa 1.2 if valid == 1 and self.directive=='--errorcode':
97 spiga 1.1 jobReport = readJobReport(self.reportFileName)[0]
98     if (len(jobReport.errors) > 0):
99     error = 0
100     for err in jobReport.errors:
101     if err['Type'] == "WrapperExitCode" :
102     err['ExitStatus'] = self.wrapperExitCode
103     jobReport.write(self.reportFileName)
104     error = 1
105     if (self.exeExitCode != ""):
106     if err['Type'] == "ExeExitCode" :
107     err['ExitStatus'] = self.exeExitCode
108     jobReport.write(self.reportFileName)
109     error = 1
110     if (error == 0):
111     jobReport.addError(self.wrapperExitCode, "WrapperExitCode")
112     if (self.exeExitCode != ""):
113     jobReport.addError(self.exeExitCode, "ExeExitCode")
114     jobReport.write(self.reportFileName)
115     else:
116     jobReport.addError(self.wrapperExitCode, "WrapperExitCode")
117     if (self.exeExitCode != ""):
118     jobReport.addError(self.exeExitCode, "ExeExitCode")
119     jobReport.write(self.reportFileName)
120 farinafa 1.2
121     elif valid == 1 and self.directive=='--timing':
122     # add here timing settings
123     pass
124 spiga 1.1 else:
125     self.writeFJR()
126    
127     if __name__ == '__main__':
128     try:
129     FjrParser_ = fjrParser(sys.argv)
130     FjrParser_.run()
131     except:
132     pass
133