def api_run (request): response = { "status" : "ok" } try: workflowId = None logger.debug ("request: %s", request.REQUEST) logger.debug ("files: %s", request.FILES) if GraysonWebConst.WORKFLOW in request.FILES: workflow = request.FILES [GraysonWebConst.WORKFLOW] logger.debug (_("Processing uploaded workfow archive: %s."), workflow) logger.debug ("Processing uploaded workfow archive: %s.", workflow) user = ViewUtil.get_user (request) file_name = ViewUtil.form_workflow_path (user, workflow.name) contentFile = ContentFile (workflow.read ()) logger.debug ("saving filename: %s", file_name) archivePath = default_storage.save (file_name, contentFile) logger.debug ("""executing workflow - user : %s archive : %s archivePath : %s amqpSettings : %s """, user, file_name, archivePath, settings.AMQP_SETTINGS) WorkflowMonitor.ensureRunning (workflowRoot = settings.GRAYSONWEB_WORKFLOW_ROOT, amqpSettings = settings.AMQP_SETTINGS, eventBufferSize = settings.EVENT_BUFFER_SIZE) ExecuteWorkflow.delay (user = user, archive = file_name, archivePath = archivePath, workflowRoot = settings.GRAYSONWEB_WORKFLOW_ROOT, amqpSettings = settings.AMQP_SETTINGS) logger.debug ("execute called..") except Exception as e: logger.error ("Exception occurred during api_run()") traceback.print_exc () logger.debug ("getting response object %s", response) return ViewUtil.get_json_response (response)
def get_flow_events (request): workdir = request.REQUEST ["workdir"] workflowId = request.REQUEST ["workflowid"] runId = request.REQUEST ["runid"] dax = request.REQUEST ["dax"] if "dax" in request.REQUEST else None if not dax: dax = os.path.basename (workflowId) logger.debug ("dax: %s", dax) workflowName = os.path.basename (workflowId).replace (".dax", "") process_username = ViewUtil.get_os_username () workdirPath = GraysonUtil.form_workdir_path (workdir, process_username, workflowName, runId) user = ViewUtil.get_user (request) workdirPath = ViewUtil.form_workflow_path (user, workdirPath) logger.debug ("launching monitor: user: %s, workdir: %s, workflowId: %s, runId: %s, dax: %s", user.username, workdirPath, workflowId, runId, dax) workflowMonitorDatabase = WorkflowMonitorDatabase () WorkflowMonitor.ensureRunning (workflowRoot = settings.GRAYSONWEB_WORKFLOW_ROOT, amqpSettings = settings.AMQP_SETTINGS, eventBufferSize = settings.EVENT_BUFFER_SIZE) workflowMonitorDatabase.subscribeToWorkflow ( settings.GRAYSONWEB_WORKFLOW_ROOT, { "username" : user.username, "workflowId" : workflowId, "workdir" : workdirPath, "daxen" : dax.split (','), "buffer" : 0 }) return ViewUtil.get_json_response ({ "status" : "ok" })