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