Ejemplo n.º 1
0
def qtaskList(taskid, frange):
    fids = Frange(input_range=frange)
    frameList = fids.frames
    dl = DPADataLibrary.DjangoLibrary(BaseQName)

    ret = []
    for frame in frameList:
        tid = taskid + "_" + str(frame).zfill(4)

        entry = ["~", "~", "~", "~", "~", "~"]
        entry[0] = tid
        task = dl.get(tid)

        entry[1] = task.queueName
        entry[2] = task.queueStatus
        if task.queueStatus == "archived":
            entry[2] = "done"
        if task.queueStatus == "open":
            entry[2] = "waiting"

        entry[3] = task.queueMachine
        entry[4] = task.queueStartTime
        entry[5] = task.queueElapsedTime
        if task.queueStartTime != "" and task.queueEndTime == "":
            entry[5] = DpaPipeElapsedUnspacedTime(
                task.queueStartTime, DpaPipeFormattedUnspacedTime())
        if task.queueStartTime != "" and task.queueEndTime != "":
            entry[5] = DpaPipeElapsedUnspacedTime(task.queueStartTime,
                                                  task.queueEndTime)

        ret.append(entry)

    return ret
Ejemplo n.º 2
0
def search(qtaskid):
    print "Searching for qtaskid " + qtaskid
    qtask = DPADataLibrary.DjangoLibrary(BaseQName).get(qtaskid)
    if qtask == "":
        return
    print str(qtask)
    keyselect = raw_input("Hit return when done >> ")
Ejemplo n.º 3
0
def create_queue_task(queue_name, script_path, unique_id, output_file=None,
    submit=True, log_path=None):

    # ---- submit to the queue

    from cheesyq import DPACheesyQ, DPADataLibrary, DPACheesyQTasks

    data_lib = DPADataLibrary.DjangoLibrary(None)

    render_task = DPACheesyQ.RenderTask()
    render_task.taskid = unique_id

    if log_path:
        render_task.logFileName = log_path

    if output_file:
        render_task.outputFileName = output_file
        render_task.outputLocation = os.path.dirname(output_file)

    data_lib.set(render_task.taskid, render_task)
    render_task.addTask(script_path)

    if submit:
        os.system("cqresubmittask {qn} {tid}".format(
            qn=queue_name,
            tid=render_task.taskid
        ))
            
        print "Submitted task: " + str(render_task.taskid)
Ejemplo n.º 4
0
    def process(self):
        self._max_qtasks = 0
        self._current_progress = 0
        result = []
        for item in self._wrangletasklist:
            frange = str(item.text(2))
            fids = Frange(input_range=frange)
            self._max_qtasks += len(fids.frames)

        self.setNumberOfQTasks.emit(self._max_qtasks)
        self.updateProgress.emit(self._current_progress)
        for item in self._wrangletasklist:
            self._mutex.lock()
            flag = self._abort
            self._mutex.unlock()
            if flag:
                break

            taskid = str(item.text(5))
            frange = str(item.text(2))

            fids = Frange(input_range=frange)
            frameList = fids.frames

            dl = DPADataLibrary.DjangoLibrary(BaseQName)
            for frame in frameList:
                tid = taskid + "_" + DpaPipeFormattedFrame( frame )

                entry = ["~", "~", "~", "~", "~", "~"]
                entry[0] = tid
                task = dl.get(tid)

                entry[1] = task.queueName
                entry[2] = task.queueStatus
                entry[3] = task.queueMachine
                entry[4] = task.queueStartTime
                entry[5] = task.queueElapsedTime

                if task.queueStatus == "archived":
                    entry[2] = "done"
                elif task.queueStatus == "open":
                    entry[2] = "waiting"
                else:
                    if task.queueStartTime != "" and task.queueEndTime == "":
                        entry[5] = DpaPipeElapsedUnspacedTime( task.queueStartTime, DpaPipeFormattedUnspacedTime() )
                # if task.queueStartTime != "" and task.queueEndTime != "":
                #     entry[5] = DpaPipeElapsedUnspacedTime( task.queueStartTime, task.queueEndTime )

                result.append(entry)
                self._current_progress += 1
                self.updateProgress.emit(self._current_progress)

        self._mutex.lock()
        self._working = False
        self._mutex.unlock()

        self.jobComplete.emit(result)
        self.finished.emit()

    # End of QTaskListWorker class
Ejemplo n.º 5
0
def display(taskid):
    task = DPADataLibrary.DjangoLibrary(BaseQName).get(taskid)
    if not os.path.exists(task.outputLocation):
        print "Image directory does not exist. No action taken."
        return

    cmd = "dpavur " + task.outputFileName + " &"
    os.system(cmd)

    bannerMessage = "Displayed " + str(task)
Ejemplo n.º 6
0
def imageInfo(baseId):
    info = []
    db = GetWranglingDB()
    record = db.get(baseId)
    if record == "":
        return info
    if len(record.frames) == 0:
        return info
    atask = baseId + DpaPipeFormattedFrame(record.frames[0])
    tdb = DPADataLibrary.DjangoLibrary(BaseQName).get(atask)
    if tdb == "":
        return info
    framesDir = tdb.outputLocation
    if not os.path.exists(framesDir):
        return info
    info.append(framesDir)
    return info
Ejemplo n.º 7
0
def check(baseId):
    record = GetWranglingDB().get(baseId)
    if record == "":
        return
    #if record.status == "pending" or record.status == "done" or record.status == "aborted" or record.status == "published":
    #    return
    if len(record.frames) == 0:
        return
    qtaskid = record.baseId + "_" + DpaPipeFormattedFrame(record.frames[0])
    qtask = DPADataLibrary.DjangoLibrary(BaseQName).get(qtaskid)
    if qtask == "":
        return
    outputFiles = next(os.walk(qtask.outputLocation))[2]
    completedFrames = []
    badFrames = []
    badexceptions = 0
    for f in outputFiles:
        if f.endswith(".exr"):
            try:
                baseName, num, ftype = f.split(".", 2)
                framePath = qtask.outputLocation + "/" + f
                cmd = "checkFrame " + framePath  # checkFrame is a C++ program which uses openEXR library to check whether an exr file is complete or not.
                checkresult = 1
                #checkresult = os.system(cmd)
                if not checkresult or checkresult == 34304:  #The number 34304 is when the frame has no data to check whether the file is incomplete or not
                    badFrames.append(int(num))
                else:
                    fileSize = float(
                        os.path.getsize(framePath) / 1024
                    )  #This is to check file size. If file size is less than 300KB, then probably that frame is failed.
                    if fileSize >= 300.0:
                        completedFrames.append(int(num))
                    else:
                        badFrames.append(int(num))
            except:
                #nothing to really do here
                badexceptions = badexceptions + 1
    record.completedFrames = completedFrames
    record.badFrames = badFrames
    GetWranglingDB().set(record.baseId, record)
Ejemplo n.º 8
0
def nuke(wrangler, baseIds):
    nodes = []
    assigned = GetWranglerDB().get(wrangler).showAssignment()
    actual_baseIds = []
    db = GetWranglingDB()
    for baseid in baseIds:
        bid = baseid.strip()
        for ii in assigned:
            if re.search(bid, ii):
                if actual_baseIds.count(ii) == 0:
                    actual_baseIds.append(ii)
    for bid in actual_baseIds:
        record = db.get(bid)
        if len(record.frames) > 0:
            atask = bid + "_" + DpaPipeFormattedFrame(record.frames[0])
            tdb = DPADataLibrary.DjangoLibrary(BaseQName).get(atask)
            if tdb != "":
                framesDir = tdb.outputLocation
                if os.path.exists(framesDir):
                    baseName = "dunno"
                    actual_frames = os.listdir(framesDir)
                    for f in actual_frames:
                        ff = f.split('.')
                        if len(ff) == 3:
                            if ff[2] == "exr":
                                baseName = ff[0]
                                break
                    frange = dpa.frange.Frange(input_range=record.frames)
                    if baseName != "dunno":
                        nodes.append([framesDir + "/" + baseName, frange])
                    else:
                        print "No frames found for baseid " + bid
    cmd = "nuke -t " + os.getenv('NUKE_SCRIPTS') + "/nukeWrangling.py "
    for n in nodes:
        cmd = cmd + n[0] + ".####.exr," + str(n[1].first) + "," + str(
            n[1].last) + " "
    cmd = cmd + " &"
    print "Loading... \n" + cmd + "\n"
    os.system(cmd)
Ejemplo n.º 9
0
def qtaskLogFile(taskid):
    task = DPADataLibrary.DjangoLibrary(BaseQName).get(taskid)
    if task != "":
        return task.logFileName
    return ""
Ejemplo n.º 10
0
def qtaskMetadata(taskid):
    task = DPADataLibrary.DjangoLibrary(BaseQName).get(taskid)
    if task != "":
        return str(task)
    return ""