refs #1112 use envvars for configuration

ogcore1
Natalia Serrano 2024-11-15 12:23:42 +01:00
parent 029d3a778d
commit 9ac107dde4
5 changed files with 38 additions and 9 deletions

View File

@ -1,3 +1,10 @@
ogagent (1.4.5~pre4-1) stable; urgency=medium
* Don't die when ogcore returns HTTP 4xx or 5xx
* Get ogcore IP and port from the environment
-- OpenGnsys developers <info@opengnsys.es> Fri, 15 Nov 2024 11:43:01 +0100
ogagent (1.4.5~pre3-1) stable; urgency=medium
* Kill long running jobs in oglive

View File

@ -1 +1 @@
1.4.5-pre3
1.4.5-pre4

View File

@ -7,9 +7,9 @@ port=8000
#path=test_modules/server,more_modules/server
# Remote OpenGnsys Service
remote=https://192.168.2.1/opengnsys/rest
remote={}://{}/opengnsys/rest
# Alternate OpenGnsys Service (comment out to enable this option)
#altremote=https://10.0.2.2/opengnsys/rest
#altremote={}://{}/opengnsys/rest
# Execution level (permitted operations): status, halt, full
level=full
@ -23,15 +23,15 @@ log=DEBUG
[ogAdmClient]
#path=test_modules/server,more_modules/server
remote=https://192.168.2.1/opengnsys/rest
remote={}://{}/opengnsys/rest
log=DEBUG
pathinterface=/opt/opengnsys/interfaceAdm
urlMenu=https://192.168.2.1/opengnsys/varios/menubrowser.php
urlMenu={}://{}/opengnsys/varios/menubrowser.php
urlMsg=http://localhost/cgi-bin/httpd-log.sh
[CloningEngine]
remote=https://192.168.2.1/opengnsys/rest
remote={}://{}/opengnsys/rest
log=DEBUG
pathinterface=/opt/opengnsys/interfaceAdm
urlMenu=https://192.168.2.1/opengnsys/varios/menubrowser.php
urlMenu={}://{}/opengnsys/varios/menubrowser.php
urlMsg=http://localhost/cgi-bin/httpd-log.sh

View File

@ -115,9 +115,18 @@ class OpenGnSysWorker(ServerWorker):
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
ogcore_scheme = os.environ['OGAGENTCFG_OGCORE_SCHEME'] or 'https'
ogcore_ip = os.environ['OGAGENTCFG_OGCORE_IP'] or '192.168.2.1'
ogcore_port = os.environ['OGAGENTCFG_OGCORE_PORT'] or '8443'
ogcore_altip = os.environ['OGAGENTCFG_OGCORE_ALTIP'] or '192.168.2.254'
ogcore_altport = os.environ['OGAGENTCFG_OGCORE_ALTPORT'] or '8443'
ogcore_ip_port = ':'.join (map (str, filter (None, [ogcore_ip, ogcore_port ])))
ogcore_altip_port = ':'.join (map (str, filter (None, [ogcore_altip, ogcore_altport ])))
try:
url = self.service.config.get(self.name, 'remote')
url = url.format (ogcore_scheme, ogcore_ip_port)
except NoOptionError as e:
logger.error("Configuration error: {}".format(e))
raise e
@ -161,7 +170,9 @@ class OpenGnSysWorker(ServerWorker):
logger.warn (str (e))
# Trying to initialize on alternative server, if defined
# (used in "exam mode" from the University of Seville)
self.REST = REST(self.service.config.get(self.name, 'altremote'))
alturl = self.service.config.get(self.name, 'altremote')
alturl = alturl.format (ogcore_scheme, ogcore_altip_port)
self.REST = REST(alturl)
self.REST.sendMessage('ogagent/started', {'mac': self.interface.mac, 'ip': self.interface.ip,
'secret': self.random, 'ostype': operations.os_type,
'osversion': operations.os_version, 'alt_url': True,

View File

@ -142,7 +142,7 @@ class ogLiveWorker(ServerWorker):
def notifier (self, job_id, result):
logger.debug (f'notifier() called, job_id ({job_id}) result ({result})')
result['job_id'] = job_id
res = self.REST.sendMessage ('clients/status/webhook', result)
self.REST.sendMessage ('clients/status/webhook', result)
def killer (self, job_id):
logger.debug (f'killer() called, job_id ({job_id})')
@ -366,12 +366,23 @@ class ogLiveWorker(ServerWorker):
self.idaula = None ## Identificador del aula
self.q = None ## for passing PIDs around
ogcore_scheme = os.environ['OGAGENTCFG_OGCORE_SCHEME'] or 'https'
ogcore_ip = os.environ['OGAGENTCFG_OGCORE_IP'] or '192.168.2.1'
ogcore_port = os.environ['OGAGENTCFG_OGCORE_PORT'] or '8443'
urlmenu_scheme = os.environ['OGAGENTCFG_URLMENU_SCHEME'] or 'https'
urlmenu_ip = os.environ['OGAGENTCFG_URLMENU_IP'] or '192.168.2.1'
urlmenu_port = os.environ['OGAGENTCFG_URLMENU_PORT'] or '8443'
ogcore_ip_port = ':'.join (map (str, filter (None, [ogcore_ip, ogcore_port ])))
urlmenu_ip_port = ':'.join (map (str, filter (None, [urlmenu_ip, urlmenu_port])))
try:
url = self.service.config.get (self.name, 'remote')
loglevel = self.service.config.get (self.name, 'log')
self.pathinterface = self.service.config.get (self.name, 'pathinterface')
self.urlMenu = self.service.config.get (self.name, 'urlMenu')
self.urlMsg = self.service.config.get (self.name, 'urlMsg')
url = url.format (ogcore_scheme, ogcore_ip_port)
self.urlMenu = self.urlMenu.format (urlmenu_scheme, urlmenu_ip_port)
except NoOptionError as e:
logger.error ("Configuration error: {}".format (e))
raise e