ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/PostMortem.py
Revision: 1.13
Committed: Mon Nov 20 18:47:51 2006 UTC (18 years, 5 months ago) by corvo
Content type: text/x-python
Branch: MAIN
CVS Tags: CRAB_1_5_0_pre3, CRAB_1_5_0_pre2, CRAB_1_5_0_pre1
Changes since 1.12: +46 -165 lines
Log Message:
Wrong file committedcp ../../../CRAB/python_api/PostMortem.py PostMortem.py

File Contents

# Content
1 from Actor import *
2 from crab_util import *
3 import EdgLoggingInfo
4 import CondorGLoggingInfo
5 import common
6 import string, os
7
8 class PostMortem(Actor):
9 def __init__(self, cfg_params, nj_list):
10 self.cfg_params = cfg_params
11 self.nj_list = nj_list
12
13 if common.scheduler.boss_scheduler_name == 'condor_g':
14 # create hash of cfg file
15 self.hash = makeCksum(common.work_space.cfgFileName())
16 else:
17 self.hash = ''
18
19 return
20
21 def run(self):
22 """
23 The main method of the class.
24 """
25 common.logger.debug(5, "PostMortem::run() called")
26
27 for c, v in self.nj_list.iteritems():
28 id = int(c)
29 out = common.scheduler.loggingInfo(v)
30 job = common.job_list[id - 1]
31 jobnum_str = '%06d' % (id)
32 fname = common.work_space.jobDir() + '/' + self.cfg_params['CRAB.jobtype'].upper() + '_' + jobnum_str + '.loggingInfo'
33 if os.path.exists(fname):
34 common.logger.message('Logging info for job ' + str(id) + ' already present in '+fname+'\nRemove it for update')
35 continue
36 jdl = open(fname, 'w')
37 for line in out: jdl.write(line)
38 jdl.close()
39
40 reason = ''
41 ## SL this if-elif is the negation of OO! Mus disappear ASAP
42 if common.scheduler.boss_scheduler_name == "edg" or common.scheduler.boss_scheduler_name == "glite" or common.scheduler.boss_scheduler_name == "glitecoll":
43 loggingInfo = EdgLoggingInfo.EdgLoggingInfo()
44 reason = loggingInfo.decodeReason(out)
45 elif common.scheduler.boss_scheduler_name == "condor_g" :
46 loggingInfo = CondorGLoggingInfo.CondorGLoggingInfo()
47 reason = loggingInfo.decodeReason(out)
48 else :
49 reason = out
50
51 common.logger.message('Logging info for job '+ str(id) +': '+reason+'\n written to '+fname)
52
53 # ML reporting
54 jobId = ''
55 if common.scheduler.boss_scheduler_name == 'condor_g':
56 jobId = str(id) + '_' + self.hash + '_' + v
57 else:
58 jobId = str(id) + '_' + v
59
60 params = {'taskId': self.cfg_params['taskId'], 'jobId': jobId, \
61 'sid': v,
62 'PostMortemCategory': loggingInfo.getCategory(), \
63 'PostMortemReason': loggingInfo.getReason()}
64 self.cfg_params['apmon'].sendToML(params)
65 pass
66
67 return
68