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
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 >> ")
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)
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
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)
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
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)
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)
def qtaskLogFile(taskid): task = DPADataLibrary.DjangoLibrary(BaseQName).get(taskid) if task != "": return task.logFileName return ""
def qtaskMetadata(taskid): task = DPADataLibrary.DjangoLibrary(BaseQName).get(taskid) if task != "": return str(task) return ""