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