def findFlows(self, request): user = ViewUtil.get_user(request) app_username = user.username os_username = ViewUtil.get_os_username() logger.debug("connect_flows:user: %s", user.username) workflowPath = ViewUtil.form_workflow_path(user) files = GraysonUtil.getDirs(of_dir=workflowPath) workdirs = GraysonUtil.findFilesByName(".*?\.grayson_upk$", files) response = [] for workdir in workdirs: logger.debug("connect_flows: workdir: %s", workdir) conf = None try: conf = GraysonUtil.readJSONFile(os.path.join(workdir, "grayson.conf")) except IOError as e: pass if conf: outputFile = conf["output-file"] files = GraysonUtil.getFiles(workdir, recursive=False) runs = GraysonUtil.getDirs( os.path.join(workdir, "work", os_username, "pegasus", outputFile.replace(".dax", "")) ) runs.sort() def normalize(line): return GraysonUtil.getUserRelativePath(line, app_username) runDirs = GraysonUtil.findFilesByName("[0-9]{8}T[0-9]{6}\-[0-9]{4}$", runs) item = { "flow": normalize(workdir), "id": outputFile, "runs": map(lambda p: " ".join([os.path.basename(p), self.get_job_status(p)]), runDirs), "graphs": GraysonUtil.findFilesByName(".*?.graphml$", files), "daxen": map(normalize, GraysonUtil.findFilesByName("[a-zA-Z0-9\._\-]+\.dax$", files)), } response.append(item) response.sort(key=lambda k: k["id"]) return response
def getOutputFiles (self, subworkflows=[], item=None): output = [] path = [] files = GraysonUtil.getFiles (self.workdir) ''' ''' if len (subworkflows) > 0: pattern = subworkflows [0] else: for sub in subworkflows: sub = sub.replace (".dax", "") path.append (".*?%s" % sub) pattern = "".join (path) if type (item) == unicode or type (item) == str: request = ".*?%s/%s" % (pattern, item) output = GraysonUtil.findFilesByName (".*?%s/%s" % (pattern, item), files) elif type(item) == list: for output in item: partial = GraysonUtil.findFilesByName (".*?%s/%s" % (pattern, output), files) for element in partial: output.append (element) return output