From d8c8712e0840b9a98627bba34cd670280cff2370 Mon Sep 17 00:00:00 2001 From: Chris Hines <chris.hines@monash.edu> Date: Fri, 30 Aug 2019 11:29:23 +0800 Subject: [PATCH] remove the use of flaskrestful_Abort --- TES/tes/apiendpoints.py | 97 +++++++++++++++++++++++++++++------------ 1 file changed, 69 insertions(+), 28 deletions(-) diff --git a/TES/tes/apiendpoints.py b/TES/tes/apiendpoints.py index 7ad97ee..a928eea 100644 --- a/TES/tes/apiendpoints.py +++ b/TES/tes/apiendpoints.py @@ -193,20 +193,23 @@ class JobStat(Resource): sshsess = SSHSession.get_sshsession() sshsess.refresh() except: - flask_restful.abort(500, message="Error relating to the ssh sessions") + #flask_restful.abort(500, message="Error relating to the ssh sessions") + return apiabort(500, message="Error relating to the ssh sessions") try: cmd = json.loads(request.args.get('statcmd')) host = json.loads(request.args.get('host')) user = json.loads(request.args.get('username')) except (TypeError, KeyError) as e: - flask_restful.abort(400, message="Missing required parameter {}".format(e)) + #flask_restful.abort(400, message="Missing required parameter {}".format(e)) + return apiabort(400, message="Missing required parameter {}".format(e)) try: logger.debug('attempting ssh execute {} {} {}'.format(host,user,cmd)) res = Ssh.execute(sshsess, host=host, user=user, cmd=cmd) if not (res['stderr'] == '' or res['stderr'] is None or res['stderr'] == b''): logger.error(res['stderr']) - flask_restful.abort(400, message=res['stderr'].decode()) + #flask_restful.abort(400, message=res['stderr'].decode()) + return apiabort(400, message=res['stderr'].decode()) try: jobs = json.loads(res['stdout'].decode()) return jobs @@ -214,17 +217,21 @@ class JobStat(Resource): import traceback logger.error(e) logger.error(traceback.format_exc()) - flask_restful.abort(400, message=e) + #flask_restful.abort(400, message=e) + return apiabort(400, message=e) except SshAgentException as e: logger.error(e) - flask_restful.abort(401, message="Identity error {}".format(e)) + #flask_restful.abort(401, message="Identity error {}".format(e)) + return apiabort(401, message="Identity error {}".format(e)) except SshCtrlException as e: - flask_restful.abort(400,message="We're having difficultly contacting {}. We failed with the message: {}".format(host,e)) + #flask_restful.abort(400,message="We're having difficultly contacting {}. We failed with the message: {}".format(host,e)) + return apiabort(400,message="We're having difficultly contacting {}. We failed with the message: {}".format(host,e)) except Exception as e: import traceback logger.error('JobStat.get: Exception {}'.format(e)) logger.error(traceback.format_exc()) - flask_restful.abort(500,message="SSH failed in an unexpected way") + #flask_restful.abort(500,message="SSH failed in an unexpected way") + return apiabort(500,message="SSH failed in an unexpected way") class MkDir(Resource): def post(self): @@ -246,20 +253,26 @@ class MkDir(Resource): Ssh.sftpmkdir(sshsess, host=params['identity']['site']['host'], user=params['identity']['username'], path=params['path'],name=data['name'], sshport=sshport) except SftpPermissionException as e: - flask_restful.abort(403,message="You don't have permission to make a directory there") + #return json.dumps({'message':"You don't have permission to make a directory there"}), 403 + #flask_restful.abort(403,message="You don't have permission to make a directory there") + return apiabort(403,message="You don't have permission to make a directory there") except SftpException as e: - flask_restful.abort(500,message="Something went wrong making that directory") + #return json.dumps({'message':"Something went wrong making that directory"}), 500 + #flask_restful.abort(500,message="Something went wrong making that directory") + return apiabort(500,message="Something went wrong making that directory") except Exception as e: import traceback logger.error(traceback.format_exc()) - flask_restful.abort(500,message="Something went wrong creating that directory, probably a bug") + #flask_restful.abort(500,message="Something went wrong creating that directory, probably a bug") + return apiabort(500,message="Something went wrong creating that directory, probably a bug") return except Exception as e: import traceback logger.error(e) logger.error(traceback.format_exc()) - flask_restful.abort(500,message="mkdir failed in some unexpected way") + #flask_restful.abort(500,message="mkdir failed in some unexpected way") + return apiabort(500,message="mkdir failed in some unexpected way") class DirList(Resource): def get(self): @@ -288,7 +301,9 @@ class DirList(Resource): try: dirls = json.loads(res['stdout'].decode()) except: - flask_restful.abort(401,message="You don't have permission to view that directory") + #return json.dumps({'message':"You don't have permission to view that directory"}), 401 + #flask_restful.abort(401,message="You don't have permission to view that directory") + return apiabort(401,message="You don't have permission to view that directory") else: logger.debug('using ssh.sftpls') @@ -296,12 +311,14 @@ class DirList(Resource): user=params['identity']['username'], path=params['path'],changepath=params['cd'], sshport=sshport) return dirls except SshCtrlException as e: - flask_restful.abort(400,message="We're having difficultly contacting {}. We failed with the message {}".format(params['identity']['site']['host'],e)) + #flask_restful.abort(400,message="We're having difficultly contacting {}. We failed with the message {}".format(params['identity']['site']['host'],e)) + return apiabort(400,message="We're having difficultly contacting {}. We failed with the message {}".format(params['identity']['site']['host'],e)) except Exception as e: import traceback logger.error(e) logger.error(traceback.format_exc()) - flask_restful.abort(500,message="dirlist failed in some unexpected way") + #flask_restful.abort(500,message="dirlist failed in some unexpected way") + return apiabort(500,message="dirlist failed in some unexpected way") class JobCancel(Resource): """ @@ -318,15 +335,21 @@ class JobCancel(Resource): res = Ssh.execute(sshsess, host=params['identity']['site']['host'], user=params['identity']['username'], cmd=params['interface']['cancelcmd'].format(jobid=jobid)) if not (res['stderr'] == '' or res['stderr'] is None or res['stderr'] == b''): - flask_restful.abort(400, message=res['stderr'].decode()) + #return json.dumps({'message':res['stderr'].decode()}), 400 + #flask_restful.abort(400, message=res['stderr'].decode()) + return apiabort(400, message=res['stderr'].decode()) return res['stdout'].decode() except SshCtrlException as e: - flask_restful.abort(400,message="We're having difficultly contacting {}. We failed with the message {}".format(params['identity']['site']['host'],e)) + #return json.dumps({'message':"We're having difficultly contacting {}. We failed with the message {}".format(params['identity']['site']['host'],e)}), 400 + #flask_restful.abort(400,message="We're having difficultly contacting {}. We failed with the message {}".format(params['identity']['site']['host'],e)) + return apiabort(400,message="We're having difficultly contacting {}. We failed with the message {}".format(params['identity']['site']['host'],e)) except Exception as e: import traceback logger.error(e) logger.error(traceback.format_exc()) - flask_restful.abort(500,message="jobcancel failed in some unexpected way") + #return json.dumps({'message':"jobcancel failed in some unexpected way"}), 500 + #flask_restful.abort(500,message="jobcancel failed in some unexpected way") + return apiabort(500,message="jobcancel failed in some unexpected way") @@ -356,23 +379,31 @@ class JobSubmit(Resource): logger.error('body') logger.error(request.data) logger.error('end body') - flask_restful.abort(400, message='Incomplete job information was passed to the backend.') + #return json.dumps({'message':'Incomplete job information was passed to the backend.'}), 400 + #flask_restful.abort(400, message='Incomplete job information was passed to the backend.') + return apiabort(400, message='Incomplete job information was passed to the backend.') try: res = Ssh.execute(sshsess, host=params['identity']['site']['host'], user=params['identity']['username'], cmd=params['interface']['submitcmd'], stdin=script) except SshCtrlException as e: - flask_restful.abort(400,message="We're having difficultly contacting {}. We failed with the message {}".format(params['identity']['site']['host'],e)) + #return json.dumps({'message':"We're having difficultly contacting {}. We failed with the message {}".format(params['identity']['site']['host'],e)}), 400 + #flask_restful.abort(400,message="We're having difficultly contacting {}. We failed with the message {}".format(params['identity']['site']['host'],e)) + return apiabort(400,message="We're having difficultly contacting {}. We failed with the message {}".format(params['identity']['site']['host'],e)) if not (res['stderr'] == '' or res['stderr'] is None or res['stderr'] == b''): logger.debug('failed to submit job') logger.debug(res['stderr']) - flask_restful.abort(400, message=res['stderr'].decode()) + #return json.dumps({'message':res['stderr'].decode()}), 400 + #flask_restful.abort(400, message=res['stderr'].decode()) + return apiabort(400, message=res['stderr'].decode()) return res['stdout'].decode() except Exception as e: import traceback logger.error(e) logger.error(traceback.format_exc()) - flask_restful.abort(500,message="JobSubmission failed in some unexpected way") + #return json.dumps({'message':"JobSubmission failed in some unexpected way"}), 500 + #flask_restful.abort(500,message="JobSubmission failed in some unexpected way") + return apiabort(500,message="JobSubmission failed in some unexpected way") def gen_authtok(): """ @@ -386,6 +417,9 @@ def gen_authtok(): return ''.join(random.SystemRandom().choice(string.ascii_uppercase + string.digits) for _ in range(16)) +def apiabort(code, message): + return json.dumps({'message':message}), code + class AppUrl(Resource): def get(self): import logging @@ -402,7 +436,8 @@ class AppUrl(Resource): import traceback logger.error(e) logger.error(traceback.format_exc()) - flask_restful.abort(500,message="AppUrl failed in some unexpected way") + #flask_restful.abort(500,message="AppUrl failed in some unexpected way") + return apiabort(500,message="AppUrl failed in some unexpected way") class AppInstance(Resource): def get(self, username, loginhost, batchhost, jobid): @@ -421,7 +456,8 @@ class AppInstance(Resource): res = Ssh.execute(sshsess, host=batchhost, bastion=loginhost, user=username, cmd=paramscmd) except: message = "The server couldn't execute to {} to get the necessary info".format(batchhost) - flask_restful.abort(400, message=message) + #flask_restful.abort(400, message=message) + return apiabort(400, message=message) import traceback logger.error(traceback.format_exc()) try: @@ -432,22 +468,26 @@ class AppInstance(Resource): except json.decoder.JSONDecodeError as e: logger.error(res['stderr']+res['stdout']) message="I'm having trouble using ssh to find out about that application" - flask_restful.abort(400, message=message) + #flask_restful.abort(400, message=message) + return apiabort(400, message=message) #raise AppParamsException(res['stderr']+res['stdout']) if len(res['stderr']) > 0: logger.error(res['stderr']+res['stdout']) - flask_restful.abort(400, message="The command {} on {} didn't work".format(paramscmd,batchhost)) + #flask_restful.abort(400, message="The command {} on {} didn't work".format(paramscmd,batchhost)) + return apiabort(400, message="The command {} on {} didn't work".format(paramscmd,batchhost)) #raise AppParamsException(res['stderr']) if 'error' in data: raise AppParamsException(data['error']) if not (res['stderr'] == '' or res['stderr'] is None or res['stderr'] == b''): - flask_restful.abort(400, message=res['stderr'].decode()) + #flask_restful.abort(400, message=res['stderr'].decode()) + return apiabort(400, message=res['stderr'].decode()) return data except Exception as e: import traceback logger.error(e) logger.error(traceback.format_exc()) - flask_restful.abort(500,message="AppUrl failed in some unexpected way") + #flask_restful.abort(500,message="AppUrl failed in some unexpected way") + return apiabort(500,message="AppUrl failed in some unexpected way") class CreateTunnel(Resource): @staticmethod @@ -502,7 +542,8 @@ class CreateTunnel(Resource): import traceback logger.error(e) logger.error(traceback.format_exc()) - flask_restful.abort(500,message="CreateTunnel failed in some unexpected way") + #flask_restful.abort(500,message="CreateTunnel failed in some unexpected way") + return apiabort(500,message="CreateTunnel failed in some unexpected way") -- GitLab