示例#1
0
    def loadTask(self, taskId, jobRange='all', deep=True):
        """
        retrieve task information from db using task id

        the jobs loading can be tuned using jobRange:
        - None       : no jobs are loaded
        - 'all'      : all jobs are loaded
        - list/range : only selected jobs are loaded
        """

        # db connect
        if self.db is None:
            self.connect()

        # create template for task
        task = Task()
        task['id'] = int(taskId)
        task.load(self.db, False)

        # load jobs
        # # backward compatible 'deep' parameter handling
        if jobRange is not None and deep != False:
            self.load(task, jobRange)

        return task
示例#2
0
    def loadTask( self, taskId, jobRange='all', deep=True ) :
        """
        retrieve task information from db using task id

        the jobs loading can be tuned using jobRange:
        - None       : no jobs are loaded
        - 'all'      : all jobs are loaded
        - list/range : only selected jobs are loaded
        """

        # db connect
        if self.db is None :
            self.connect()

        # create template for task
        task = Task()
        task['id'] = int(taskId)
        task.load(self.db, False)

        # load jobs
        # # backward compatible 'deep' parameter handling
        if jobRange is not None and deep != False :
            self.load( task, jobRange )

        return task
示例#3
0
    def loadTaskByName(self, name, jobRange='all', deep=True):
        """
        retrieve task information from db for task 'name'
        """

        # db connect
        if self.db is None:
            self.connect()

        # create template for task and load
        task = Task()
        task['name'] = name
        task.load(self.db, False)

        # load jobs
        # # backward compatible 'deep' parameter handling
        if jobRange is not None and deep != False:
            self.load(task, jobRange)

        return task
示例#4
0
    def loadTaskByName( self, name, jobRange='all', deep=True ) :
        """
        retrieve task information from db for task 'name'
        """

        # db connect
        if self.db is None :
            self.connect()

        # create template for task and load
        task = Task()
        task['name'] = name
        task.load(self.db, False)

        # load jobs
        # # backward compatible 'deep' parameter handling
        if jobRange is not None and deep != False :
            self.load( task, jobRange )

        return task
示例#5
0
    def load(self,
             task,
             jobRange="all",
             jobAttributes=None,
             runningAttrs=None,
             strict=True,
             limit=None,
             offset=None):
        """
        retrieve information from db for:
        - jobRange can be of the form:
             'a,b:c,d,e'
             ['a',b','c']
             'all'
             None (no jobs to be loaded

        In some way these should be the option to build the query.
        Maybe, same options should be used also in
        loadSubmitted, loadCreated, loadEnded, loadFailed

        Takes the highest submission number for each job
        """

        # db connect
        if self.db is None:
            self.connect()

        # already loaded task?
        if not isinstance(task, Task):
            task = Task({'id': task})
            task.load(self.db, False)
        elif jobRange == 'all' and task.jobs != []:
            jobRange = None

        # simple case: no jobs loading request
        if jobRange is None:
            return task

        # defining default
        if jobAttributes is None:
            jobAttributes = {}

        # evaluate job list
        jobList = None
        if jobRange is not None and jobRange != 'all':

            # identify jobRange
            if type(jobRange) == list:
                jobList = jobRange
            else:
                jobList = parseRange(jobRange)

            # if there are loaded jobs, load just missing
            if task.jobs != []:
                s = [str(job['jobId']) for job in task.jobs]
                jobList = [str(x) for x in jobList if str(x) not in s]

            # no jobs to be loaded?
            if jobList == []:
                return task
            elif jobList is not None:
                jobList.sort()

        # load
        jobAttributes['taskId'] = int(task['id'])
        jobs = self.loadJobsByRunningAttr( runningAttrs, \
                                           jobAttributes, \
                                           strict=strict, \
                                           limit=limit, offset=offset,\
                                           jobList=jobList )
        task.appendJobs(jobs)

        return task
示例#6
0
    def load( self, task, jobRange="all", jobAttributes=None, runningAttrs=None, strict=True, limit=None, offset=None ) :
        """
        retrieve information from db for:
        - jobRange can be of the form:
             'a,b:c,d,e'
             ['a',b','c']
             'all'
             None (no jobs to be loaded

        In some way these should be the option to build the query.
        Maybe, same options should be used also in
        loadSubmitted, loadCreated, loadEnded, loadFailed

        Takes the highest submission number for each job
        """

        # db connect
        if self.db is None :
            self.connect()

        # already loaded task?
        if not isinstance( task, Task ) :
            task = Task({'id' : task})
            task.load(self.db, False)
        elif jobRange == 'all' and task.jobs != []:
            jobRange = None

        # simple case: no jobs loading request
        if jobRange is None:
            return task

        # defining default
        if jobAttributes is None :
            jobAttributes = {}

        # evaluate job list
        jobList = None
        if jobRange is not None and jobRange != 'all':

            # identify jobRange
            if type( jobRange ) == list :
                jobList = jobRange
            else :
                jobList = parseRange( jobRange )

            # if there are loaded jobs, load just missing
            if task.jobs != []:
                s = [ str(job['jobId']) for job in task.jobs ]
                jobList = [str(x) for x in jobList if str(x) not in s]

            # no jobs to be loaded?
            if jobList == [] :
                return task
            elif jobList is not None:
                jobList.sort()

        # load
        jobAttributes['taskId'] = int( task['id'] )
        jobs = self.loadJobsByRunningAttr( runningAttrs, \
                                           jobAttributes, \
                                           strict=strict, \
                                           limit=limit, offset=offset,\
                                           jobList=jobList )
        task.appendJobs( jobs )

        return task