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.5 by spiga, Fri Mar 7 09:27:49 2008 UTC vs.
Revision 1.10 by spiga, Tue Mar 25 16:29:12 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):
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=[]
# Line 148 | Line 165 | class DBinterface:
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          '''
# Line 156 | Line 179 | class DBinterface:
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'])
# Line 173 | Line 195 | class DBinterface:
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):
# Line 195 | Line 216 | class DBinterface:
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):
# Line 208 | Line 229 | class DBinterface:
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
# Line 229 | Line 251 | class DBinterface:
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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines