From 25b2cb6cd8e8bfaf0f21ed1a618842877b8a1599 Mon Sep 17 00:00:00 2001 From: Natalia Serrano Date: Mon, 4 Aug 2025 14:21:04 +0200 Subject: [PATCH] refs #2558 #2559 return job_id to ogcore --- .../modules/client/OpenGnSys/__init__.py | 4 +-- .../modules/server/OpenGnSys/__init__.py | 26 +++++++++++++++++-- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/opengnsys/modules/client/OpenGnSys/__init__.py b/src/opengnsys/modules/client/OpenGnSys/__init__.py index 39c3928..d78aeb3 100644 --- a/src/opengnsys/modules/client/OpenGnSys/__init__.py +++ b/src/opengnsys/modules/client/OpenGnSys/__init__.py @@ -50,8 +50,8 @@ class OpenGnSysWorker(ClientWorker): def process_script(self, json_params): script = json_params['code'] logger.debug('Processing message: script({})'.format(script)) - self.jobmgr.launch_job (script, True) - #self.sendServerMessage('script', {'op', 'launched'}) + job_id = self.jobmgr.launch_job (script, True) + self.sendServerMessage('script_launched', {'op': 'launched', 'job_id': job_id}) def process_terminatescript(self, json_params): job_id = json_params['job_id'] diff --git a/src/opengnsys/modules/server/OpenGnSys/__init__.py b/src/opengnsys/modules/server/OpenGnSys/__init__.py index 350b4ca..ceb0c3e 100644 --- a/src/opengnsys/modules/server/OpenGnSys/__init__.py +++ b/src/opengnsys/modules/server/OpenGnSys/__init__.py @@ -375,8 +375,30 @@ class OpenGnSysWorker(ServerWorker): else: ## post_params.get('client') is not 'false' ## send script as-is self.sendClientMessage('script', {'code': script}) - #return {'op': 'launched', 'job_id': job_id} ## TODO obtain job_id generated at the client (can it be done?) - return {'op': 'launched'} + + ## wait for job_id generated at the client + job_id = None + iters = 0 + while True: + time.sleep (0.2) + if os.path.exists ('/tmp/EjecutarScript-jobid'): + with open ('/tmp/EjecutarScript-jobid', 'r') as fd: + job_id = fd.read() + break + iters += 1 + if iters >= 10: break + + try: os.unlink ('/tmp/EjecutarScript-jobid'): + except: pass + + if job_id is None: return {'op': 'launched'} + else: return {'op': 'launched', 'job_id': job_id} + + def process_client_script_launched(self, data): + fd = open ('/tmp/EjecutarScript-jobid', 'w') + fd.write (data['job_id']) + fd.close() + return True @execution_level('full') @check_secret