refs #783 make Actualizar() asynchronous
parent
3191a171a1
commit
647489d507
|
@ -32,12 +32,10 @@
|
||||||
|
|
||||||
import base64
|
import base64
|
||||||
import os
|
import os
|
||||||
import time
|
|
||||||
import random
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from opengnsys.log import logger
|
from opengnsys.log import logger
|
||||||
from opengnsys.workers import ogLiveWorker, ThreadWithResult
|
from opengnsys.workers import ogLiveWorker
|
||||||
|
|
||||||
class CloningEngineWorker (ogLiveWorker):
|
class CloningEngineWorker (ogLiveWorker):
|
||||||
name = 'CloningEngine' # Module name
|
name = 'CloningEngine' # Module name
|
||||||
|
@ -171,26 +169,6 @@ class CloningEngineWorker (ogLiveWorker):
|
||||||
}
|
}
|
||||||
return self.respuestaEjecucionComando (cmd, herror, ids)
|
return self.respuestaEjecucionComando (cmd, herror, ids)
|
||||||
|
|
||||||
def _long_running_job (self, name, f, args):
|
|
||||||
any_job_running = False
|
|
||||||
for k in self.thread_list:
|
|
||||||
if self.thread_list[k]['running']:
|
|
||||||
any_job_running = True
|
|
||||||
break
|
|
||||||
if any_job_running:
|
|
||||||
logger.info ('some job is already running, refusing to launch another one')
|
|
||||||
return { 'job_id': None, 'message': 'some job is already running, refusing to launch another one' }
|
|
||||||
|
|
||||||
job_id = '{}-{}'.format (name, ''.join (random.choice ('0123456789abcdef') for _ in range (8)))
|
|
||||||
self.thread_list[job_id] = {
|
|
||||||
'thread': ThreadWithResult (target=f, args=args),
|
|
||||||
'starttime': time.time(),
|
|
||||||
'running': True,
|
|
||||||
'result': None
|
|
||||||
}
|
|
||||||
self.thread_list[job_id]['thread'].start()
|
|
||||||
return { 'job_id': job_id }
|
|
||||||
|
|
||||||
def process_status (self, path, get_params, post_params, server):
|
def process_status (self, path, get_params, post_params, server):
|
||||||
## join finished threads
|
## join finished threads
|
||||||
for k in self.thread_list:
|
for k in self.thread_list:
|
||||||
|
|
|
@ -387,7 +387,6 @@ class ogAdmClientWorker (ogLiveWorker):
|
||||||
def process_status (self, path, get_params, post_params, server):
|
def process_status (self, path, get_params, post_params, server):
|
||||||
return {self.name: 'in process_status'} ## XXX
|
return {self.name: 'in process_status'} ## XXX
|
||||||
|
|
||||||
## curl --insecure -X POST --data '{"nfn": "popup", "title": "my title", "message": "my message"}' https://192.168.1.249:8000/ogAdmClient/popup
|
|
||||||
@check_secret
|
@check_secret
|
||||||
def process_popup (self, path, get_params, post_params, server):
|
def process_popup (self, path, get_params, post_params, server):
|
||||||
logger.debug ('in process_popup, path "{}" get_params "{}" post_params "{}" server "{}"'.format (path, get_params, post_params, server))
|
logger.debug ('in process_popup, path "{}" get_params "{}" post_params "{}" server "{}"'.format (path, get_params, post_params, server))
|
||||||
|
@ -396,9 +395,7 @@ class ogAdmClientWorker (ogLiveWorker):
|
||||||
## type(post_params) "<class 'dict'>"
|
## type(post_params) "<class 'dict'>"
|
||||||
return {'debug':'test'}
|
return {'debug':'test'}
|
||||||
|
|
||||||
## curl --insecure https://192.168.1.249:8000/ogAdmClient/Actualizar
|
def do_Actualizar (self, post_params):
|
||||||
def process_Actualizar (self, path, get_params, post_params, server):
|
|
||||||
logger.debug ('in process_Actualizar, path "{}" get_params "{}" post_params "{}" server "{}"'.format (path, get_params, post_params, server))
|
|
||||||
self.muestraMensaje (1)
|
self.muestraMensaje (1)
|
||||||
#if !comandosPendientes: error 84 'Ha ocurrido algún problema al reiniciar la sesión del cliente'
|
#if !comandosPendientes: error 84 'Ha ocurrido algún problema al reiniciar la sesión del cliente'
|
||||||
cfg = self.LeeConfiguracion()
|
cfg = self.LeeConfiguracion()
|
||||||
|
@ -414,6 +411,10 @@ class ogAdmClientWorker (ogLiveWorker):
|
||||||
self.muestraMenu()
|
self.muestraMenu()
|
||||||
return self.respuestaEjecucionComando (cmd, 0)
|
return self.respuestaEjecucionComando (cmd, 0)
|
||||||
|
|
||||||
|
def process_Actualizar (self, path, get_params, post_params, server):
|
||||||
|
logger.debug ('in process_Actualizar, path "{}" get_params "{}" post_params "{}" server "{}"'.format (path, get_params, post_params, server))
|
||||||
|
return self._long_running_job ('Actualizar', self.do_Actualizar, args=(post_params,))
|
||||||
|
|
||||||
def process_Purgar (self, path, get_params, post_params, server):
|
def process_Purgar (self, path, get_params, post_params, server):
|
||||||
logger.debug ('in process_Purgar, path "{}" get_params "{}" post_params "{}" server "{}"'.format (path, get_params, post_params, server))
|
logger.debug ('in process_Purgar, path "{}" get_params "{}" post_params "{}" server "{}"'.format (path, get_params, post_params, server))
|
||||||
exit (0) ## ogAdmClient.c:905
|
exit (0) ## ogAdmClient.c:905
|
||||||
|
|
|
@ -31,6 +31,8 @@
|
||||||
# pylint: disable=unused-wildcard-import,wildcard-import
|
# pylint: disable=unused-wildcard-import,wildcard-import
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import time
|
||||||
|
import random
|
||||||
import subprocess
|
import subprocess
|
||||||
import threading
|
import threading
|
||||||
|
|
||||||
|
@ -190,3 +192,23 @@ class ogLiveWorker(ServerWorker):
|
||||||
|
|
||||||
if not self.tomaIPlocal():
|
if not self.tomaIPlocal():
|
||||||
raise Exception ('Se han generado errores. No se puede continuar la ejecución de este módulo')
|
raise Exception ('Se han generado errores. No se puede continuar la ejecución de este módulo')
|
||||||
|
|
||||||
|
def _long_running_job (self, name, f, args):
|
||||||
|
any_job_running = False
|
||||||
|
for k in self.thread_list:
|
||||||
|
if self.thread_list[k]['running']:
|
||||||
|
any_job_running = True
|
||||||
|
break
|
||||||
|
if any_job_running:
|
||||||
|
logger.info ('some job is already running, refusing to launch another one')
|
||||||
|
return { 'job_id': None, 'message': 'some job is already running, refusing to launch another one' }
|
||||||
|
|
||||||
|
job_id = '{}-{}'.format (name, ''.join (random.choice ('0123456789abcdef') for _ in range (8)))
|
||||||
|
self.thread_list[job_id] = {
|
||||||
|
'thread': ThreadWithResult (target=f, args=args),
|
||||||
|
'starttime': time.time(),
|
||||||
|
'running': True,
|
||||||
|
'result': None
|
||||||
|
}
|
||||||
|
self.thread_list[job_id]['thread'].start()
|
||||||
|
return { 'job_id': job_id }
|
||||||
|
|
Loading…
Reference in New Issue