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.7 by spiga, Mon Mar 17 14:00:59 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 +        self.task = common.bossSession.loadTaskByID(1)
42 +        return
43 +
44 +    def getTask(self, jobsList='all'): #, cfg_params):
45 +
46 +        #if jobsList == 'all':
47 +        #    self.task = common.bossSession.loadTaskByID(1)
48 +        #else:
49 +        #self.task = common.bossSession.load('1','5')  
50 +        #return self.task[0]
51 +        self.task = common.bossSession.loadTaskByID(1)
52 +        return self.task
53 +
54 +    def getJob(self, n):
55 +
56 +        self.job = common.bossSession.loadJobByID(1,n)
57 +        return self.job
58 +
59  
60      def createTask_(self, optsToSave):      
61          """
62          Task declaration
63          with the first coniguration stuff
64 <         {'server_name': 'crabas.lnl.infn.it/data1/cms/', '-scheduler': 'glite', '-jobtype': 'cmssw', '-server_mode': '0'}
64 >        {'server_name': 'crabas.lnl.infn.it/data1/cms/', '-scheduler': 'glite', '-jobtype': 'cmssw', '-server_mode': '0'}
65  
66          """
67          opt={}
68          if optsToSave['server_mode'] == 1: opt['serverName']=optsToSave['server_name']
46        opt['jobType']=optsToSave['jobtype']  
69          opt[ 'name']=common.work_space.taskName()  
70          task = Task( opt )
71        
72          common.bossSession.saveTask( task )
51        #common.bossSession.updateDB( task )
73          return
74  
75      def updateTask_(self,optsToSave):      
76          """
77          Update task fields  
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          
82          for key in optsToSave.keys():
83              task[key] = optsToSave[key]
# Line 66 | Line 88 | class DBinterface:
88          """  
89          Fill crab DB with  the jobs filed
90          """
91 <        task = common.bossSession.loadTaskByName(common.work_space.taskName())
91 >        #task = common.bossSession.loadTaskByName(common.work_space.taskName())
92 >        task = common.bossSession.loadTaskByID(1)
93          jobs = []
94          for id in range(nj):
95              parameters = {}
# Line 81 | Line 104 | class DBinterface:
104          """
105          Update Job fields  
106          """
107 <        task = common.bossSession.loadTaskByName( common.work_space.taskName())
108 <        jobs = common.bossSession.loadJob(task['id'],nj+1)
109 <        for key in optsToSave.keys():
110 <            jobs[key] = optsToSave[key]
111 <            common.bossSession.updateDB( jobs )
107 >        task = common.bossSession.loadTaskByID(1)
108 >        #task = common.bossSession.loadTaskByName( common.work_space.taskName())
109 >        for i in range(len(nj)):
110 >           # jobs = common.bossSession.loadJob(task['id'],i)
111 >            for key in optsToSave[i].keys():
112 >                task.jobs[i][key] = optsToSave[i][key]
113 >        common.bossSession.updateDB( task )
114          return
115  
116      def updateRunJob_(self, nj, optsToSave):      
117          """
118          Update Running Job fields  
119          """
120 <        task = common.bossSession.loadTaskByName( common.work_space.taskName())
121 <        common.bossSession.getRunningInstance(task.jobs[nj])
122 <        for key in optsToSave.keys():
123 <            task.jobs[nj].runningJob[key] = optsToSave[key]
120 >        task = common.bossSession.loadTaskByID(1)
121 >        #task = common.bossSession.loadTaskByName( common.work_space.taskName())
122 >        for i in nj:
123 >            common.bossSession.getRunningInstance(task.jobs[i])
124 >            for key in optsToSave.keys():
125 >                task.jobs[i].runningJob[key] = optsToSave[key]
126          common.bossSession.updateDB( task )
127          return
128  
129      def nJobs(self):
130 <        task = common.bossSession.loadTaskByName( common.work_space.taskName())
130 >        
131 >        task = common.bossSession.loadTaskByID(1)
132 >        #task = common.bossSession.loadTaskByName( common.work_space.taskName())
133          return len(task.jobs)
134  
135      def dump(self,jobs):
136          """
137           List a complete set of infos for a job/range of jobs  
138          """
139 <        task = common.bossSession.loadTaskByName( common.work_space.taskName())
139 >        task = common.bossSession.loadTaskByID(1)
140 >        #task = common.bossSession.loadTaskByName( common.work_space.taskName())
141  
142          njobs = len(jobs)
143          lines=[]
# Line 135 | Line 165 | class DBinterface:
165          '''    
166          header=''
167          lines=[]
168 +        task = common.bossSession.loadTaskByID(1)
169          if server_mode == 1:
170 <            header= "Task Id = %-40s " %(common.work_space.taskName())
170 >            header= "Task Id = %-40s " %(task['name'])
171          else:
172 <            task = common.bossSession.loadTaskByName(common.work_space.taskName() )
172 >         #   task = common.bossSession.loadTaskByName(common.work_space.taskName() )
173              for i in range(len(task.job)):
174                  common.bossSession.getRunningInstance(task.jobs[i])
175                  lines.append(task.jobs[i].runningJob['schedulerId'])
# Line 151 | Line 182 | class DBinterface:
182          '''
183          Perform a query over a generic task attribute
184          '''
185 <        task = common.bossSession.loadTaskByName( common.work_space.taskName() )
185 >        task = common.bossSession.loadTaskByID(1)
186          return task[attr]
187  
188      def queryJob(self, attr, njobs):
# Line 160 | Line 191 | class DBinterface:
191          over a generic job attribute
192          '''
193          lines=[]
194 <        task = common.bossSession.loadTaskByName( common.work_space.taskName())
194 >        task = common.bossSession.loadTaskByID(1)
195 >        #task = common.bossSession.loadTaskByName( common.work_space.taskName())
196          for i in njobs:
197              jobs = common.bossSession.loadJob(task['id'],i+1)
198              lines.append(task.jobs[i][attr])
# Line 172 | Line 204 | class DBinterface:
204          over a generic job attribute
205          '''
206          lines=[]
207 <        task = common.bossSession.loadTaskByName( common.work_space.taskName() )
207 >        task = common.bossSession.loadTaskByID(1)
208 >       # task = common.bossSession.loadTaskByName( common.work_space.taskName() )
209          for i in jobs:
210 <            common.bossSession.getRunningInstance(task.jobs[i])
211 <            lines.append(task.jobs[i].runningJob[attr])
210 >            common.bossSession.getRunningInstance(task.jobs[i-1])
211 >            lines.append(task.jobs[i-1].runningJob[attr])
212          return lines
213 +
214 +    def queryDistJob(self, attr):
215 +        '''
216 +        Returns the list of distinct value for a given job attributes
217 +        '''
218 +        distAttr=[]
219 +        task = common.bossSession.loadJobDist( 1, attr )
220 +        for i in task: distAttr.append(i[attr])  
221 +        return  distAttr
222 +
223 +    def queryDistJob_Attr(self, attr_1, attr_2, list):
224 +        '''
225 +        Returns the list of distinct value for a given job attributes
226 +        '''
227 +        distAttr=[]
228 +        task = common.bossSession.loadJobDistAttr( 1, attr_1, attr_2, list )
229 +        for i in task: distAttr.append(i[attr_1])  
230 +        return  distAttr
231 +
232 +    def queryAttrJob(self, attr, field):
233 +        '''
234 +        Returns the list of jobs matching the given attribute
235 +        '''
236 +        matched=[]
237 +        task = common.bossSession.loadJobsByAttr(attr )
238 +        for i in task:
239 +            matched.append(i[field])
240 +        return  matched
241 +
242 +
243 +    def queryAttrRunJob(self, attr,field):
244 +        '''
245 +        Returns the list of jobs matching the given attribute
246 +        '''
247 +        matched=[]
248 +        task = common.bossSession.loadJobsByRunningAttr(attr)
249 +        for i in task:
250 +            matched.append(i[field])
251 +        return matched

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines