Compare commits

..

11 Commits

Author SHA1 Message Date
Natalia Serrano e39bb7401e refs #887 fix syntax error 2024-10-08 10:32:42 +02:00
Natalia Serrano 9e3d8be629 refs #886 move InventarioHardware() to the CloningEngine module 2024-10-08 10:32:11 +02:00
Natalia Serrano e2f161ae97 refs #887 handle potential InventariandoSoftware() exceptions 2024-10-08 10:25:54 +02:00
Natalia Serrano a3f4eafffb refs #887 implement InventarioSoftware() 2024-10-08 10:19:04 +02:00
Natalia Serrano 08dba6d99a refs #886 implement InventarioHardware() 2024-10-08 09:31:03 +02:00
Natalia Serrano 239bfc21f7 refs #885 implement Configurar() 2024-10-07 19:51:31 +02:00
Natalia Serrano 7efb0fdcc8 refs #884 implement IniciarSesion() 2024-10-07 18:18:07 +02:00
Natalia Serrano 1ee279afd5 refs #883 implement Reiniciar() 2024-10-07 18:12:15 +02:00
Natalia Serrano 8d9a9ef5c3 refs #882 implement Apagar() 2024-10-07 18:12:02 +02:00
Natalia Serrano f21a75a23d refs #881 implement Arrancar() 2024-10-07 17:59:30 +02:00
Natalia Serrano d3829cd46f refs #879 implement Comando() 2024-10-07 17:55:34 +02:00
4 changed files with 246 additions and 16 deletions

View File

@ -170,6 +170,12 @@ def disponibilidad_comandos():
@app.route('/opengnsys/rest/ogAdmClient/recibeArchivo', methods=['POST'])
def oac_recibe_archivo():
logging.info(f'{request.get_json()}')
j = request.get_json(force=True)
nfl = j['nfl']
contents = j['contents']
logging.info(f'nfl ({nfl}) contents ({contents})')
dec = base64.b64decode (contents).decode ('utf-8')
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/<cucu>', methods=['GET', 'POST'])
@ -188,6 +194,12 @@ def oac_cucu(cucu):
@app.route('/opengnsys/rest/CloningEngine/recibeArchivo', methods=['POST'])
def ce_recibe_archivo():
logging.info(f'{request.get_json()}')
j = request.get_json(force=True)
nfl = j['nfl']
contents = j['contents']
logging.info(f'nfl ({nfl}) contents ({contents})')
dec = base64.b64decode (contents).decode ('utf-8')
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/CloningEngine/<cucu>', methods=['GET', 'POST'])

View File

@ -101,7 +101,13 @@ class CloningEngineWorker (ogLiveWorker):
self.muestraMensaje (7)
if self.InventariandoSoftware (dsk, par, False, 'InventarioSoftware'): ## Crea inventario Software previamente
try:
res = self.InventariandoSoftware (dsk, par, False, 'InventarioSoftware') ## Crea inventario Software previamente
except:
logger.warning ('Error al ejecutar el comando')
return {}
if res:
self.muestraMensaje (2)
try:
self.interfaceAdmin (nfn, [dsk, par, nci, ipr])
@ -180,6 +186,75 @@ class CloningEngineWorker (ogLiveWorker):
}
return thr_status
def do_InventarioHardware (self, post_params):
for k in ['nfn', 'ids']:
if k not in post_params:
logger.error (f'required parameter ({k}) not in POST params')
return {}
nfn = post_params['nfn']
ids = post_params['ids']
self.muestraMensaje (6)
hrdsrc = f'/tmp/Chrd-{self.IPlocal}' ## Nombre que tendra el archivo de inventario
hrddst = f'/tmp/Shrd-{self.IPlocal}' ## Nombre que tendra el archivo en el Servidor
try:
self.interfaceAdmin (nfn, [hrdsrc])
hrdsrc_contents = Path (hrdsrc).read_bytes()
logger.debug (f'hrdsrc_contents 1 ({hrdsrc_contents})')
herror = 0
except:
logger.warning ('Error al ejecutar el comando')
self.muestraMensaje (18)
herror = 1
if herror:
hrddst = ''
else:
logger.debug (f'hrdsrc_contents 2 ({hrdsrc_contents})')
## Envía fichero de inventario al servidor
res = self.enviaMensajeServidor ('recibeArchivo', { 'nfl': hrddst, 'contents': base64.b64encode (hrdsrc_contents).decode ('utf-8') })
logger.debug (res)
if not res:
logger.error ('Ha ocurrido algún problema al enviar un archivo por la red')
herror = 12 ## Error de envío de fichero por la red
self.muestraMensaje (17)
## Envia respuesta de ejecución de la función de interface
cmd = {
'nfn': 'RESPUESTA_InventarioHardware',
'hrd': hrddst,
}
self.muestraMenu()
return self.respuestaEjecucionComando (cmd, herror, ids)
def do_InventarioSoftware (self, post_params):
for k in ['nfn', 'dsk', 'par', 'ids']:
if k not in post_params:
logger.error (f'required parameter ({k}) not in POST params')
return {}
nfn = post_params['nfn']
dsk = post_params['dsk']
par = post_params['par']
ids = post_params['ids']
self.muestraMensaje (7)
try:
self.InventariandoSoftware (dsk, par, True, 'InventarioSoftware')
herror = 0
except:
logger.warning ('Error al ejecutar el comando')
herror = 1
self.muestraMenu()
cmd = {
'nfn': 'RESPUESTA_InventarioSoftware',
}
return self.respuestaEjecucionComando (cmd, herror, ids)
def process_CrearImagen (self, path, get_params, post_params, server):
logger.debug ('in process_CrearImagen, path "{}" get_params "{}" post_params "{}" server "{}"'.format (path, get_params, post_params, server))
logger.debug ('type(post_params) "{}"'.format (type (post_params)))
@ -210,3 +285,11 @@ class CloningEngineWorker (ogLiveWorker):
logger.debug ('in process_RestaurarSoftIncremental, path "{}" get_params "{}" post_params "{}" server "{}"'.format (path, get_params, post_params, server))
logger.warning ('this method has been removed')
raise Exception ({ '_httpcode': 404, '_msg': 'This method has been removed' })
def process_InventarioHardware (self, path, get_params, post_params, server):
logger.debug ('in process_InventarioHardware, path "{}" get_params "{}" post_params "{}" server "{}"'.format (path, get_params, post_params, server))
return self._long_running_job ('InventarioHardware', self.do_InventarioHardware, args=(post_params,))
def process_InventarioSoftware (self, path, get_params, post_params, server):
logger.debug ('in process_InventarioSoftware, path "{}" get_params "{}" post_params "{}" server "{}"'.format (path, get_params, post_params, server))
return self._long_running_job ('InventarioSoftware', self.do_InventarioSoftware, args=(post_params,))

View File

@ -415,7 +415,7 @@ class ogAdmClientWorker (ogLiveWorker):
return {}
cmd = {
'nfn': 'RESPUESTA_Configurar',
'nfn': 'RESPUESTA_Actualizar',
'cfg': cfg,
}
self.muestraMenu()
@ -431,6 +431,31 @@ class ogAdmClientWorker (ogLiveWorker):
return {}
#exit (0) ## ogAdmClient.c:905
def do_Comando (self, post_params):
for k in ['nfn', 'ids']:
if k not in post_params:
logger.error (f'required parameter ({k}) not in POST params')
return {}
nfn = post_params['nfn']
ids = post_params['ids']
try:
self.interfaceAdmin (nfn)
herror = 0
except:
logger.warning ('Error al ejecutar el comando')
herror = 1
cmd = {
'nfn': 'RESPUESTA_Comando',
}
return self.respuestaEjecucionComando (cmd, herror, ids)
def process_Comando (self, path, get_params, post_params, server):
logger.debug ('in process_Comando, path "{}" get_params "{}" post_params "{}" server "{}"'.format (path, get_params, post_params, server))
return self._long_running_job ('Comando', self.do_Comando, args=(post_params,))
def process_Sondeo (self, path, get_params, post_params, server):
logger.debug ('in process_Sondeo, path "{}" get_params "{}" post_params "{}" server "{}"'.format (path, get_params, post_params, server))
return {} ## ogAdmClient.c:920
@ -443,7 +468,7 @@ class ogAdmClientWorker (ogLiveWorker):
logger.error (f'required parameter ({k}) not in POST params')
return {}
nfn = unquote (post_params['nfn'])
nfn = post_params['nfn']
scp = unquote (post_params['scp'])
filescript = f'/tmp/_script_{self.IPlocal}'
ecosrc = f'/tmp/_econsola_{self.IPlocal}'
@ -468,28 +493,138 @@ class ogAdmClientWorker (ogLiveWorker):
return {}
def process_Arrancar (self, path, get_params, post_params, server):
logger.warning ('in process_Arrancar')
logger.debug ('in process_Arrancar, path "{}" get_params "{}" post_params "{}" server "{}"'.format (path, get_params, post_params, server))
for k in ['ids']:
if k not in post_params:
logger.error (f'required parameter ({k}) not in POST params')
return {}
ids = post_params['ids']
cmd = {
'nfn': 'RESPUESTA_Arrancar',
'tpc': 'OPG',
}
return self.respuestaEjecucionComando (cmd, 0, ids)
def do_Apagar (self, post_params):
for k in ['nfn', 'ids']:
if k not in post_params:
logger.error (f'required parameter ({k}) not in POST params')
return {}
nfn = post_params['nfn']
ids = post_params['ids']
try:
self.interfaceAdmin (nfn)
herror = 0
except:
logger.warning ('Error al ejecutar el comando')
herror = 1
cmd = {
'nfn': 'RESPUESTA_Apagar',
}
return self.respuestaEjecucionComando (cmd, herror, ids)
def process_Apagar (self, path, get_params, post_params, server):
logger.warning ('in process_Apagar')
logger.debug ('in process_Apagar, path "{}" get_params "{}" post_params "{}" server "{}"'.format (path, get_params, post_params, server))
return self._long_running_job ('Apagar', self.do_Apagar, args=(post_params,))
def do_Reiniciar (self, post_params):
for k in ['nfn', 'ids']:
if k not in post_params:
logger.error (f'required parameter ({k}) not in POST params')
return {}
nfn = post_params['nfn']
ids = post_params['ids']
try:
self.interfaceAdmin (nfn)
herror = 0
except:
logger.warning ('Error al ejecutar el comando')
herror = 1
cmd = {
'nfn': 'RESPUESTA_Reiniciar',
}
return self.respuestaEjecucionComando (cmd, herror, ids)
def process_Reiniciar (self, path, get_params, post_params, server):
logger.warning ('in process_Reiniciar')
logger.debug ('in process_Reiniciar, path "{}" get_params "{}" post_params "{}" server "{}"'.format (path, get_params, post_params, server))
return self._long_running_job ('Reiniciar', self.do_Reiniciar, args=(post_params,))
def do_IniciarSesion (self, post_params):
for k in ['nfn', 'dsk', 'par', 'ids']:
if k not in post_params:
logger.error (f'required parameter ({k}) not in POST params')
return {}
nfn = post_params['nfn']
dsk = post_params['dsk']
par = post_params['par']
ids = post_params['ids']
try:
self.interfaceAdmin (nfn, [dsk, par])
herror = 0
except:
logger.warning ('Error al ejecutar el comando')
herror = 1
cmd = {
'nfn': 'RESPUESTA_IniciarSesion',
}
return self.respuestaEjecucionComando (cmd, herror, ids)
def process_IniciarSesion (self, path, get_params, post_params, server):
logger.warning ('in process_IniciarSesion')
logger.debug ('in process_IniciarSesion, path "{}" get_params "{}" post_params "{}" server "{}"'.format (path, get_params, post_params, server))
return self._long_running_job ('IniciarSesion', self.do_IniciarSesion, args=(post_params,))
def do_Configurar (self, post_params):
for k in ['nfn', 'dsk', 'cfg', 'ids']:
if k not in post_params:
logger.error (f'required parameter ({k}) not in POST params')
return {}
nfn = post_params['nfn']
dsk = post_params['dsk']
cfg = post_params['cfg'].replace('\n','$').replace('\t','#')
ids = post_params['ids']
self.muestraMensaje (4)
try:
self.interfaceAdmin (nfn, [dsk, cfg])
self.muestraMensaje (14)
herror = 0
except:
logger.warning ('Error al ejecutar el comando')
self.muestraMensaje (13)
herror = 1
cfg = self.LeeConfiguracion()
if not cfg:
logger.warning ('No se ha podido recuperar la configuración de las particiones del disco')
return {}
cmd = {
'nfn': 'RESPUESTA_Configurar',
'cfg': cfg,
}
self.muestraMenu()
return self.respuestaEjecucionComando (cmd, herror, ids)
def process_Configurar (self, path, get_params, post_params, server):
logger.warning ('in process_Configurar')
logger.debug ('in process_Configurar, path "{}" get_params "{}" post_params "{}" server "{}"'.format (path, get_params, post_params, server))
return self._long_running_job ('Configurar', self.do_Configurar, args=(post_params,))
def process_EjecutarScript (self, path, get_params, post_params, server):
logger.warning ('in process_EjecutarScript')
def process_InventarioHardware (self, path, get_params, post_params, server):
logger.warning ('in process_InventarioHardware')
def process_InventarioSoftware (self, path, get_params, post_params, server):
logger.warning ('in process_InventarioSoftware')
def process_EjecutaComandosPendientes (self, path, get_params, post_params, server):
logger.warning ('in process_EjecutaComandosPendientes')

View File

@ -68,9 +68,9 @@ class ogLiveWorker(ServerWorker):
'''
if parametros:
proc = ['bash', '-c', '{} set -x; bash -x {} {}; set +x'.format (devel_bash_prefix, exe, ' '.join (parametros))]
proc = ['bash', '-c', '{} bash -x {} {}'.format (devel_bash_prefix, exe, ' '.join (parametros))]
else:
proc = ['bash', '-c', '{} set -x; bash -x {}; set +x'.format (devel_bash_prefix, exe)]
proc = ['bash', '-c', '{} bash -x {}'.format (devel_bash_prefix, exe)]
logger.debug ('subprocess.run ("{}", capture_output=True)'.format (proc))
p = subprocess.run (proc, capture_output=True)
## DEBUG