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.7 by spiga, Mon Mar 17 14:00:59 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 <        self.task = common.bossSession.loadTaskByID(1)
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 <        #    self.task = common.bossSession.loadTaskByID(1)
51 <        #else:
52 <        #self.task = common.bossSession.load('1','5')  
53 <        #return self.task[0]
54 <        self.task = common.bossSession.loadTaskByID(1)
55 <        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 <        self.job = common.bossSession.loadJobByID(1,n)
60 <        return self.job
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
64        {'server_name': 'crabas.lnl.infn.it/data1/cms/', '-scheduler': 'glite', '-jobtype': 'cmssw', '-server_mode': '0'}
65
69          """
70          opt={}
71 <        if optsToSave['server_mode'] == 1: opt['serverName']=optsToSave['server_name']
71 >        opt['serverName']=optsToSave['server_name']
72          opt[ 'name']=common.work_space.taskName()  
73          task = Task( opt )
74        
# Line 76 | Line 79 | class DBinterface:
79          """
80          Update task fields  
81          """
82 <        #task = common.bossSession.loadTaskByName(common.work_space.taskName() )
80 <        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())
92 <        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 <        for i in range(len(nj)):
112 <           # jobs = common.bossSession.loadJob(task['id'],i)
111 <            for key in optsToSave[i].keys():
112 <                task.jobs[i][key] = optsToSave[i][key]
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 <        for i in nj:
123 <            common.bossSession.getRunningInstance(task.jobs[i])
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[i].runningJob[key] = optsToSave[key]
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)
140 <        #task = common.bossSession.loadTaskByName( common.work_space.taskName())
142 >        task = common.bossSession.load(1)[0]
143  
144          njobs = len(jobs)
145          lines=[]
# Line 157 | 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 165 | 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:
172         #   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 182 | 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)
198 <            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 204 | 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-1])
217 <            lines.append(task.jobs[i-1].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 217 | Line 223 | class DBinterface:
223          '''
224          distAttr=[]
225          task = common.bossSession.loadJobDist( 1, attr )
226 <        for i in task: distAttr.append(i[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 attributes
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(i[attr_1])  
235 >        for i in task: distAttr.append(eval(i[attr_1]))  
236          return  distAttr
237  
238      def queryAttrJob(self, attr, field):

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines