From 80f6aa60607a17476b4ddff4dfd3e7b4e95bf54d Mon Sep 17 00:00:00 2001
From: Isabella Almeida <isabella@tecgraf.puc-rio.br>
Date: Tue, 12 Nov 2019 17:17:26 -0300
Subject: [PATCH] =?UTF-8?q?[SOMA-2553][SOMA-2650]=20Na=20sga/server.lua,?=
 =?UTF-8?q?=20passar=20token=20atrav=C3=A9s=20do=20job=20-=20Revertendo=20?=
 =?UTF-8?q?altera=C3=A7=C3=B5es=20no=20server.lua=20(n=C3=A3o=20=C3=A9=20m?=
 =?UTF-8?q?ais=20preciso=20ler=20nada=20por=20fora=20do=20driver,=20pois?=
 =?UTF-8?q?=20o=20token=20j=C3=A1=20vem=20dentro=20do=20objeto=20job)=20-?=
 =?UTF-8?q?=20Alterando=20o=20driver=20posix=20para=20verificar=20se=20o?=
 =?UTF-8?q?=20token=20veio=20como=20par=C3=A2metro=20e,=20se=20for=20o=20c?=
 =?UTF-8?q?aso,=20exportar=20como=20vari=C3=A1vel=20de=20linha=20de=20coma?=
 =?UTF-8?q?ndo=20-=20Alterado=20o=20script=20request.sh=20para=20enviar=20?=
 =?UTF-8?q?um=20token=20'fake'=20para=20testes?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 request.sh           | 3 ++-
 sga/driver/posix.lua | 8 +++++++-
 sga/server.lua       | 5 +----
 3 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/request.sh b/request.sh
index 3f0f2ad..0cdd903 100755
--- a/request.sh
+++ b/request.sh
@@ -6,7 +6,7 @@ export SGA_BASE_URL="http://localhost:12345"
 case "$1" in
 
 job)
-   curl -v -H "Content-Type: application/json" -H 'Authorization: USER_TOKEN' -X POST -d '{
+   curl -v -H "Content-Type: application/json" -X POST -d '{
       "cmd_string": "bash -c \"echo user token: \\$CSBASE_USER_TOKEN \" && sleep 10 && echo bye",
       "cmd_id": "job_123",
       "parameters": {
@@ -14,6 +14,7 @@ job)
          "csbase_command_root_path":"/tmp",
          "csbase_command_output_path":"/tmp",
          "csbase_command_sandbox_paths.1":"/tmp/job_123",
+         "csbase_command_user_token":"USER_TOKEN",
       }
    }' $SGA_BASE_URL'/v1/sga/'$SGA_NAME'/job'
    ;;
diff --git a/sga/driver/posix.lua b/sga/driver/posix.lua
index 9754475..894944f 100644
--- a/sga/driver/posix.lua
+++ b/sga/driver/posix.lua
@@ -27,6 +27,12 @@ function posix.execute_command(self, job, cmd_string)
 
    filemonitor.init(job)
 
+   local job_cmd = cmd_string
+   -- Export the user token as an environment variable to the command string
+   if job.parameters.csbase_command_user_token then
+      job_cmd = "CSBASE_USER_TOKEN="..job.parameters.csbase_command_user_token.." "..job_cmd
+   end
+
    for _, sandbox_path in ipairs(job.sandboxes) do
       local ok, err = lfs.mkdir(sandbox_path)
       if not ok then
@@ -65,7 +71,7 @@ function posix.execute_command(self, job, cmd_string)
          end
 
          local start_time = os.time()
-         os.execute(cmd_string)
+         os.execute(job_cmd)
          local walltime_s = os.difftime(os.time(), start_time)
          ok, err = util.write_file(done_file(self, job.jid), walltime_s)
          if not ok then
diff --git a/sga/server.lua b/sga/server.lua
index 5a99050..7923bdb 100644
--- a/sga/server.lua
+++ b/sga/server.lua
@@ -224,10 +224,7 @@ function server.new(config, logger, client, driver)
 
             local job = self.joblist:new_job(job_request.cmd_id, job_request.cmd_string, job_request.parameters)
 
-            --TODO: Usar o valor do token obtido do header do request
-            local job_cmd = "CSBASE_USER_TOKEN=MEU_TOKEN "..job_request.cmd_string
-
-            local pok, ok, err = pcall(self.driver.execute_command, self.driver, job, job_cmd)
+            local pok, ok, err = pcall(self.driver.execute_command, self.driver, job, job_request.cmd_string)
             self.joblist:accept_job(job, pok and ok)
             if not pok then
                fail(ok, 500)
-- 
GitLab