From 9ac107dde4e28d4b93f501cc3379faed78b3439d Mon Sep 17 00:00:00 2001 From: Natalia Serrano Date: Fri, 15 Nov 2024 12:23:42 +0100 Subject: [PATCH] refs #1112 use envvars for configuration --- linux/debian/changelog | 7 +++++++ src/VERSION | 2 +- src/cfg/ogagent.cfg | 12 ++++++------ src/opengnsys/modules/server/OpenGnSys/__init__.py | 13 ++++++++++++- src/opengnsys/workers/oglive_worker.py | 13 ++++++++++++- 5 files changed, 38 insertions(+), 9 deletions(-) diff --git a/linux/debian/changelog b/linux/debian/changelog index 09edfe7..7a44674 100644 --- a/linux/debian/changelog +++ b/linux/debian/changelog @@ -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 Fri, 15 Nov 2024 11:43:01 +0100 + ogagent (1.4.5~pre3-1) stable; urgency=medium * Kill long running jobs in oglive diff --git a/src/VERSION b/src/VERSION index bf08677..e2a171d 100644 --- a/src/VERSION +++ b/src/VERSION @@ -1 +1 @@ -1.4.5-pre3 +1.4.5-pre4 diff --git a/src/cfg/ogagent.cfg b/src/cfg/ogagent.cfg index f9b012b..2d53f6c 100644 --- a/src/cfg/ogagent.cfg +++ b/src/cfg/ogagent.cfg @@ -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 diff --git a/src/opengnsys/modules/server/OpenGnSys/__init__.py b/src/opengnsys/modules/server/OpenGnSys/__init__.py index 259544a..6b63be0 100644 --- a/src/opengnsys/modules/server/OpenGnSys/__init__.py +++ b/src/opengnsys/modules/server/OpenGnSys/__init__.py @@ -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, diff --git a/src/opengnsys/workers/oglive_worker.py b/src/opengnsys/workers/oglive_worker.py index 0634a22..1800a24 100644 --- a/src/opengnsys/workers/oglive_worker.py +++ b/src/opengnsys/workers/oglive_worker.py @@ -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