From 66b6ea4fc46cbd94f4759e2f886881ac3bccdbca Mon Sep 17 00:00:00 2001 From: Natalia Serrano Date: Wed, 6 Nov 2024 13:08:28 +0100 Subject: [PATCH] refs #1104 return inventory inline --- linux/debian/changelog | 6 +++ ogcore-mock.py | 2 +- src/VERSION | 2 +- .../modules/server/CloningEngine/__init__.py | 53 ++++++++----------- src/opengnsys/workers/oglive_worker.py | 8 +-- 5 files changed, 35 insertions(+), 36 deletions(-) diff --git a/linux/debian/changelog b/linux/debian/changelog index 509b0b7..736204c 100644 --- a/linux/debian/changelog +++ b/linux/debian/changelog @@ -1,3 +1,9 @@ +ogagent (1.4.5~pre1-1) stable; urgency=medium + + * CrearImagen: return inventory inline + + -- OpenGnsys developers Wed, 06 Nov 2024 12:41:14 +0100 + ogagent (1.4.4-1) stable; urgency=medium * Use logger.debug() to prevent the windows agent from dying diff --git a/ogcore-mock.py b/ogcore-mock.py index 716e52f..2c1e69d 100644 --- a/ogcore-mock.py +++ b/ogcore-mock.py @@ -178,7 +178,7 @@ def oac_recibe_archivo(): logging.info(f'dec ({dec})') return jsonify({'anything':'anything'}) ## if we return {}, then we trigger "if not {}" which happens to be true -@app.route('/opengnsys/rest/ogAdmClient/callback', methods=['POST']) +@app.route('/opengnsys/rest/clients/status/webhook', methods=['POST']) def oac_callback(): logging.info(f'{request.get_json()}') return jsonify({'anything':'anything'}) diff --git a/src/VERSION b/src/VERSION index 1c99cf0..e167f12 100644 --- a/src/VERSION +++ b/src/VERSION @@ -1 +1 @@ -1.4.4 +1.4.5-pre1 diff --git a/src/opengnsys/modules/server/CloningEngine/__init__.py b/src/opengnsys/modules/server/CloningEngine/__init__.py index b95bd23..08ff75a 100644 --- a/src/opengnsys/modules/server/CloningEngine/__init__.py +++ b/src/opengnsys/modules/server/CloningEngine/__init__.py @@ -48,7 +48,7 @@ class CloningEngineWorker (ogLiveWorker): def onDeactivation (self): logger.debug ('onDeactivation') - def InventariandoSoftware (self, dsk, par, sw, nfn): + def InventariandoSoftware (self, dsk, par, nfn): sft_src = f'/tmp/CSft-{self.IPlocal}-{par}' try: self.interfaceAdmin (nfn, [dsk, par, sft_src]) @@ -58,31 +58,23 @@ class CloningEngineWorker (ogLiveWorker): if herror: logger.warning ('Error al ejecutar el comando') + b64 = '' self.muestraMensaje (20) else: if not os.path.exists (sft_src): raise Exception (f'interfaceAdmin({nfn}) returned success but did not create file ({sft_src})') sft_src_contents = Path (sft_src).read_bytes() - ## Envía fichero de inventario al servidor - sft_dst = f'/tmp/Ssft-{self.IPlocal}-{par}' ## Nombre que tendra el archivo en el Servidor - logger.debug ('sending recibeArchivo to server') - res = self.enviaMensajeServidor ('recibeArchivo', { 'nfl': sft_dst, 'contents': base64.b64encode (sft_src_contents).decode ('utf-8') }) - logger.debug (res) - if not res: - herror = 12 ## Error de envío de fichero por la red - raise Exception ('Ha ocurrido algún problema al enviar un archivo por la red') + b64 = base64.b64encode (sft_src_contents).decode ('utf-8') self.muestraMensaje (19) - if not sw: - cmd = { - 'nfn': 'RESPUESTA_InventarioSoftware', - 'par': par, - 'sft': sft_dst, - } - return self.respuestaEjecucionComando (cmd, herror, 0) - - return {'true':'true'} ## XXX + cmd = { + 'nfn': 'RESPUESTA_InventarioSoftware', + 'dsk': dsk, ## not in the original C code, around ogAdmClient.c:1944 + 'par': par, + 'contents': b64, + } + return self.respuestaEjecucionComando (cmd, herror, 0) def do_CrearImagen (self, post_params): for k in ['dsk', 'par', 'cpt', 'idi', 'nci', 'ipr', 'nfn', 'ids']: @@ -102,13 +94,14 @@ class CloningEngineWorker (ogLiveWorker): self.muestraMensaje (7) try: - res = self.InventariandoSoftware (dsk, par, False, 'InventarioSoftware') ## Crea inventario Software previamente + res = self.InventariandoSoftware (dsk, par, 'InventarioSoftware') ## Crea inventario Software previamente except: logger.warning ('Error al ejecutar el comando') return {} - if res: + if res['contents']: self.muestraMensaje (2) + inv_sft = res['contents'] try: self.interfaceAdmin (nfn, [dsk, par, nci, ipr]) self.muestraMensaje (9) @@ -119,16 +112,18 @@ class CloningEngineWorker (ogLiveWorker): herror = 1 else: logger.warning ('Error al ejecutar el comando') + inv_sft = '' self.muestraMenu() cmd = { - 'nfn': 'RESPUESTA_CrearImagen', - 'idi': idi, ## Identificador de la imagen - 'dsk': dsk, ## Número de disco - 'par': par, ## Número de partición de donde se creó - 'cpt': cpt, ## Tipo o código de partición - 'ipr': ipr, ## Ip del repositorio donde se alojó + 'nfn': 'RESPUESTA_CrearImagen', + 'idi': idi, ## Identificador de la imagen + 'dsk': dsk, ## Número de disco + 'par': par, ## Número de partición de donde se creó + 'cpt': cpt, ## Tipo o código de partición + 'ipr': ipr, ## Ip del repositorio donde se alojó + 'inv_sft': inv_sft, } return self.respuestaEjecucionComando (cmd, herror, ids) @@ -275,16 +270,14 @@ class CloningEngineWorker (ogLiveWorker): self.muestraMensaje (7) try: - self.InventariandoSoftware (dsk, par, True, 'InventarioSoftware') + cmd = self.InventariandoSoftware (dsk, par, 'InventarioSoftware') herror = 0 except: logger.warning ('Error al ejecutar el comando') + cmd = { 'nfn': 'RESPUESTA_InventarioSoftware' } herror = 1 self.muestraMenu() - cmd = { - 'nfn': 'RESPUESTA_InventarioSoftware', - } return self.respuestaEjecucionComando (cmd, herror, ids) def process_CrearImagen (self, path, get_params, post_params, server): diff --git a/src/opengnsys/workers/oglive_worker.py b/src/opengnsys/workers/oglive_worker.py index 63d1466..43291fd 100644 --- a/src/opengnsys/workers/oglive_worker.py +++ b/src/opengnsys/workers/oglive_worker.py @@ -139,7 +139,7 @@ class ogLiveWorker(ServerWorker): def notifier (self, result): logger.debug (f'notifier() called, result ({result})') - res = self.REST.sendMessage ('/clients/status/webhook', result) + res = self.REST.sendMessage ('clients/status/webhook', result) def mon (self): while True: @@ -153,7 +153,7 @@ class ogLiveWorker(ServerWorker): if not elem['thread'].is_alive(): logger.debug (f'is no longer alive, k ({k}) thread ({elem["thread"]})') elem['running'] = False - elem['result'] = elem['thread'].result + elem['result'] = elem['thread'].result ## race condition: KeyError: 'thread' del elem['thread'] self.notifier (elem['result']) @@ -169,9 +169,9 @@ class ogLiveWorker(ServerWorker): ''' if parametros: - proc = ['bash', '-c', '{} bash -x {} {}'.format (devel_bash_prefix, exe, ' '.join (parametros))] + proc = ['bash', '-c', '{} {} {}'.format (devel_bash_prefix, exe, ' '.join (parametros))] else: - proc = ['bash', '-c', '{} bash -x {}'.format (devel_bash_prefix, exe)] + proc = ['bash', '-c', '{} {}'.format (devel_bash_prefix, exe)] logger.debug ('subprocess.run ("{}", capture_output=True)'.format (proc)) p = subprocess.run (proc, capture_output=True) ## DEBUG