Merge pull request 'ogadmclient-status' (#11) from ogadmclient-status into main
Reviewed-on: #11new-browser
commit
ca12de8351
|
@ -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
|
||||
|
|
|
@ -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=[],
|
||||
|
|
|
@ -1 +1 @@
|
|||
1.4.1
|
||||
1.4.2
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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):
|
||||
"""
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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):
|
||||
|
|
Loading…
Reference in New Issue