def do_logout (request): response = { "status" : "fail" } try: logout (request) response ["status"] = "ok" except Exception as e: traceback.print_exc () return ViewUtil.get_json_response (response)
def delete_run (request): response = { "status" : "ok" } workdir = request.REQUEST ["workdir"] workflowId = request.REQUEST ["workflowid"] runId = request.REQUEST ["runid"] workflowName = os.path.basename (workflowId).replace (".dax", "") process_username = ViewUtil.get_os_username () workdirPath = workdir if runId: workdirPath = GraysonUtil.form_workdir_path (workdir, process_username, workflowName, runId) user = ViewUtil.get_user (request) workdirPath = ViewUtil.form_workflow_path (user, workdirPath) logger.debug ("DELETING workflow run: %s", workdirPath) try: shutil.rmtree (workdirPath) except Exception as e: logger.exception ("exception deleting %s", workdirPath) traceback.print_exc () response ["status"] = "fail" return ViewUtil.get_json_response (response)
def grid_authenticate (request): result = { 'status' : 'ok' } try: myproxyController = MyProxyController ( port = settings.MYPROXY_PORT, hostname = settings.MYPROXY_HOST, serverDN = settings.MYPROXY_SERVER_DN, proxyCertMaxLifetime = settings.MYPROXY_CERT_MAX_LIFETIME, proxyCertLifetime = settings.MYPROXY_CERT_LIFETIME) myproxyController.login (username = request.REQUEST ['username'], password = request.REQUEST ['password'], certPath = settings.MYPROXY_CERTPATH, vdtLocation = settings.VDT_LOCATION) except Exception as ex: text = "error getting credential from myproxy: %s" % ex logger.error (text) result ['status'] = 'error' result ['message'] = text traceback.print_exc (ex) return ViewUtil.get_json_response (result)
def do_login (request): response = { "status" : "fail", "message" : _("Failed to authenticate user") } username = request.POST [GraysonWebConst.USERNAME] password = request.POST [GraysonWebConst.PASSWORD] logging.info (_("processing authentication request for user[%s]"), username) try: user = authenticate (username = username, password = password) logger.debug ("graysonapp:do_login: ldap backedn returned user: %s is_active: %s", user, user.is_active) if user and user.is_active: login (request, user) logger.debug ("graysonapp:do_login: calling middleware login") request.session [GraysonWebConst.USER] = user response ["status"] = "ok" response ["message"] = _("authenticated") response ["clientId"] = user.username ViewUtil.setUser (username) except Exception as e: traceback.print_exc () return ViewUtil.get_json_response (response)
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 debugger (request): commandMap = { 'stop' : 'condor_rm', 'pause' : 'condor_hold', 'resume' : 'condor_release' } # TODO: Auth check to ensure this job belongs to this user... before running actual condor commands... output = [] executor = Executor ({ 'condorHome' : os.environ ['CONDOR_HOME'], 'command' : commandMap [request.REQUEST ["command"]], 'jobId' : request.REQUEST ["job"] }) executor.execute (command = "${condorHome}/bin/${command} ${jobId} 2>&1", pipe = True, processor = lambda n : output.append (n), raiseException = False) return ViewUtil.get_json_response ({ "status" : "ok", "output" : ''.join (output) })
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" })
def do_login_required (request): return ViewUtil.get_json_response ({ "status" : "login_required" })
def put_file (request): path = request.REQUEST ["path"] content = request.REQUEST ["content"] logger.debug ("writing file: %s", path) GraysonUtil.writeFile (path, content) return ViewUtil.get_json_response ({ "status" : "ok" })
def connect_flows (request): controller = ViewController () response = controller.findFlows (request) return ViewUtil.get_json_response (response)