diff --git a/src/opengnsys/modules/server/ogAdmClient/__init__.py b/src/opengnsys/modules/server/ogAdmClient/__init__.py index 134085c..ccad181 100644 --- a/src/opengnsys/modules/server/ogAdmClient/__init__.py +++ b/src/opengnsys/modules/server/ogAdmClient/__init__.py @@ -360,6 +360,60 @@ class ogAdmClientWorker (ogLiveWorker): } return self.respuestaEjecucionComando (cmd, herror, ids) + def do_CrearImagenGit (self, post_params): + for k in ['dsk', 'par', 'cpt', 'idi', 'nci', 'ipr', 'nfn', 'ids']: + if k not in post_params: + logger.error (f'required parameter ({k}) not in POST params') + return {} + + dsk = post_params['dsk'] ## Disco + par = post_params['par'] ## Número de partición + cpt = post_params['cpt'] ## Código de la partición + idi = post_params['idi'] ## Identificador de la imagen + nci = post_params['nci'] ## Nombre canónico de la imagen + ipr = post_params['ipr'] ## Ip del repositorio + nfn = post_params['nfn'] + ids = post_params['ids'] + tag = post_params['tag'] ## Tag a crear en git una vez hecho el commit + + self.muestraMensaje (7) + + try: + res = self.InventariandoSoftware (dsk, par, 'InventarioSoftware') ## Crea inventario Software previamente + except: + logger.warning ('Error al ejecutar el comando') + return {} + + if res['contents']: + self.muestraMensaje (2) + inv_sft = res['contents'] + try: + self.interfaceAdmin (nfn, [dsk, par, nci, ipr, tag]) + self.muestraMensaje (9) + herror = 0 + except: + logger.warning ('Error al ejecutar el comando') + self.muestraMensaje (10) + herror = 1 + else: + logger.warning ('Error al ejecutar el comando') + herror = 1 + inv_sft = '' + + self.muestraMenu() + + cmd = { + 'nfn': 'RESPUESTA_CrearImagenGit', + '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) + + def do_RestaurarImagen (self, post_params): for k in ['dsk', 'par', 'idi', 'ipr', 'nci', 'ifs', 'ptc', 'nfn', 'ids']: if k not in post_params: @@ -406,6 +460,54 @@ class ogAdmClientWorker (ogLiveWorker): } return self.respuestaEjecucionComando (cmd, herror, ids) + def do_RestaurarImagenGit (self, post_params): + for k in ['dsk', 'par', 'idi', 'ipr', 'nci', 'ifs', 'ptc', 'nfn', 'ids', 'ref']: + if k not in post_params: + logger.error (f'required parameter ({k}) not in POST params') + return {} + + dsk = post_params['dsk'] + par = post_params['par'] + idi = post_params['idi'] + ipr = post_params['ipr'] + nci = post_params['nci'] + ifs = post_params['ifs'] + ptc = post_params['ptc'] ## Protocolo de clonación: Unicast, Multicast, Torrent + nfn = post_params['nfn'] + ids = post_params['ids'] + ref = post_params['ref'] ## Referencia de git a restaurar + + self.muestraMensaje (3) + + try: + ## the ptc.split() is useless right now, since interfaceAdmin() does ' '.join(params) in order to spawn a shell + ## however we're going to need it in the future (when everything gets translated into python), plus it's harmless now. So let's do it + #self.interfaceAdmin (nfn, [dsk, par, nci, ipr, ptc]) + self.interfaceAdmin (nfn, [dsk, par, nci, ipr, ref] + ptc.split()) + self.muestraMensaje (11) + herror = 0 + except: + logger.warning ('Error al ejecutar el comando') + self.muestraMensaje (12) + herror = 1 + + cfg = self.LeeConfiguracion() + if not cfg: + logger.warning ('No se ha podido recuperar la configuración de las particiones del disco') + + self.muestraMenu() + + cmd = { + 'nfn': 'RESPUESTA_RestaurarImagenGit', + 'idi': idi, ## Identificador de la imagen + 'dsk': dsk, ## Número de disco + 'par': par, ## Número de partición + 'ifs': ifs, ## Identificador del perfil software + 'cfg': self.cfg2obj(cfg), ## Configuración de discos + } + return self.respuestaEjecucionComando (cmd, herror, ids) + + def do_Configurar (self, post_params): for k in ['nfn', 'dsk', 'cfg', 'ids']: if k not in post_params: @@ -816,6 +918,16 @@ class ogAdmClientWorker (ogLiveWorker): logger.debug ('type(post_params) "{}"'.format (type (post_params))) return self._long_running_job ('CrearImagen', self.do_CrearImagen, args=(post_params,)) + def process_CrearImagenGit (self, path, get_params, post_params, server): + logger.debug ('in process_CrearImagenGit, path "{}" get_params "{}" post_params "{}" server "{}"'.format (path, get_params, post_params, server)) + logger.debug ('type(post_params) "{}"'.format (type (post_params))) + return self._long_running_job ('CrearImagenGit', self.do_CrearImagenGit, args=(post_params,)) + + def process_RestaurarImagenGit (self, path, get_params, post_params, server): + logger.debug ('in process_RestaurarImagenGit, path "{}" get_params "{}" post_params "{}" server "{}"'.format (path, get_params, post_params, server)) + logger.debug ('type(post_params) "{}"'.format (type (post_params))) + return self._long_running_job ('RestaurarImagenGit', self.do_RestaurarImagenGit, args=(post_params,)) + #def process_CrearImagenBasica (self, path, get_params, post_params, server): # logger.debug ('in process_CrearImagenBasica, path "{}" get_params "{}" post_params "{}" server "{}"'.format (path, get_params, post_params, server)) # logger.warning ('this method has been removed') diff --git a/src/opengnsys/workers/oglive_worker.py b/src/opengnsys/workers/oglive_worker.py index 2ee36aa..548ef20 100644 --- a/src/opengnsys/workers/oglive_worker.py +++ b/src/opengnsys/workers/oglive_worker.py @@ -257,7 +257,7 @@ class ogLiveWorker(ServerWorker): self.REST.sendMessage ('clients/status/webhook', body) def interfaceAdmin (self, method, parametros=[]): - if method in ['Apagar', 'CambiarAcceso', 'Configurar', 'CrearImagen', 'EjecutarScript', 'getConfiguration', 'getIpAddress', 'IniciarSesion', 'InventarioHardware', 'InventarioSoftware', 'Reiniciar', 'RestaurarImagen']: + if method in ['Apagar', 'CambiarAcceso', 'Configurar', 'CrearImagen', 'CrearImagenGit', 'EjecutarScript', 'getConfiguration', 'getIpAddress', 'IniciarSesion', 'InventarioHardware', 'InventarioSoftware', 'Reiniciar', 'RestaurarImagen', 'RestaurarImagenGit']: ## python logger.debug (f'({method}) is a python method') exe = '{}/{}.py'.format (self.pathinterface, method)