Merge pull request 'ogadmclient-status' (#11) from ogadmclient-status into main

Reviewed-on: #11
new-browser
Natalia Serrano 2024-10-15 17:12:55 +02:00
commit ca12de8351
8 changed files with 62 additions and 17 deletions

View File

@ -1,3 +1,9 @@
ogagent (1.4.2-1) UNRELEASED; urgency=medium
* Have ogAdmClient/status return information about network and disks
-- OpenGnsys developers <info@opengnsys.es> Tue, 15 Oct 2024 10:35:16 +0200
ogagent (1.4.1-1) stable; urgency=medium
* Bugfix: move data structure to the right class

View File

@ -13,7 +13,7 @@ ogausr_a = Analysis(
# ('cfg', 'cfg'), ## add the entire directory
('img', 'img'), ## add the entire directory
],
hiddenimports=['win32timezone', 'socketserver', 'http.server', 'urllib'],
hiddenimports=['win32timezone', 'socketserver', 'http.server', 'urllib', 'opengnsys.modules.client.OpenGnSys', 'opengnsys.modules.server.CloningEngine', 'opengnsys.modules.server.ogAdmClient', 'opengnsys.modules.server.OpenGnSys'],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
@ -26,7 +26,7 @@ ogasvc_a = Analysis(
pathex=[],
binaries=[],
datas=[],
hiddenimports=['win32timezone', 'socketserver', 'http.server', 'urllib'],
hiddenimports=['win32timezone', 'socketserver', 'http.server', 'urllib', 'opengnsys.modules.client.OpenGnSys', 'opengnsys.modules.server.CloningEngine', 'opengnsys.modules.server.ogAdmClient', 'opengnsys.modules.server.OpenGnSys'],
hookspath=[],
hooksconfig={},
runtime_hooks=[],

View File

@ -1 +1 @@
1.4.1
1.4.2

View File

@ -167,11 +167,11 @@ class CloningEngineWorker (ogLiveWorker):
cmd = {
'nfn': 'RESPUESTA_RestaurarImagen',
'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': cfg, ## Configuración de discos
'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)
@ -213,7 +213,7 @@ class CloningEngineWorker (ogLiveWorker):
cmd = {
'nfn': 'RESPUESTA_Configurar',
'cfg': cfg,
'cfg': self.cfg2obj (cfg),
}
self.muestraMenu()
return self.respuestaEjecucionComando (cmd, herror, ids)

View File

@ -189,7 +189,7 @@ class OpenGnSysWorker(ServerWorker):
if os.path.isfile(new_hosts_file):
shutil.copyfile(new_hosts_file, hosts_file)
logger.info ('onActivation ok')
logger.debug ('onActivation ok')
def onDeactivation(self):
"""

View File

@ -174,7 +174,7 @@ class ogAdmClientWorker (ogLiveWorker):
logger.warning ('Ha ocurrido algún problema en el proceso de inclusión del cliente')
logger.error ('LeeConfiguracion() failed')
return False
res = self.enviaMensajeServidor ('InclusionCliente', { 'cfg': cfg })
res = self.enviaMensajeServidor ('InclusionCliente', { 'cfg': self.cfg2obj (cfg) })
logger.debug ('res ({})'.format (res))
## RESPUESTA_InclusionCliente
@ -306,15 +306,26 @@ class ogAdmClientWorker (ogLiveWorker):
logger.info ('onActivation ok')
@check_secret
def process_status (self, path, get_params, post_params, server):
def do_status (self, post_params):
cfg = self.LeeConfiguracion()
thr_status = {}
for k in self.thread_list:
thr_status[k] = {
'running': self.thread_list[k]['running'],
'result': self.thread_list[k]['result'],
}
return thr_status
return {
'nfn': 'RESPUESTA_status',
'mac': self.mac,
'ip': self.IPlocal,
'cfg': self.cfg2obj (cfg),
'threads': thr_status,
}
@check_secret
def process_status (self, path, get_params, post_params, server):
logger.debug ('in process_status, path "{}" get_params "{}" post_params "{}" server "{}"'.format (path, get_params, post_params, server))
return self._long_running_job ('status', self.do_status, args=(post_params,))
@check_secret
def process_popup (self, path, get_params, post_params, server):
@ -335,7 +346,7 @@ class ogAdmClientWorker (ogLiveWorker):
cmd = {
'nfn': 'RESPUESTA_Actualizar',
'cfg': cfg,
'cfg': self.cfg2obj (cfg),
}
self.muestraMenu()
return self.respuestaEjecucionComando (cmd, 0)
@ -491,7 +502,7 @@ class ogAdmClientWorker (ogLiveWorker):
cmd = {
'nfn': 'RESPUESTA_EjecutarScript',
'cfg': cfg,
'cfg': self.cfg2obj (cfg),
}
self.muestraMenu()
return self.respuestaEjecucionComando (cmd, herror, ids)

View File

@ -158,7 +158,7 @@ class CommonService(object):
validMods.append(mod)
except Exception as e:
logger.exception()
logger.error("Activation of {} failed: {}".format(mod.name, exceptionToMessage(e)))
logger.debug("Activation of {} failed: {}".format(mod.name, exceptionToMessage(e)))
self.modules[:] = validMods # copy instead of assignment

View File

@ -200,6 +200,15 @@ class ogLiveWorker(ServerWorker):
logger.info ('local IP is "{}"'.format (self.IPlocal))
return True
def tomaMAClocal (self):
## tomaIPlocal() calls interfaceAdm('getIpAddress')
## getIpAddress runs 'ip addr show' and returns the IP address of every network interface except "lo"
## (ie. breaks badly if there's more than one network interface)
## let's make the same assumptions here
mac = subprocess.run (["ip -json link show |jq -r '.[] |select (.ifname != \"lo\") |.address'"], shell=True, capture_output=True, text=True)
self.mac = mac.stdout.strip()
return True
def enviaMensajeServidor (self, path, obj={}):
obj['iph'] = self.IPlocal ## Ip del ordenador
obj['ido'] = self.idordenador ## Identificador del ordenador
@ -264,6 +273,21 @@ class ogLiveWorker(ServerWorker):
logger.debug ('parametroscfg ({})'.format (parametroscfg))
return parametroscfg
def cfg2obj (self, cfg):
obj = []
ptrPar = cfg.split ('\n')
for line in ptrPar:
elem = {}
ptrCfg = line.split ('\t')
for item in ptrCfg:
k, v = item.split ('=')
elem[k] = v
obj.append (elem)
return obj
def onActivation (self):
if not os.path.exists ('/scripts/oginit'):
## no estamos en oglive, este modulo no debe cargarse
@ -272,6 +296,7 @@ class ogLiveWorker(ServerWorker):
self.pathinterface = None
self.IPlocal = None ## Ip del ordenador
self.mac = None ## MAC del ordenador
self.idordenador = None ## Identificador del ordenador
self.nombreordenador = None ## Nombre del ordenador
self.cache = None
@ -294,6 +319,9 @@ class ogLiveWorker(ServerWorker):
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')
threading.Thread (name='monitoring_thread', target=self.mon, daemon=True).start()
def _long_running_job (self, name, f, args):