ogadmclient-status #11
|
@ -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
|
ogagent (1.4.1-1) stable; urgency=medium
|
||||||
|
|
||||||
* Bugfix: move data structure to the right class
|
* Bugfix: move data structure to the right class
|
||||||
|
|
|
@ -13,7 +13,7 @@ ogausr_a = Analysis(
|
||||||
# ('cfg', 'cfg'), ## add the entire directory
|
# ('cfg', 'cfg'), ## add the entire directory
|
||||||
('img', 'img'), ## 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=[],
|
hookspath=[],
|
||||||
hooksconfig={},
|
hooksconfig={},
|
||||||
runtime_hooks=[],
|
runtime_hooks=[],
|
||||||
|
@ -26,7 +26,7 @@ ogasvc_a = Analysis(
|
||||||
pathex=[],
|
pathex=[],
|
||||||
binaries=[],
|
binaries=[],
|
||||||
datas=[],
|
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=[],
|
hookspath=[],
|
||||||
hooksconfig={},
|
hooksconfig={},
|
||||||
runtime_hooks=[],
|
runtime_hooks=[],
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
1.4.1
|
1.4.2
|
||||||
|
|
|
@ -167,11 +167,11 @@ class CloningEngineWorker (ogLiveWorker):
|
||||||
|
|
||||||
cmd = {
|
cmd = {
|
||||||
'nfn': 'RESPUESTA_RestaurarImagen',
|
'nfn': 'RESPUESTA_RestaurarImagen',
|
||||||
'idi': idi, ## Identificador de la imagen
|
'idi': idi, ## Identificador de la imagen
|
||||||
'dsk': dsk, ## Número de disco
|
'dsk': dsk, ## Número de disco
|
||||||
'par': par, ## Número de partición
|
'par': par, ## Número de partición
|
||||||
'ifs': ifs, ## Identificador del perfil software
|
'ifs': ifs, ## Identificador del perfil software
|
||||||
'cfg': cfg, ## Configuración de discos
|
'cfg': self.cfg2obj(cfg), ## Configuración de discos
|
||||||
}
|
}
|
||||||
return self.respuestaEjecucionComando (cmd, herror, ids)
|
return self.respuestaEjecucionComando (cmd, herror, ids)
|
||||||
|
|
||||||
|
@ -213,7 +213,7 @@ class CloningEngineWorker (ogLiveWorker):
|
||||||
|
|
||||||
cmd = {
|
cmd = {
|
||||||
'nfn': 'RESPUESTA_Configurar',
|
'nfn': 'RESPUESTA_Configurar',
|
||||||
'cfg': cfg,
|
'cfg': self.cfg2obj (cfg),
|
||||||
}
|
}
|
||||||
self.muestraMenu()
|
self.muestraMenu()
|
||||||
return self.respuestaEjecucionComando (cmd, herror, ids)
|
return self.respuestaEjecucionComando (cmd, herror, ids)
|
||||||
|
|
|
@ -189,7 +189,7 @@ class OpenGnSysWorker(ServerWorker):
|
||||||
if os.path.isfile(new_hosts_file):
|
if os.path.isfile(new_hosts_file):
|
||||||
shutil.copyfile(new_hosts_file, hosts_file)
|
shutil.copyfile(new_hosts_file, hosts_file)
|
||||||
|
|
||||||
logger.info ('onActivation ok')
|
logger.debug ('onActivation ok')
|
||||||
|
|
||||||
def onDeactivation(self):
|
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.warning ('Ha ocurrido algún problema en el proceso de inclusión del cliente')
|
||||||
logger.error ('LeeConfiguracion() failed')
|
logger.error ('LeeConfiguracion() failed')
|
||||||
return False
|
return False
|
||||||
res = self.enviaMensajeServidor ('InclusionCliente', { 'cfg': cfg })
|
res = self.enviaMensajeServidor ('InclusionCliente', { 'cfg': self.cfg2obj (cfg) })
|
||||||
logger.debug ('res ({})'.format (res))
|
logger.debug ('res ({})'.format (res))
|
||||||
|
|
||||||
## RESPUESTA_InclusionCliente
|
## RESPUESTA_InclusionCliente
|
||||||
|
@ -306,15 +306,26 @@ class ogAdmClientWorker (ogLiveWorker):
|
||||||
|
|
||||||
logger.info ('onActivation ok')
|
logger.info ('onActivation ok')
|
||||||
|
|
||||||
@check_secret
|
def do_status (self, post_params):
|
||||||
def process_status (self, path, get_params, post_params, server):
|
cfg = self.LeeConfiguracion()
|
||||||
thr_status = {}
|
thr_status = {}
|
||||||
for k in self.thread_list:
|
for k in self.thread_list:
|
||||||
thr_status[k] = {
|
thr_status[k] = {
|
||||||
'running': self.thread_list[k]['running'],
|
'running': self.thread_list[k]['running'],
|
||||||
'result': self.thread_list[k]['result'],
|
'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
|
@check_secret
|
||||||
def process_popup (self, path, get_params, post_params, server):
|
def process_popup (self, path, get_params, post_params, server):
|
||||||
|
@ -335,7 +346,7 @@ class ogAdmClientWorker (ogLiveWorker):
|
||||||
|
|
||||||
cmd = {
|
cmd = {
|
||||||
'nfn': 'RESPUESTA_Actualizar',
|
'nfn': 'RESPUESTA_Actualizar',
|
||||||
'cfg': cfg,
|
'cfg': self.cfg2obj (cfg),
|
||||||
}
|
}
|
||||||
self.muestraMenu()
|
self.muestraMenu()
|
||||||
return self.respuestaEjecucionComando (cmd, 0)
|
return self.respuestaEjecucionComando (cmd, 0)
|
||||||
|
@ -491,7 +502,7 @@ class ogAdmClientWorker (ogLiveWorker):
|
||||||
|
|
||||||
cmd = {
|
cmd = {
|
||||||
'nfn': 'RESPUESTA_EjecutarScript',
|
'nfn': 'RESPUESTA_EjecutarScript',
|
||||||
'cfg': cfg,
|
'cfg': self.cfg2obj (cfg),
|
||||||
}
|
}
|
||||||
self.muestraMenu()
|
self.muestraMenu()
|
||||||
return self.respuestaEjecucionComando (cmd, herror, ids)
|
return self.respuestaEjecucionComando (cmd, herror, ids)
|
||||||
|
|
|
@ -158,7 +158,7 @@ class CommonService(object):
|
||||||
validMods.append(mod)
|
validMods.append(mod)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.exception()
|
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
|
self.modules[:] = validMods # copy instead of assignment
|
||||||
|
|
||||||
|
|
|
@ -200,6 +200,15 @@ class ogLiveWorker(ServerWorker):
|
||||||
logger.info ('local IP is "{}"'.format (self.IPlocal))
|
logger.info ('local IP is "{}"'.format (self.IPlocal))
|
||||||
return True
|
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={}):
|
def enviaMensajeServidor (self, path, obj={}):
|
||||||
obj['iph'] = self.IPlocal ## Ip del ordenador
|
obj['iph'] = self.IPlocal ## Ip del ordenador
|
||||||
obj['ido'] = self.idordenador ## Identificador del ordenador
|
obj['ido'] = self.idordenador ## Identificador del ordenador
|
||||||
|
@ -264,6 +273,21 @@ class ogLiveWorker(ServerWorker):
|
||||||
logger.debug ('parametroscfg ({})'.format (parametroscfg))
|
logger.debug ('parametroscfg ({})'.format (parametroscfg))
|
||||||
return 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):
|
def onActivation (self):
|
||||||
if not os.path.exists ('/scripts/oginit'):
|
if not os.path.exists ('/scripts/oginit'):
|
||||||
## no estamos en oglive, este modulo no debe cargarse
|
## no estamos en oglive, este modulo no debe cargarse
|
||||||
|
@ -272,6 +296,7 @@ class ogLiveWorker(ServerWorker):
|
||||||
|
|
||||||
self.pathinterface = None
|
self.pathinterface = None
|
||||||
self.IPlocal = None ## Ip del ordenador
|
self.IPlocal = None ## Ip del ordenador
|
||||||
|
self.mac = None ## MAC del ordenador
|
||||||
self.idordenador = None ## Identificador del ordenador
|
self.idordenador = None ## Identificador del ordenador
|
||||||
self.nombreordenador = None ## Nombre del ordenador
|
self.nombreordenador = None ## Nombre del ordenador
|
||||||
self.cache = None
|
self.cache = None
|
||||||
|
@ -294,6 +319,9 @@ class ogLiveWorker(ServerWorker):
|
||||||
if not self.tomaIPlocal():
|
if not self.tomaIPlocal():
|
||||||
raise Exception ('Se han generado errores. No se puede continuar la ejecución de este módulo')
|
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()
|
threading.Thread (name='monitoring_thread', target=self.mon, daemon=True).start()
|
||||||
|
|
||||||
def _long_running_job (self, name, f, args):
|
def _long_running_job (self, name, f, args):
|
||||||
|
|
Loading…
Reference in New Issue