refs #526 move onActivation() below
parent
e92d8855a1
commit
1d0057fd38
|
@ -89,91 +89,6 @@ class ogAdmClientWorker(ServerWorker):
|
|||
idcentro = None
|
||||
idaula = None
|
||||
|
||||
def onActivation(self):
|
||||
"""
|
||||
Sends OGAgent activation notification to OpenGnsys server
|
||||
"""
|
||||
t = 0 # Count of time
|
||||
# Generate random secret to send on activation
|
||||
self.random = ''.join(random.choice(string.ascii_lowercase + string.digits) for _ in range(self.length))
|
||||
# Ensure cfg has required configuration variables or an exception will be thrown
|
||||
try:
|
||||
url = self.service.config.get('ogAdmClient', 'remote')
|
||||
loglevel = self.service.config.get('ogAdmClient', 'log')
|
||||
#servidorAdm = self.service.config.get('ogAdmClient', 'servidorAdm')
|
||||
#puerto = self.service.config.get('ogAdmClient', 'puerto')
|
||||
self.pathinterface = self.service.config.get('ogAdmClient', 'pathinterface')
|
||||
urlMenu = self.service.config.get('ogAdmClient', 'urlMenu')
|
||||
#urlMsg = self.service.config.get('ogAdmClient', 'urlMsg')
|
||||
logger.setLevel(loglevel)
|
||||
except NoOptionError as e:
|
||||
logger.error("Configuration error: {}".format(e))
|
||||
raise e
|
||||
self.REST = REST(url)
|
||||
|
||||
# Get network interfaces until they are active or timeout (5 minutes)
|
||||
for t in range(0, 300):
|
||||
try:
|
||||
# Get the first network interface
|
||||
self.interface = list(operations.getNetworkInfo())[0]
|
||||
except Exception as e:
|
||||
# Wait 1 sec. and retry
|
||||
logger.warn (e)
|
||||
time.sleep(1)
|
||||
finally:
|
||||
# Exit loop if interface is active
|
||||
if self.interface:
|
||||
if t > 0:
|
||||
logger.debug("Fetch connection data after {} tries".format(t))
|
||||
break
|
||||
# Raise error after timeout
|
||||
if not self.interface:
|
||||
raise Exception ('not self.interface')
|
||||
|
||||
# Loop to send initialization message
|
||||
init_retries = 100
|
||||
for t in range(0, init_retries):
|
||||
try:
|
||||
self.REST.sendMessage('started', {'mac': self.interface.mac, 'ip': self.interface.ip,
|
||||
'secret': self.random, 'ostype': operations.os_type,
|
||||
'osversion': operations.os_version,
|
||||
'agent_version': VERSION})
|
||||
break
|
||||
except Exception as e:
|
||||
logger.warn (str (e))
|
||||
time.sleep(3)
|
||||
# Raise error after timeout
|
||||
if t < init_retries-1:
|
||||
logger.debug('Successful connection after {} tries'.format(t))
|
||||
elif t == init_retries-1:
|
||||
raise Exception('Initialization error: Cannot connect to remote server')
|
||||
|
||||
if (not self.tomaIPlocal()):
|
||||
raise Exception ('Se han generado errores. No se puede continuar la ejecución de este módulo')
|
||||
|
||||
logger.info ('Inicio de sesion')
|
||||
logger.info ('Abriendo sesión en el servidor de Administración')
|
||||
if (not self.inclusionCliente()):
|
||||
raise Exception ('Se han generado errores. No se puede continuar la ejecución de este módulo')
|
||||
|
||||
logger.info ('Cliente iniciado')
|
||||
logger.info ('Procesando caché')
|
||||
if (not self.cuestionCache()):
|
||||
raise Exception ('Se han generado errores. No se puede continuar la ejecución de este módulo')
|
||||
|
||||
if (self.idproautoexec > 0):
|
||||
logger.info ('Ejecución de archivo Autoexec')
|
||||
if (not self.autoexecCliente()):
|
||||
raise Exception ('Se han generado errores. No se puede continuar la ejecución de este módulo')
|
||||
|
||||
logger.info ('Procesa comandos pendientes')
|
||||
if (not self.comandosPendientes()):
|
||||
raise Exception ('Se han generado errores. No se puede continuar la ejecución de este módulo')
|
||||
|
||||
logger.info ('Acciones pendientes procesadas')
|
||||
|
||||
self.muestraMenu()
|
||||
|
||||
def onDeactivation(self):
|
||||
"""
|
||||
Sends OGAgent stopping notification to OpenGnsys server
|
||||
|
@ -325,6 +240,16 @@ with open (subprocs_log, 'ab') as fd: ## TODO improve this logging
|
|||
for I in /opt/opengnsys/lib/engine/bin/*.lib; do source $I; done;
|
||||
for i in $(declare -F |cut -f3 -d" "); do export -f $i; done;
|
||||
'''
|
||||
|
||||
## DO NOT COMMIT
|
||||
if 'nati' == os.environ['USER'] or 'nati' == os.environ['SUDO_USER']:
|
||||
devel_bash_prefix = '''
|
||||
PATH=/home/nati/Downloads/work/opengnsys/opengnsys/client/shared/scripts:$PATH;
|
||||
for I in /home/nati/Downloads/work/opengnsys/opengnsys/client/engine/*.lib; do source $I; done;
|
||||
for i in $(declare -F |cut -f3 -d" "); do export -f $i; done;
|
||||
'''
|
||||
## DO NOT COMMIT
|
||||
|
||||
if parametros:
|
||||
proc = ['bash', '-c', '{} {} {}'.format (devel_bash_prefix, exe, ' '.join (parametros))]
|
||||
else:
|
||||
|
@ -521,6 +446,91 @@ with open (subprocs_log, 'ab') as fd: ## TODO improve this logging
|
|||
def muestraMenu(self):
|
||||
self.cargaPaginaWeb()
|
||||
|
||||
def onActivation(self):
|
||||
"""
|
||||
Sends OGAgent activation notification to OpenGnsys server
|
||||
"""
|
||||
t = 0 # Count of time
|
||||
# Generate random secret to send on activation
|
||||
self.random = ''.join(random.choice(string.ascii_lowercase + string.digits) for _ in range(self.length))
|
||||
# Ensure cfg has required configuration variables or an exception will be thrown
|
||||
try:
|
||||
url = self.service.config.get('ogAdmClient', 'remote')
|
||||
loglevel = self.service.config.get('ogAdmClient', 'log')
|
||||
#servidorAdm = self.service.config.get('ogAdmClient', 'servidorAdm')
|
||||
#puerto = self.service.config.get('ogAdmClient', 'puerto')
|
||||
self.pathinterface = self.service.config.get('ogAdmClient', 'pathinterface')
|
||||
urlMenu = self.service.config.get('ogAdmClient', 'urlMenu')
|
||||
#urlMsg = self.service.config.get('ogAdmClient', 'urlMsg')
|
||||
logger.setLevel(loglevel)
|
||||
except NoOptionError as e:
|
||||
logger.error("Configuration error: {}".format(e))
|
||||
raise e
|
||||
self.REST = REST(url)
|
||||
|
||||
# Get network interfaces until they are active or timeout (5 minutes)
|
||||
for t in range(0, 300):
|
||||
try:
|
||||
# Get the first network interface
|
||||
self.interface = list(operations.getNetworkInfo())[0]
|
||||
except Exception as e:
|
||||
# Wait 1 sec. and retry
|
||||
logger.warn (e)
|
||||
time.sleep(1)
|
||||
finally:
|
||||
# Exit loop if interface is active
|
||||
if self.interface:
|
||||
if t > 0:
|
||||
logger.debug("Fetch connection data after {} tries".format(t))
|
||||
break
|
||||
# Raise error after timeout
|
||||
if not self.interface:
|
||||
raise Exception ('not self.interface')
|
||||
|
||||
# Loop to send initialization message
|
||||
init_retries = 100
|
||||
for t in range(0, init_retries):
|
||||
try:
|
||||
self.REST.sendMessage('started', {'mac': self.interface.mac, 'ip': self.interface.ip,
|
||||
'secret': self.random, 'ostype': operations.os_type,
|
||||
'osversion': operations.os_version,
|
||||
'agent_version': VERSION})
|
||||
break
|
||||
except Exception as e:
|
||||
logger.warn (str (e))
|
||||
time.sleep(3)
|
||||
# Raise error after timeout
|
||||
if t < init_retries-1:
|
||||
logger.debug('Successful connection after {} tries'.format(t))
|
||||
elif t == init_retries-1:
|
||||
raise Exception('Initialization error: Cannot connect to remote server')
|
||||
|
||||
if (not self.tomaIPlocal()):
|
||||
raise Exception ('Se han generado errores. No se puede continuar la ejecución de este módulo')
|
||||
|
||||
logger.info ('Inicio de sesion')
|
||||
logger.info ('Abriendo sesión en el servidor de Administración')
|
||||
if (not self.inclusionCliente()):
|
||||
raise Exception ('Se han generado errores. No se puede continuar la ejecución de este módulo')
|
||||
|
||||
logger.info ('Cliente iniciado')
|
||||
logger.info ('Procesando caché')
|
||||
if (not self.cuestionCache()):
|
||||
raise Exception ('Se han generado errores. No se puede continuar la ejecución de este módulo')
|
||||
|
||||
if (self.idproautoexec > 0):
|
||||
logger.info ('Ejecución de archivo Autoexec')
|
||||
if (not self.autoexecCliente()):
|
||||
raise Exception ('Se han generado errores. No se puede continuar la ejecución de este módulo')
|
||||
|
||||
logger.info ('Procesa comandos pendientes')
|
||||
if (not self.comandosPendientes()):
|
||||
raise Exception ('Se han generado errores. No se puede continuar la ejecución de este módulo')
|
||||
|
||||
logger.info ('Acciones pendientes procesadas')
|
||||
|
||||
self.muestraMenu()
|
||||
|
||||
def process_NoComandosPtes(self, path, get_params, post_params, server):
|
||||
logger.warn('in process_NoComandosPtes')
|
||||
|
||||
|
|
Loading…
Reference in New Issue