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.3 by spiga, Wed Mar 5 10:15:00 2008 UTC vs.
Revision 1.9 by spiga, Fri Mar 21 16:28:07 2008 UTC

# Line 38 | Line 38 | class DBinterface:
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, jobsList='all'): #, cfg_params):
45 +        """
46 +        Return task with all/list of jobs
47 +        """
48  
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
50         {'server_name': 'crabas.lnl.infn.it/data1/cms/', '-scheduler': 'glite', '-jobtype': 'cmssw', '-server_mode': '0'}
51
69          """
70          opt={}
71 <        if optsToSave['server_mode'] == 1: opt['serverName']=optsToSave['server_name']
55 <        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 )
60        #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() )
68 <        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())
80 <        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]
100 <            common.bossSession.updateDB( jobs )
109 >        task = common.bossSession.load(1)[0]
110 >        for id in jobsL:
111 >            for key in optsToSave[id].keys():
112 >                task.jobs[id][key] = optsToSave[id][key]
113 >        common.bossSession.updateDB( task )
114          return
115  
116 <    def updateRunJob_(self, nj, optsToSave):      
116 >    def updateRunJob_(self, jobsL, optsToSave):      
117          """
118          Update Running Job fields  
119          """
120 <        task = common.bossSession.loadTaskByID(1)
121 <        #task = common.bossSession.loadTaskByName( common.work_space.taskName())
122 <        common.bossSession.getRunningInstance(task.jobs[nj])
123 <        for key in optsToSave.keys():
124 <            task.jobs[nj].runningJob[key] = optsToSave[key]
120 >        task = common.bossSession.load(1)[0]
121 >        for id in jobsL:
122 >            common.bossSession.getRunningInstance(task.jobs[id])
123 >            for key in optsToSave.keys():
124 >                task.jobs[id].runningJob[key] = optsToSave[key]
125          common.bossSession.updateDB( task )
126          return
127  
128 <    def nJobs(self):
128 >    def nJobs(self,list=''):
129          
130 <        task = common.bossSession.loadTaskByID(1)
131 <        #task = common.bossSession.loadTaskByName( common.work_space.taskName())
132 <        return len(task.jobs)
130 >        task = common.bossSession.load(1)[0]
131 >        listId=[]
132 >        if list == 'list':
133 >            for job in task.jobs:listId.append(int(job['jobId']))  
134 >            return listId
135 >        else:
136 >            return len(task.jobs)
137  
138      def dump(self,jobs):
139          """
140           List a complete set of infos for a job/range of jobs  
141          """
142 <        task = common.bossSession.loadTaskByID(1)
126 <        #task = common.bossSession.loadTaskByName( common.work_space.taskName())
142 >        task = common.bossSession.load(1)[0]
143  
144          njobs = len(jobs)
145          lines=[]
# Line 143 | Line 159 | class DBinterface:
159  
160       #   displayReport(header, lines):
161          return      
162 +
163 +    def serializeTask(self, tmp_task = None):
164 +        if tmp_task is None:
165 +            #tmp_task = common.bossSession.loadTaskByID(1)
166 +            tmp_task = common.bossSession.load(1)[0]
167 +        return common.bossSession.serialize(tmp_task)  
168  
169      def queryID(self,server_mode=0):
170          '''
# Line 151 | Line 173 | class DBinterface:
173          '''    
174          header=''
175          lines=[]
176 <        task = common.bossSession.loadTaskByID(1)
176 >        task = common.bossSession.load(1)[0]
177          if server_mode == 1:
178              header= "Task Id = %-40s " %(task['name'])
179          else:
158         #   task = common.bossSession.loadTaskByName(common.work_space.taskName() )
180              for i in range(len(task.job)):
181                  common.bossSession.getRunningInstance(task.jobs[i])
182                  lines.append(task.jobs[i].runningJob['schedulerId'])
# Line 168 | Line 189 | class DBinterface:
189          '''
190          Perform a query over a generic task attribute
191          '''
192 <        task = common.bossSession.loadTaskByID(1)
192 >        task = common.bossSession.loadTask(1)
193          return task[attr]
194  
195 <    def queryJob(self, attr, njobs):
195 >    def queryJob(self, attr, jobs):
196          '''
197          Perform a query for a range/all/single job
198          over a generic job attribute
199          '''
200          lines=[]
201 <        task = common.bossSession.loadTaskByID(1)
202 <        #task = common.bossSession.loadTaskByName( common.work_space.taskName())
203 <        for i in njobs:
204 <            jobs = common.bossSession.loadJob(task['id'],i+1)
184 <            lines.append(task.jobs[i][attr])
201 >        str_jobs=string.join(map(str,jobs),",")
202 >        task = common.bossSession.load(1,str_jobs)[0]
203 >        for job in task.jobs:
204 >            lines.append(eval(job[attr]))
205          return lines
206  
207      def queryRunJob(self, attr, jobs):
# Line 190 | Line 210 | class DBinterface:
210          over a generic job attribute
211          '''
212          lines=[]
213 <        task = common.bossSession.loadTaskByID(1)
214 <       # task = common.bossSession.loadTaskByName( common.work_space.taskName() )
215 <        for i in jobs:
216 <            common.bossSession.getRunningInstance(task.jobs[i])
217 <            lines.append(task.jobs[i].runningJob[attr])
213 >        str_jobs=string.join(map(str,jobs),",")
214 >        task = common.bossSession.load(1,str_jobs)[0]
215 >        for job in task.jobs:
216 >            common.bossSession.getRunningInstance(job)
217 >            lines.append(job.runningJob[attr])
218          return lines
219  
220      def queryDistJob(self, attr):
# Line 202 | Line 222 | class DBinterface:
222          Returns the list of distinct value for a given job attributes
223          '''
224          distAttr=[]
225 <        task = common.bossSession.loadJobDistAttr( 1, attr )
226 <        for i in task: distAttr.append(i[attr])  
225 >        task = common.bossSession.loadJobDist( 1, attr )
226 >        for i in task: distAttr.append(eval(i[attr]))  
227 >        return  distAttr
228 >
229 >    def queryDistJob_Attr(self, attr_1, attr_2, list):
230 >        '''
231 >        Returns the list of distinct value for a given job attribute
232 >        '''
233 >        distAttr=[]
234 >        task = common.bossSession.loadJobDistAttr( 1, attr_1, attr_2, list )
235 >        for i in task: distAttr.append(eval(i[attr_1]))  
236          return  distAttr
237  
238      def queryAttrJob(self, attr, field):
# Line 216 | Line 245 | class DBinterface:
245              matched.append(i[field])
246          return  matched
247  
248 +
249 +    def queryAttrRunJob(self, attr,field):
250 +        '''
251 +        Returns the list of jobs matching the given attribute
252 +        '''
253 +        matched=[]
254 +        task = common.bossSession.loadJobsByRunningAttr(attr)
255 +        for i in task:
256 +            matched.append(i[field])
257 +        return matched

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines