From 99d9eba0c36e967b5336c72626c02a1b9583b0c5 Mon Sep 17 00:00:00 2001 From: Natalia Serrano Date: Mon, 29 Sep 2025 15:40:34 +0200 Subject: [PATCH 1/2] refs #2850 show a user-friendly error if the agent fails to start --- CHANGELOG.md | 6 ++ src/cfg/ogagent.cfg | 1 + src/opengnsys/log.py | 3 +- .../modules/server/ogAdmClient/__init__.py | 62 ++++++++++--------- src/opengnsys/workers/oglive_worker.py | 17 +++-- 5 files changed, 55 insertions(+), 34 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fb12d0f..5e7872c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/src/cfg/ogagent.cfg b/src/cfg/ogagent.cfg index ef64871..2594b20 100644 --- a/src/cfg/ogagent.cfg +++ b/src/cfg/ogagent.cfg @@ -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 diff --git a/src/opengnsys/log.py b/src/opengnsys/log.py index 7950b71..0402a77 100644 --- a/src/opengnsys/log.py +++ b/src/opengnsys/log.py @@ -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 diff --git a/src/opengnsys/modules/server/ogAdmClient/__init__.py b/src/opengnsys/modules/server/ogAdmClient/__init__.py index f07603c..1340380 100644 --- a/src/opengnsys/modules/server/ogAdmClient/__init__.py +++ b/src/opengnsys/modules/server/ogAdmClient/__init__.py @@ -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}) + + + + diff --git a/src/opengnsys/workers/oglive_worker.py b/src/opengnsys/workers/oglive_worker.py index 909cefd..4cc82cf 100644 --- a/src/opengnsys/workers/oglive_worker.py +++ b/src/opengnsys/workers/oglive_worker.py @@ -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() -- 2.40.1 From cd16f873d55c0e91f4b63515bbebd48aeee537d8 Mon Sep 17 00:00:00 2001 From: Natalia Serrano Date: Mon, 29 Sep 2025 15:42:03 +0200 Subject: [PATCH 2/2] refs #2850 show a user-friendly error if the agent fails to start --- src/opengnsys/workers/oglive_worker.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/opengnsys/workers/oglive_worker.py b/src/opengnsys/workers/oglive_worker.py index 4cc82cf..515b17d 100644 --- a/src/opengnsys/workers/oglive_worker.py +++ b/src/opengnsys/workers/oglive_worker.py @@ -449,7 +449,7 @@ class ogLiveWorker(ServerWorker): self.cargaPaginaWeb (f'{self.urlMsg}?idx={idx}') def muestraError (self): - self.cargaPaginaWeb (f'{self.urlErr}') + self.cargaPaginaWeb (self.urlErr) def LeeConfiguracion (self): try: -- 2.40.1