ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/Submitter.py
Revision: 1.25
Committed: Wed Nov 2 22:43:24 2005 UTC (19 years, 6 months ago) by slacapra
Content type: text/x-python
Branch: MAIN
CVS Tags: CRAB_1_0_1, CRAB_1_0_0_rc1
Changes since 1.24: +35 -27 lines
Log Message:
switch off ML on demand

File Contents

# User Rev Content
1 nsmirnov 1.1 from Actor import *
2 nsmirnov 1.6 from crab_util import *
3 nsmirnov 1.2 import common
4 corvo 1.9 from ApmonIf import ApmonIf
5 spiga 1.10 import Statistic
6 nsmirnov 1.1
7     class Submitter(Actor):
8 nsmirnov 1.4 def __init__(self, cfg_params, nj_list):
9 nsmirnov 1.1 self.cfg_params = cfg_params
10 nsmirnov 1.4 self.nj_list = nj_list
11 spiga 1.10 #############################################
12 slacapra 1.18 ### this is a common block!
13 spiga 1.10 fileCODE1 = open(common.work_space.logDir()+"/.code","r")
14     array = fileCODE1.read().split('::')
15     self.ID1 = array[0]
16     self.NJC = array[1]
17     self.dataset = array[2]
18     self.owner = array[3]
19     fileCODE1.close()
20 slacapra 1.25 try:
21     self.ML = int(cfg_params['USER.activate_monalisa'])
22     except KeyError:
23     self.ML = 0
24     pass
25    
26     if (self.ML==1): self.mon = ApmonIf()
27 spiga 1.10
28 nsmirnov 1.1 return
29    
30     def run(self):
31 nsmirnov 1.2 """
32     The main method of the class.
33     """
34     common.logger.debug(5, "Submitter::run() called")
35 slacapra 1.24
36     totalCreatedJobs= 0
37     for nj in range(common.jobDB.nJobs()):
38     if (common.jobDB.status(nj)=='C'): totalCreatedJobs +=1
39     pass
40    
41     if (totalCreatedJobs==0):
42     common.logger.message("No jobs to be submitted: first create them")
43    
44 slacapra 1.7 firstJob=self.nj_list[0]
45     match = common.scheduler.listMatch(firstJob)
46 slacapra 1.8 if match:
47     common.logger.message("Found compatible resources "+str(match))
48     else:
49     raise CrabException("No compatible resources found!")
50 fanzago 1.16 #########
51 nsmirnov 1.2 # Loop over jobs
52 nsmirnov 1.6 njs = 0
53 corvo 1.15 try:
54 corvo 1.17 for nj in self.nj_list:
55     st = common.jobDB.status(nj)
56 corvo 1.21 # print "nj = ", nj
57     # print "st = ", st
58 corvo 1.17 if st != 'C' and st != 'K' and st != 'A' and st != 'RC':
59     long_st = crabJobStatusToString(st)
60 slacapra 1.19 msg = "Job # %d not submitted: status %s"%(nj+1, long_st)
61 slacapra 1.18 common.logger.message(msg)
62 corvo 1.17 continue
63    
64     common.logger.message("Submitting job # "+`(nj+1)`)
65     jid = common.scheduler.submit(nj)
66    
67     common.jobDB.setStatus(nj, 'S')
68     common.jobDB.setJobId(nj, jid)
69     njs += 1
70    
71     ############################################
72    
73     destination = common.scheduler.queryDest(jid).split(":")[0]
74     ID3 = jid.split("/")[3]
75     broker = jid.split("/")[2].split(":")[0]
76     if st == 'C':
77     resFlag = 0
78     elif st == 'RC':
79     resFlag = 2
80     else:
81     resFlag = 0
82     pass
83    
84 slacapra 1.23 try:
85     Statistic.notify('submit',resFlag,'-----',self.dataset,self.owner,destination,broker,ID3,self.ID1,self.NJC)
86     except:
87     pass
88 corvo 1.17
89 slacapra 1.25 if (self.ML==1):
90 slacapra 1.22 try:
91 slacapra 1.25 # SL this is crap! Should not be here!!!!
92     # List of parameters to be sent to ML monitor system
93     user = os.getlogin()
94     taskId = os.getlogin()+'_'+string.split(common.work_space.topDir(),'/')[-2]
95     jobId = str(nj)
96     sid = jid
97     try:
98     application = os.path.basename(os.environ['SCRAMRT_LOCALRT'])
99     except KeyError:
100     application = os.path.basename(os.environ['LOCALRT'])
101    
102     nevtJob = common.jobDB.maxEvents(nj)
103     exe = self.cfg_params['USER.executable']
104     tool = common.prog_name
105     scheduler = self.cfg_params['CRAB.scheduler']
106     taskType = 'analysis'
107     vo = 'cms'
108     rb = sid.split(':')[1]
109     rb = rb.replace('//', '')
110     params = {'taskId': taskId, 'jobId': jobId, 'sid': sid, 'application': application, \
111     'exe': exe, 'nevtJob': nevtJob, 'tool': tool, 'scheduler': scheduler, \
112     'user': user, 'taskType': taskType, 'vo': vo, 'dataset': self.dataset, 'owner': self.owner, 'broker': rb}
113     self.mon.fillDict(params)
114     self.mon.sendToML()
115     except:
116     pass
117     pass # use ML
118 corvo 1.17 except:
119 slacapra 1.22 common.logger.message("Submitter::run Exception raised")
120 corvo 1.17 common.jobDB.save()
121 slacapra 1.18
122 corvo 1.17 common.jobDB.save()
123 corvo 1.15
124 nsmirnov 1.6 msg = '\nTotal of %d jobs submitted'%njs
125     if njs != len(self.nj_list) :
126     msg += ' (from %d requested).'%(len(self.nj_list))
127     pass
128     else:
129     msg += '.'
130     pass
131 nsmirnov 1.2 common.logger.message(msg)
132 nsmirnov 1.1 return
133