From ad1f596aac4ac3d01c29ffff645e8f4ffbb4b8b7 Mon Sep 17 00:00:00 2001
From: Chris Hines <chris.hines@monash.edu>
Date: Tue, 5 Feb 2019 14:33:59 +1100
Subject: [PATCH] change the list of parameters to /stat to make it shorter and
 more human readable

---
 tes/apiendpoints.py | 41 ++++++++++++++++++++---------------------
 1 file changed, 20 insertions(+), 21 deletions(-)

diff --git a/tes/apiendpoints.py b/tes/apiendpoints.py
index 6e8b429..71b1740 100644
--- a/tes/apiendpoints.py
+++ b/tes/apiendpoints.py
@@ -204,28 +204,17 @@ class JobStat(Resource):
         """
         import logging
         logger = logging.getLogger()
-        try:
-            params = get_conn_params()
-        except:
-            flask_restful.abort(400, "connection parameters not correctly defined")
         try:
             sshsess = SSHSession.get_sshsession()
             sshsess.refresh()
         except:
-            flask_restful.abort(500, "Error relating to the ssh sessions")
-        try:
-            host = params['identity']['site']['host']
-        except (TypeError, KeyError) as e:
-            flask_restful.abort(400, message="stat: definition of login host incomplete")
+            flask_restful.abort(500, message="Error relating to the ssh sessions")
         try:
-            user = params['identity']['username']
+            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="stat: definition of username incomplete")
-        try:
-            cmd = params['interface']['statcmd']
-        except (TypeError, KeyError) as e:
-            flask_restful.abort(400, message="stat: definition of batch interface incomplete")
-        logger.debug('ssh sess socket is {}'.format(sshsess.socket))
+            flask_restful.abort(400, message="Missing required parameter {}".format(e))
 
         try:
             logger.debug('attempting ssh execute {} {} {}'.format(host,user,cmd))
@@ -239,10 +228,6 @@ class JobStat(Resource):
         try:
             jobs = json.loads(res['stdout'].decode())
 
-            # Attach the identity information to the job before returning it
-            for j in jobs:
-                j['identity'] = params['identity']
-
             return jobs
         except Exception as e:
             import traceback
@@ -281,6 +266,9 @@ class MkDir(Resource):
 
 class DirList(Resource):
     def get(self):
+        import logging
+        logger = logging.getLogger()
+
         params = get_conn_params()
         sshsess = SSHSession.get_sshsession()
         site = params['identity']['site']
@@ -295,6 +283,7 @@ class DirList(Resource):
         if cd == "":
             cd = "."
         if 'lscmd' in site and site['lscmd'] is not None and site['lscmd'] is not "":
+            logger.debug('using ssh.execute with lscmd')
             res = Ssh.execute(sshsess, host=params['identity']['site']['host'], user=params['identity']['username'],
                                 sshport=sshport,
                                 cmd="{} {} {}".format(site['lscmd'],path,cd))
@@ -303,6 +292,7 @@ class DirList(Resource):
             except:
                 flask_restful.abort(404,message="You don't have permission to view that directory")
         else:
+            logger.debug('using ssh.sftpls')
 
             dirls = Ssh.sftpls(sshsess, host=params['identity']['site']['host'],
                                user=params['identity']['username'], path=params['path'],changepath=params['cd'], sshport=sshport)
@@ -340,7 +330,16 @@ class JobSubmit(Resource):
         logger.debug(data)
         try:
             script = data['app']['startscript'].format(**data)
-        except:
+        except Exception as e:
+            import traceback
+            logger.error(e)
+            logger.error(traceback.format_exc())
+            logger.error('formating data')
+            logger.error(data)
+            logger.error('end formating data')
+            logger.error('body')
+            logger.error(request.data)
+            logger.error('end body')
             flask_restful.abort(400, message='Incomplete job information was passed to the backend.')
         logger.debug('script formated to {}'.format(script))
 
-- 
GitLab