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

# User Rev Content
1 slacapra 1.1 from Actor import *
2 gutsche 1.6 from crab_util import *
3 corvo 1.13 import EdgLoggingInfo
4     import CondorGLoggingInfo
5 slacapra 1.1 import common
6 corvo 1.13 import string, os
7 slacapra 1.1
8 corvo 1.13 class PostMortem(Actor):
9 slacapra 1.8 def __init__(self, cfg_params, nj_list):
10 slacapra 1.1 self.cfg_params = cfg_params
11     self.nj_list = nj_list
12 corvo 1.13
13 gutsche 1.10 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 corvo 1.13
19 slacapra 1.1 return
20    
21     def run(self):
22     """
23 corvo 1.13 The main method of the class.
24 slacapra 1.1 """
25 corvo 1.13 common.logger.debug(5, "PostMortem::run() called")
26 corvo 1.12
27 corvo 1.13 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 slacapra 1.1
51 corvo 1.13 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 corvo 1.12 pass
66 gutsche 1.4
67 slacapra 1.1 return
68 corvo 1.13