Compare commits
8 Commits
jobid-wait
...
main
Author | SHA1 | Date |
---|---|---|
|
c0483c93c1 | |
|
83a25947bd | |
|
d180917d3b | |
|
8b8204d10f | |
|
25b2cb6cd8 | |
|
fc8b072860 | |
|
860fb61677 | |
|
33f65a45b7 |
13
CHANGELOG.md
13
CHANGELOG.md
|
@ -6,6 +6,19 @@ All notable changes to this project will be documented in this file.
|
|||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [7.3.2] - 2025-08-04
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix syntax
|
||||
|
||||
## [7.3.1] - 2025-08-04
|
||||
|
||||
### Fixed
|
||||
|
||||
- On user logout, write the user to the log
|
||||
- On EjecutarScript with client=true, return a job ID
|
||||
|
||||
## [7.3.0] - 2025-07-31
|
||||
|
||||
### Fixed
|
||||
|
|
|
@ -1,3 +1,16 @@
|
|||
ogagent (7.3.2-1) stable; urgency=medium
|
||||
|
||||
* Fix syntax
|
||||
|
||||
-- OpenGnsys developers <info@opengnsys.es> Mon, 04 Aug 2025 14:36:47 +0200
|
||||
|
||||
ogagent (7.3.1-1) stable; urgency=medium
|
||||
|
||||
* On user logout, write the user to the log
|
||||
* On EjecutarScript with client=true, return a job ID
|
||||
|
||||
-- OpenGnsys developers <info@opengnsys.es> Mon, 04 Aug 2025 14:22:52 +0200
|
||||
|
||||
ogagent (7.3.0-1) stable; urgency=medium
|
||||
|
||||
* Wait for zombies
|
||||
|
|
|
@ -1 +1 @@
|
|||
7.3.0
|
||||
7.3.2
|
||||
|
|
|
@ -110,6 +110,11 @@ class ClientProcessor(threading.Thread):
|
|||
logger.debug('Got Client message {}={}'.format(msg, REV_DICT.get(msg)))
|
||||
if self.parent.clientMessageProcessor is not None:
|
||||
self.parent.clientMessageProcessor(msg, data)
|
||||
if msg == REQ_LOGIN:
|
||||
if b',' in data:
|
||||
self.user = data.split (b',')[0]
|
||||
else:
|
||||
self.user = data
|
||||
|
||||
def run(self):
|
||||
self.running = True
|
||||
|
@ -197,8 +202,14 @@ class ClientProcessor(threading.Thread):
|
|||
logger.error('Invalid message in queue: {}'.format(e))
|
||||
|
||||
logger.debug('Client processor stopped')
|
||||
if os.path.exists ('/windows/temp'): open ('/windows/temp/ogagentuser_died', 'w').close()
|
||||
else: open ( '/tmp/ogagentuser_died', 'w').close()
|
||||
if os.path.exists ('/windows/temp'):
|
||||
fd = open ('/windows/temp/ogagentuser_died', 'wb')
|
||||
fd.write (self.user)
|
||||
fd.close()
|
||||
else:
|
||||
fd = open ('/tmp/ogagentuser_died', 'wb')
|
||||
fd.write (self.user)
|
||||
fd.close()
|
||||
try:
|
||||
self.clientSocket.close()
|
||||
except Exception:
|
||||
|
|
|
@ -74,10 +74,12 @@ class OGAgentSvc(Daemon, CommonService):
|
|||
while self.isAlive:
|
||||
client_died=False
|
||||
if os.path.exists ('/tmp/ogagentuser_died'):
|
||||
with open ('/tmp/ogagentuser_died', 'rb') as fd:
|
||||
u = fd.read()
|
||||
os.unlink ('/tmp/ogagentuser_died')
|
||||
client_died=True
|
||||
if client_died:
|
||||
self.notifyLogout (b'')
|
||||
self.notifyLogout (u)
|
||||
|
||||
# In milliseconds, will break
|
||||
self.doWait(1000)
|
||||
|
|
|
@ -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']
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -108,10 +108,12 @@ class OGAgentSvc(win32serviceutil.ServiceFramework, CommonService):
|
|||
while self.isAlive:
|
||||
client_died=False
|
||||
if os.path.exists ('/windows/temp/ogagentuser_died'):
|
||||
with open ('/windows/temp/ogagentuser_died', 'rb') as fd:
|
||||
u = fd.read()
|
||||
os.unlink ('/windows/temp/ogagentuser_died')
|
||||
client_died=True
|
||||
if client_died:
|
||||
self.notifyLogout (b'')
|
||||
self.notifyLogout (u)
|
||||
|
||||
# Pumps & processes any waiting messages
|
||||
pythoncom.PumpWaitingMessages()
|
||||
|
|
Loading…
Reference in New Issue