refs #2850 show a user-friendly error if the agent fails to start

pull/65/head
Natalia Serrano 2025-09-29 15:40:34 +02:00
parent 71630387c2
commit 99d9eba0c3
5 changed files with 55 additions and 34 deletions

View File

@ -5,6 +5,12 @@ 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).
## [8.4.0] - 2025-09-29
### Changed
- Show a user-friendly error if the agent fails to start
## [8.3.3] - 2025-09-23
### Fixed

View File

@ -38,6 +38,7 @@ log=DEBUG
pathinterface=/opt/opengnsys/interfaceAdm
urlMenu={}://{}/menu-browser
urlMsg=http://localhost/cgi-bin/httpd-log.sh
urlErr=http://localhost/cgi-bin/httpd-err.sh
# TLS
ca=/opt/opengnsys/etc/ca.crt

View File

@ -97,7 +97,8 @@ class Logger(object):
except Exception:
tb = '(could not get traceback!)'
self.log(DEBUG, 'traceback follows: "{}"'.format(tb))
if 'Refusing to load' not in tb:
self.log(DEBUG, 'traceback follows: "{}"'.format(tb))
def flush(self):
pass

View File

@ -90,18 +90,6 @@ class ogAdmClientWorker (ogLiveWorker):
name = 'ogAdmClient' # Module name
REST = None # REST object
def onDeactivation (self):
"""
Sends OGAgent stopping notification to OpenGnsys server
"""
logger.debug ('onDeactivation')
self.REST.sendMessage ('ogagent/stopped', {'mac': self.mac, 'ip': self.IPlocal, 'idcentro': self.idcentro, 'idaula': self.idaula,
'idordenador': self.idordenador, 'nombreordenador': self.nombreordenador})
def InventariandoSoftware (self, dsk, par, nfn):
sft_src = f'/tmp/CSft-{self.IPlocal}-{par}'
try:
@ -277,32 +265,48 @@ class ogAdmClientWorker (ogLiveWorker):
self.exec_level = 'full'
self.random = ''.join(random.choice(string.ascii_lowercase + string.digits) for _ in range(32))
logger.info ('Inicio de sesion')
logger.info ('Abriendo sesión en el servidor de Administración')
if (not self.inclusionCliente()):
raise Exception ('Se han generado errores. No se puede continuar la ejecución de este módulo')
logger.info ('Cliente iniciado')
logger.info ('Procesando caché')
if not self.cuestionCache():
raise Exception ('Se han generado errores. No se puede continuar la ejecución de este módulo')
if self.idproautoexec > 0:
logger.info ('Ejecución de archivo Autoexec')
if not self.autoexecCliente():
try:
logger.info ('Inicio de sesion')
logger.info ('Abriendo sesión en el servidor de Administración')
if (not self.inclusionCliente()):
raise Exception ('Se han generado errores. No se puede continuar la ejecución de este módulo')
logger.info ('Procesa comandos pendientes')
if not self.comandosPendientes():
raise Exception ('Se han generado errores. No se puede continuar la ejecución de este módulo')
logger.info ('Cliente iniciado')
logger.info ('Procesando caché')
if not self.cuestionCache():
raise Exception ('Se han generado errores. No se puede continuar la ejecución de este módulo')
logger.info ('Acciones pendientes procesadas')
if self.idproautoexec > 0:
logger.info ('Ejecución de archivo Autoexec')
if not self.autoexecCliente():
raise Exception ('Se han generado errores. No se puede continuar la ejecución de este módulo')
logger.info ('Procesa comandos pendientes')
if not self.comandosPendientes():
raise Exception ('Se han generado errores. No se puede continuar la ejecución de este módulo')
logger.info ('Acciones pendientes procesadas')
except:
self.muestraError()
logger.warning ('onActivation failed')
return
self.muestraMenu()
self.procesaComandos()
logger.info ('onActivation ok')
def onDeactivation (self):
"""
Sends OGAgent stopping notification to OpenGnsys server
"""
logger.debug ('onDeactivation')
self.REST.sendMessage ('ogagent/stopped', {'mac': self.mac, 'ip': self.IPlocal, 'idcentro': self.idcentro, 'idaula': self.idaula,
'idordenador': self.idordenador, 'nombreordenador': self.nombreordenador})

View File

@ -448,6 +448,9 @@ class ogLiveWorker(ServerWorker):
def muestraMensaje (self, idx):
self.cargaPaginaWeb (f'{self.urlMsg}?idx={idx}')
def muestraError (self):
self.cargaPaginaWeb (f'{self.urlErr}')
def LeeConfiguracion (self):
try:
parametroscfg = self.interfaceAdmin ('getConfiguration') ## Configuración de los Sistemas Operativos del cliente
@ -510,6 +513,7 @@ class ogLiveWorker(ServerWorker):
self.pathinterface = self.service.config.get (self.name, 'pathinterface')
self.urlMenu = self.service.config.get (self.name, 'urlMenu')
self.urlMsg = self.service.config.get (self.name, 'urlMsg')
self.urlErr = self.service.config.get (self.name, 'urlErr')
ca_file = self.service.config.get (self.name, 'ca')
crt_file = self.service.config.get (self.name, 'crt')
@ -522,11 +526,16 @@ class ogLiveWorker(ServerWorker):
logger.setLevel (loglevel)
self.REST = REST (url, ca_file=ca_file, crt_file=crt_file, key_file=key_file)
if not self.tomaIPlocal():
raise Exception ('Se han generado errores. No se puede continuar la ejecución de este módulo')
try:
if not self.tomaIPlocal():
raise Exception ('Se han generado errores. No se puede continuar la ejecución de este módulo')
if not self.tomaMAClocal():
raise Exception ('Se han generado errores. No se puede continuar la ejecución de este módulo')
if not self.tomaMAClocal():
raise Exception ('Se han generado errores. No se puede continuar la ejecución de este módulo')
except:
self.muestraError()
logger.warning ('onActivation failed')
return
threading.Thread (name='monitoring_thread', target=self.mon, daemon=True).start()