38 |
|
dbConfig = {'dbName':dbname |
39 |
|
} |
40 |
|
common.bossSession = BossLiteAPI( self.db_type, dbConfig) |
41 |
< |
|
41 |
> |
self.task = common.bossSession.load(1)[0] |
42 |
|
return |
43 |
|
|
44 |
< |
def getTask(self): |
44 |
> |
def getTask(self, jobsList='all'): #, cfg_params): |
45 |
> |
""" |
46 |
> |
Return task with all/list of jobs |
47 |
> |
""" |
48 |
|
|
49 |
< |
self.task = common.bossSession.loadTaskByID(1) |
50 |
< |
return self.task |
49 |
> |
if jobsList == 'all': |
50 |
> |
task = common.bossSession.load(1)[0] |
51 |
> |
else: |
52 |
> |
if len(jobsList)>1: str_jobs=string.join(map(str,jobsList),",") |
53 |
> |
else: str_jobs=str(jobsList) |
54 |
> |
task = common.bossSession.load(1,jobsList)[0] |
55 |
> |
return task |
56 |
|
|
57 |
+ |
def getJob(self, n): |
58 |
+ |
""" |
59 |
+ |
Return a task with a single job |
60 |
+ |
""" |
61 |
+ |
task = common.bossSession.load(1,str(n))[0] |
62 |
+ |
return task |
63 |
|
|
64 |
|
|
65 |
|
def createTask_(self, optsToSave): |
66 |
|
""" |
67 |
|
Task declaration |
68 |
|
with the first coniguration stuff |
55 |
– |
{'server_name': 'crabas.lnl.infn.it/data1/cms/', '-scheduler': 'glite', '-jobtype': 'cmssw', '-server_mode': '0'} |
56 |
– |
|
69 |
|
""" |
70 |
|
opt={} |
71 |
< |
if optsToSave['server_mode'] == 1: opt['serverName']=optsToSave['server_name'] |
60 |
< |
opt['jobType']=optsToSave['jobtype'] |
71 |
> |
opt['serverName']=optsToSave['server_name'] |
72 |
|
opt[ 'name']=common.work_space.taskName() |
73 |
|
task = Task( opt ) |
74 |
|
|
75 |
|
common.bossSession.saveTask( task ) |
65 |
– |
#common.bossSession.updateDB( task ) |
76 |
|
return |
77 |
|
|
78 |
|
def updateTask_(self,optsToSave): |
79 |
|
""" |
80 |
|
Update task fields |
81 |
|
""" |
82 |
< |
#task = common.bossSession.loadTaskByName(common.work_space.taskName() ) |
73 |
< |
task = common.bossSession.loadTaskByID(1) |
82 |
> |
task = common.bossSession.load(1)[0] |
83 |
|
|
84 |
|
for key in optsToSave.keys(): |
85 |
|
task[key] = optsToSave[key] |
86 |
< |
common.bossSession.updateDB( task ) |
86 |
> |
common.bossSession.updateDB( task ) |
87 |
|
return |
88 |
|
|
89 |
< |
def createJobs_(self, nj): |
89 |
> |
def createJobs_(self, jobsL): |
90 |
|
""" |
91 |
|
Fill crab DB with the jobs filed |
92 |
|
""" |
93 |
< |
#task = common.bossSession.loadTaskByName(common.work_space.taskName()) |
85 |
< |
task = common.bossSession.loadTaskByID(1) |
93 |
> |
task = common.bossSession.loadTask(1) |
94 |
|
jobs = [] |
95 |
< |
for id in range(nj): |
95 |
> |
for id in jobsL: |
96 |
|
parameters = {} |
97 |
+ |
parameters['jobId'] = str(id) |
98 |
|
parameters['name'] = 'job' + str(id) |
99 |
|
job = Job(parameters) |
100 |
< |
jobs.append(job) |
100 |
> |
jobs.append(job) |
101 |
|
task.addJobs(jobs) |
102 |
|
common.bossSession.updateDB( task ) |
103 |
|
return |
104 |
|
|
105 |
< |
def updateJob_(self, nj, optsToSave): |
105 |
> |
def updateJob_(self, jobsL, optsToSave): |
106 |
|
""" |
107 |
|
Update Job fields |
108 |
|
""" |
109 |
< |
task = common.bossSession.loadTaskByID(1) |
110 |
< |
#task = common.bossSession.loadTaskByName( common.work_space.taskName()) |
111 |
< |
jobs = common.bossSession.loadJob(task['id'],nj+1) |
112 |
< |
for key in optsToSave.keys(): |
113 |
< |
jobs[key] = optsToSave[key] |
114 |
< |
common.bossSession.updateDB( jobs ) |
109 |
> |
if len(jobsL)>1: str_jobs=string.join(map(str,jobsL),",") |
110 |
> |
else: str_jobs=str(jobsL) |
111 |
> |
task = common.bossSession.load(1,jobsL)[0] |
112 |
> |
id =0 |
113 |
> |
for job in task.jobs: |
114 |
> |
for key in optsToSave[id].keys(): |
115 |
> |
job[key] = optsToSave[id][key] |
116 |
> |
id+=1 |
117 |
> |
common.bossSession.updateDB( task ) |
118 |
|
return |
119 |
|
|
120 |
< |
def updateRunJob_(self, nj, optsToSave): |
120 |
> |
def updateRunJob_(self, jobsL, optsToSave): |
121 |
|
""" |
122 |
|
Update Running Job fields |
123 |
|
""" |
124 |
< |
task = common.bossSession.loadTaskByID(1) |
125 |
< |
#task = common.bossSession.loadTaskByName( common.work_space.taskName()) |
126 |
< |
common.bossSession.getRunningInstance(task.jobs[nj-1]) |
127 |
< |
for key in optsToSave.keys(): |
128 |
< |
task.jobs[nj-1].runningJob[key] = optsToSave[key] |
124 |
> |
if len(jobsL)>1: str_jobs=string.join(map(str,jobsL),",") |
125 |
> |
else: str_jobs=str(jobsL) |
126 |
> |
task = common.bossSession.load(1,jobsL)[0] |
127 |
> |
for job in task.jobs: |
128 |
> |
common.bossSession.getRunningInstance(job) |
129 |
> |
for key in optsToSave.keys(): |
130 |
> |
job.runningJob[key] = optsToSave[key] |
131 |
|
common.bossSession.updateDB( task ) |
132 |
|
return |
133 |
|
|
134 |
< |
def nJobs(self): |
134 |
> |
def nJobs(self,list=''): |
135 |
|
|
136 |
< |
task = common.bossSession.loadTaskByID(1) |
137 |
< |
#task = common.bossSession.loadTaskByName( common.work_space.taskName()) |
138 |
< |
return len(task.jobs) |
136 |
> |
task = common.bossSession.load(1)[0] |
137 |
> |
listId=[] |
138 |
> |
if list == 'list': |
139 |
> |
for job in task.jobs:listId.append(int(job['jobId'])) |
140 |
> |
return listId |
141 |
> |
else: |
142 |
> |
return len(task.jobs) |
143 |
|
|
144 |
|
def dump(self,jobs): |
145 |
|
""" |
146 |
|
List a complete set of infos for a job/range of jobs |
147 |
|
""" |
148 |
< |
task = common.bossSession.loadTaskByID(1) |
131 |
< |
#task = common.bossSession.loadTaskByName( common.work_space.taskName()) |
148 |
> |
task = common.bossSession.load(1)[0] |
149 |
|
|
150 |
|
njobs = len(jobs) |
151 |
|
lines=[] |
165 |
|
|
166 |
|
# displayReport(header, lines): |
167 |
|
return |
168 |
+ |
|
169 |
+ |
def serializeTask(self, tmp_task = None): |
170 |
+ |
if tmp_task is None: |
171 |
+ |
#tmp_task = common.bossSession.loadTaskByID(1) |
172 |
+ |
tmp_task = common.bossSession.load(1)[0] |
173 |
+ |
return common.bossSession.serialize(tmp_task) |
174 |
|
|
175 |
|
def queryID(self,server_mode=0): |
176 |
|
''' |
179 |
|
''' |
180 |
|
header='' |
181 |
|
lines=[] |
182 |
< |
task = common.bossSession.loadTaskByID(1) |
182 |
> |
task = common.bossSession.load(1)[0] |
183 |
|
if server_mode == 1: |
184 |
|
header= "Task Id = %-40s " %(task['name']) |
185 |
|
else: |
163 |
– |
# task = common.bossSession.loadTaskByName(common.work_space.taskName() ) |
186 |
|
for i in range(len(task.job)): |
187 |
|
common.bossSession.getRunningInstance(task.jobs[i]) |
188 |
|
lines.append(task.jobs[i].runningJob['schedulerId']) |
195 |
|
''' |
196 |
|
Perform a query over a generic task attribute |
197 |
|
''' |
198 |
< |
task = common.bossSession.loadTaskByID(1) |
198 |
> |
task = common.bossSession.loadTask(1) |
199 |
|
return task[attr] |
200 |
|
|
201 |
< |
def queryJob(self, attr, njobs): |
201 |
> |
def queryJob(self, attr, jobs): |
202 |
|
''' |
203 |
|
Perform a query for a range/all/single job |
204 |
|
over a generic job attribute |
205 |
|
''' |
206 |
|
lines=[] |
207 |
< |
task = common.bossSession.loadTaskByID(1) |
208 |
< |
#task = common.bossSession.loadTaskByName( common.work_space.taskName()) |
209 |
< |
for i in njobs: |
210 |
< |
jobs = common.bossSession.loadJob(task['id'],i+1) |
189 |
< |
lines.append(task.jobs[i][attr]) |
207 |
> |
str_jobs=string.join(map(str,jobs),",") |
208 |
> |
task = common.bossSession.load(1,str_jobs)[0] |
209 |
> |
for job in task.jobs: |
210 |
> |
lines.append(eval(job[attr])) |
211 |
|
return lines |
212 |
|
|
213 |
|
def queryRunJob(self, attr, jobs): |
216 |
|
over a generic job attribute |
217 |
|
''' |
218 |
|
lines=[] |
219 |
< |
task = common.bossSession.loadTaskByID(1) |
220 |
< |
# task = common.bossSession.loadTaskByName( common.work_space.taskName() ) |
221 |
< |
for i in jobs: |
222 |
< |
common.bossSession.getRunningInstance(task.jobs[i-1]) |
223 |
< |
lines.append(task.jobs[i-1].runningJob[attr]) |
219 |
> |
str_jobs=string.join(map(str,jobs),",") |
220 |
> |
task = common.bossSession.load(1,str_jobs)[0] |
221 |
> |
for job in task.jobs: |
222 |
> |
common.bossSession.getRunningInstance(job) |
223 |
> |
lines.append(job.runningJob[attr]) |
224 |
|
return lines |
225 |
|
|
226 |
|
def queryDistJob(self, attr): |
229 |
|
''' |
230 |
|
distAttr=[] |
231 |
|
task = common.bossSession.loadJobDist( 1, attr ) |
232 |
< |
for i in task: distAttr.append(i[attr]) |
232 |
> |
for i in task: distAttr.append(eval(i[attr])) |
233 |
|
return distAttr |
234 |
|
|
235 |
|
def queryDistJob_Attr(self, attr_1, attr_2, list): |
236 |
|
''' |
237 |
< |
Returns the list of distinct value for a given job attributes |
237 |
> |
Returns the list of distinct value for a given job attribute |
238 |
|
''' |
239 |
|
distAttr=[] |
240 |
< |
task = common.bossSession.loadJobDistAttr_Attr( 1, attr_1, attr_2, list ) |
241 |
< |
for i in task: distAttr.append(i[attr_1]) |
240 |
> |
task = common.bossSession.loadJobDistAttr( 1, attr_1, attr_2, list ) |
241 |
> |
for i in task: distAttr.append(eval(i[attr_1])) |
242 |
|
return distAttr |
243 |
+ |
|
244 |
|
def queryAttrJob(self, attr, field): |
245 |
|
''' |
246 |
|
Returns the list of jobs matching the given attribute |
251 |
|
matched.append(i[field]) |
252 |
|
return matched |
253 |
|
|
254 |
+ |
|
255 |
+ |
def queryAttrRunJob(self, attr,field): |
256 |
+ |
''' |
257 |
+ |
Returns the list of jobs matching the given attribute |
258 |
+ |
''' |
259 |
+ |
matched=[] |
260 |
+ |
task = common.bossSession.loadJobsByRunningAttr(attr) |
261 |
+ |
for i in task: |
262 |
+ |
matched.append(i[field]) |
263 |
+ |
return matched |