13 |
|
|
14 |
|
|
15 |
|
class DBinterface: |
16 |
< |
def __init__(self): |
17 |
< |
|
18 |
< |
return |
19 |
< |
|
20 |
< |
def configureDB(self, cfg_params): |
16 |
> |
def __init__(self, cfg_params): |
17 |
|
|
18 |
|
self.cfg_params = cfg_params |
19 |
|
|
20 |
|
self.db_type = cfg_params.get("USER.use_db",'SQLite') |
21 |
+ |
return |
22 |
+ |
|
23 |
+ |
|
24 |
+ |
def configureDB(self): |
25 |
|
|
26 |
|
dbname = common.work_space.shareDir()+'crabDB' |
27 |
|
dbConfig = {'dbName':dbname |
28 |
|
} |
29 |
|
|
30 |
|
common.bossSession = BossLiteAPI( self.db_type, dbConfig) |
31 |
– |
|
31 |
|
common.bossSession.installDB('$CRABPRODCOMMONPYTHON/ProdCommon/BossLite/DbObjects/setupDatabase-sqlite.sql') |
32 |
|
|
33 |
|
return |
34 |
|
|
35 |
+ |
def loadDB(self): |
36 |
+ |
|
37 |
+ |
dbname = common.work_space.shareDir()+'crabDB' |
38 |
+ |
dbConfig = {'dbName':dbname |
39 |
+ |
} |
40 |
+ |
common.bossSession = BossLiteAPI( self.db_type, dbConfig) |
41 |
+ |
|
42 |
+ |
return |
43 |
+ |
|
44 |
+ |
|
45 |
|
|
46 |
|
def createTask_(self, optsToSave): |
47 |
|
""" |
64 |
|
""" |
65 |
|
Update task fields |
66 |
|
""" |
67 |
< |
task = common.bossSession.loadTaskByName(common.work_space.taskName() ) |
67 |
> |
#task = common.bossSession.loadTaskByName(common.work_space.taskName() ) |
68 |
> |
task = common.bossSession.loadTaskByID(1) |
69 |
|
|
70 |
|
for key in optsToSave.keys(): |
71 |
|
task[key] = optsToSave[key] |
76 |
|
""" |
77 |
|
Fill crab DB with the jobs filed |
78 |
|
""" |
79 |
< |
task = common.bossSession.loadTaskByName(common.work_space.taskName()) |
79 |
> |
#task = common.bossSession.loadTaskByName(common.work_space.taskName()) |
80 |
> |
task = common.bossSession.loadTaskByID(1) |
81 |
|
jobs = [] |
82 |
|
for id in range(nj): |
83 |
|
parameters = {} |
92 |
|
""" |
93 |
|
Update Job fields |
94 |
|
""" |
95 |
< |
task = common.bossSession.loadTaskByName( common.work_space.taskName()) |
95 |
> |
task = common.bossSession.loadTaskByID(1) |
96 |
> |
#task = common.bossSession.loadTaskByName( common.work_space.taskName()) |
97 |
|
jobs = common.bossSession.loadJob(task['id'],nj+1) |
98 |
|
for key in optsToSave.keys(): |
99 |
|
jobs[key] = optsToSave[key] |
104 |
|
""" |
105 |
|
Update Running Job fields |
106 |
|
""" |
107 |
< |
task = common.bossSession.loadTaskByName( common.work_space.taskName()) |
107 |
> |
task = common.bossSession.loadTaskByID(1) |
108 |
> |
#task = common.bossSession.loadTaskByName( common.work_space.taskName()) |
109 |
|
common.bossSession.getRunningInstance(task.jobs[nj]) |
110 |
|
for key in optsToSave.keys(): |
111 |
|
task.jobs[nj].runningJob[key] = optsToSave[key] |
113 |
|
return |
114 |
|
|
115 |
|
def nJobs(self): |
116 |
< |
task = common.bossSession.loadTaskByName( common.work_space.taskName()) |
116 |
> |
|
117 |
> |
task = common.bossSession.loadTaskByID(1) |
118 |
> |
#task = common.bossSession.loadTaskByName( common.work_space.taskName()) |
119 |
|
return len(task.jobs) |
120 |
|
|
121 |
|
def dump(self,jobs): |
122 |
|
""" |
123 |
|
List a complete set of infos for a job/range of jobs |
124 |
|
""" |
125 |
< |
task = common.bossSession.loadTaskByName( common.work_space.taskName()) |
125 |
> |
task = common.bossSession.loadTaskByID(1) |
126 |
> |
#task = common.bossSession.loadTaskByName( common.work_space.taskName()) |
127 |
|
|
128 |
|
njobs = len(jobs) |
129 |
|
lines=[] |
151 |
|
''' |
152 |
|
header='' |
153 |
|
lines=[] |
154 |
+ |
task = common.bossSession.loadTaskByID(1) |
155 |
|
if server_mode == 1: |
156 |
< |
header= "Task Id = %-40s " %(common.work_space.taskName()) |
156 |
> |
header= "Task Id = %-40s " %(task['name']) |
157 |
|
else: |
158 |
< |
task = common.bossSession.loadTaskByName(common.work_space.taskName() ) |
158 |
> |
# task = common.bossSession.loadTaskByName(common.work_space.taskName() ) |
159 |
|
for i in range(len(task.job)): |
160 |
|
common.bossSession.getRunningInstance(task.jobs[i]) |
161 |
|
lines.append(task.jobs[i].runningJob['schedulerId']) |
168 |
|
''' |
169 |
|
Perform a query over a generic task attribute |
170 |
|
''' |
171 |
< |
task = common.bossSession.loadTaskByName( common.work_space.taskName() ) |
171 |
> |
task = common.bossSession.loadTaskByID(1) |
172 |
|
return task[attr] |
173 |
|
|
174 |
|
def queryJob(self, attr, njobs): |
177 |
|
over a generic job attribute |
178 |
|
''' |
179 |
|
lines=[] |
180 |
< |
task = common.bossSession.loadTaskByName( common.work_space.taskName()) |
180 |
> |
task = common.bossSession.loadTaskByID(1) |
181 |
> |
#task = common.bossSession.loadTaskByName( common.work_space.taskName()) |
182 |
|
for i in njobs: |
183 |
|
jobs = common.bossSession.loadJob(task['id'],i+1) |
184 |
|
lines.append(task.jobs[i][attr]) |
190 |
|
over a generic job attribute |
191 |
|
''' |
192 |
|
lines=[] |
193 |
< |
task = common.bossSession.loadTaskByName( common.work_space.taskName() ) |
193 |
> |
task = common.bossSession.loadTaskByID(1) |
194 |
> |
# task = common.bossSession.loadTaskByName( common.work_space.taskName() ) |
195 |
|
for i in jobs: |
196 |
|
common.bossSession.getRunningInstance(task.jobs[i]) |
197 |
|
lines.append(task.jobs[i].runningJob[attr]) |
198 |
|
return lines |
199 |
+ |
|
200 |
+ |
def queryDistJob(self, attr): |
201 |
+ |
''' |
202 |
+ |
Returns the list of distinct value for a given job attributes |
203 |
+ |
''' |
204 |
+ |
distAttr=[] |
205 |
+ |
task = common.bossSession.loadJobDistAttr( 1, attr ) |
206 |
+ |
for i in task: distAttr.append(i[attr]) |
207 |
+ |
return distAttr |
208 |
+ |
|
209 |
+ |
def queryAttrJob(self, attr, field): |
210 |
+ |
''' |
211 |
+ |
Returns the list of jobs matching the given attribute |
212 |
+ |
''' |
213 |
+ |
matched=[] |
214 |
+ |
task = common.bossSession.loadJobsByAttr(attr ) |
215 |
+ |
for i in task: |
216 |
+ |
matched.append(i[field]) |
217 |
+ |
return matched |
218 |
+ |
|