ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/DBinterface.py
(Generate patch)

Comparing COMP/CRAB/python/DBinterface.py (file contents):
Revision 1.1 by spiga, Mon Mar 3 20:14:43 2008 UTC vs.
Revision 1.6 by slacapra, Fri Mar 7 17:25:23 2008 UTC

# Line 13 | Line 13 | from ProdCommon.BossLite.DbObjects.Runni
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 +    def getTask(self):
45 +
46 +        self.task = common.bossSession.loadTaskByID(1)
47 +        return self.task
48 +
49 +    def getJob(self, n):
50 +
51 +        self.job = common.bossSession.loadJobByID(1,n)
52 +        return self.job
53 +
54  
55      def createTask_(self, optsToSave):      
56          """
57          Task declaration
58          with the first coniguration stuff
59 <         {'server_name': 'crabas.lnl.infn.it/data1/cms/', '-scheduler': 'glite', '-jobtype': 'cmssw', '-server_mode': '0'}
59 >        {'server_name': 'crabas.lnl.infn.it/data1/cms/', '-scheduler': 'glite', '-jobtype': 'cmssw', '-server_mode': '0'}
60  
61          """
62          opt={}
63 <        if optsToSave['server_mode'] == 1: opt['serverName']=optsToSave['server_name']
63 >        opt['serverName']=optsToSave.get('server_name',0)
64          opt['jobType']=optsToSave['jobtype']  
65          opt[ 'name']=common.work_space.taskName()  
66          task = Task( opt )
# Line 55 | Line 73 | class DBinterface:
73          """
74          Update task fields  
75          """
76 <        task = common.bossSession.loadTaskByName(common.work_space.taskName() )
76 >        #task = common.bossSession.loadTaskByName(common.work_space.taskName() )
77 >        task = common.bossSession.loadTaskByID(1)
78          
79          for key in optsToSave.keys():
80              task[key] = optsToSave[key]
# Line 66 | Line 85 | class DBinterface:
85          """  
86          Fill crab DB with  the jobs filed
87          """
88 <        task = common.bossSession.loadTaskByName(common.work_space.taskName())
88 >        #task = common.bossSession.loadTaskByName(common.work_space.taskName())
89 >        task = common.bossSession.loadTaskByID(1)
90          jobs = []
91          for id in range(nj):
92              parameters = {}
93 <            parameters['name'] = 'job' + str(id)
93 >            parameters['name'] = id
94              job = Job(parameters)
95              jobs.append(job)    
96          task.addJobs(jobs)
# Line 81 | Line 101 | class DBinterface:
101          """
102          Update Job fields  
103          """
104 <        task = common.bossSession.loadTaskByName( common.work_space.taskName())
104 >        task = common.bossSession.loadTaskByID(1)
105 >        #task = common.bossSession.loadTaskByName( common.work_space.taskName())
106          jobs = common.bossSession.loadJob(task['id'],nj+1)
107          for key in optsToSave.keys():
108              jobs[key] = optsToSave[key]
# Line 92 | Line 113 | class DBinterface:
113          """
114          Update Running Job fields  
115          """
116 <        task = common.bossSession.loadTaskByName( common.work_space.taskName())
117 <        common.bossSession.getRunningInstance(task.jobs[nj])
116 >        task = common.bossSession.loadTaskByID(1)
117 >        #task = common.bossSession.loadTaskByName( common.work_space.taskName())
118 >        common.bossSession.getRunningInstance(task.jobs[nj-1])
119          for key in optsToSave.keys():
120 <            task.jobs[nj].runningJob[key] = optsToSave[key]
120 >            task.jobs[nj-1].runningJob[key] = optsToSave[key]
121          common.bossSession.updateDB( task )
122          return
123  
124      def nJobs(self):
125 <        task = common.bossSession.loadTaskByName( common.work_space.taskName())
125 >        
126 >        task = common.bossSession.loadTaskByID(1)
127 >        #task = common.bossSession.loadTaskByName( common.work_space.taskName())
128          return len(task.jobs)
129  
130      def dump(self,jobs):
131          """
132           List a complete set of infos for a job/range of jobs  
133          """
134 <        task = common.bossSession.loadTaskByName( common.work_space.taskName())
134 >        task = common.bossSession.loadTaskByID(1)
135 >        #task = common.bossSession.loadTaskByName( common.work_space.taskName())
136  
137          njobs = len(jobs)
138          lines=[]
# Line 135 | Line 160 | class DBinterface:
160          '''    
161          header=''
162          lines=[]
163 +        task = common.bossSession.loadTaskByID(1)
164          if server_mode == 1:
165 <            header= "Task Id = %-40s " %(common.work_space.taskName())
165 >            header= "Task Id = %-40s " %(task['name'])
166          else:
167 <            task = common.bossSession.loadTaskByName(common.work_space.taskName() )
167 >         #   task = common.bossSession.loadTaskByName(common.work_space.taskName() )
168              for i in range(len(task.job)):
169                  common.bossSession.getRunningInstance(task.jobs[i])
170                  lines.append(task.jobs[i].runningJob['schedulerId'])
# Line 151 | Line 177 | class DBinterface:
177          '''
178          Perform a query over a generic task attribute
179          '''
180 <        task = common.bossSession.loadTaskByName( common.work_space.taskName() )
180 >        task = common.bossSession.loadTaskByID(1)
181          return task[attr]
182  
183      def queryJob(self, attr, njobs):
# Line 160 | Line 186 | class DBinterface:
186          over a generic job attribute
187          '''
188          lines=[]
189 <        task = common.bossSession.loadTaskByName( common.work_space.taskName())
189 >        task = common.bossSession.loadTaskByID(1)
190 >        #task = common.bossSession.loadTaskByName( common.work_space.taskName())
191          for i in njobs:
192              jobs = common.bossSession.loadJob(task['id'],i+1)
193              lines.append(task.jobs[i][attr])
# Line 172 | Line 199 | class DBinterface:
199          over a generic job attribute
200          '''
201          lines=[]
202 <        task = common.bossSession.loadTaskByName( common.work_space.taskName() )
202 >        task = common.bossSession.loadTaskByID(1)
203 >       # task = common.bossSession.loadTaskByName( common.work_space.taskName() )
204          for i in jobs:
205 <            common.bossSession.getRunningInstance(task.jobs[i])
206 <            lines.append(task.jobs[i].runningJob[attr])
205 >            common.bossSession.getRunningInstance(task.jobs[i-1])
206 >            lines.append(task.jobs[i-1].runningJob[attr])
207          return lines
208 +
209 +    def queryDistJob(self, attr):
210 +        '''
211 +        Returns the list of distinct value for a given job attributes
212 +        '''
213 +        distAttr=[]
214 +        task = common.bossSession.loadJobDist( 1, attr )
215 +        for i in task: distAttr.append(i[attr])  
216 +        return  distAttr
217 +
218 +    def queryDistJob_Attr(self, attr_1, attr_2, list):
219 +        '''
220 +        Returns the list of distinct value for a given job attributes
221 +        '''
222 +        distAttr=[]
223 +        task = common.bossSession.loadJobDistAttr( 1, attr_1, attr_2, list )
224 +        for i in task: distAttr.append(i[attr_1])  
225 +        return  distAttr
226 +
227 +    def queryAttrJob(self, attr, field):
228 +        '''
229 +        Returns the list of jobs matching the given attribute
230 +        '''
231 +        matched=[]
232 +        task = common.bossSession.loadJobsByAttr(attr )
233 +        for i in task:
234 +            matched.append(i[field])
235 +        return  matched
236 +

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines