From edeb8902363c69840c39b35daf4726c5f0a81bf5 Mon Sep 17 00:00:00 2001 From: David Trattnig <david.trattnig@o94.at> Date: Wed, 6 May 2020 16:28:08 +0200 Subject: [PATCH] Added tank healthz info. --- modules/core/monitor.py | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/modules/core/monitor.py b/modules/core/monitor.py index 2f2d46c4..da590fd5 100644 --- a/modules/core/monitor.py +++ b/modules/core/monitor.py @@ -45,6 +45,9 @@ class Monitoring: self.status = dict() self.status["soundsystem"] = dict() self.status["api"] = dict() + self.status["api"]["steering"] = dict() + self.status["api"]["tank"] = dict() + def update_status(self): @@ -60,8 +63,9 @@ class Monitoring: #self.status["soundsystem"]["recorder"] = self.soundsystem.get_recorder_status() self.soundsystem.disable_transaction(self.soundsystem.client) - self.status["api"]["steering_ready"] = self.validate_url_connection(self.config.get("api_steering_status")) - self.status["api"]["tank_ready"] = self.validate_url_connection(self.config.get("api_tank_status")) + self.status["api"]["steering"]["available"] = self.validate_url_connection(self.config.get("api_steering_status")) + self.status["api"]["tank"]["available"] = self.validate_url_connection(self.config.get("api_tank_status")) + self.status["api"]["tank"]["status"] = self.get_url_response(self.config.get("api_tank_status")) self.status["redis_ready"] = self.validate_redis_connection() self.status["audio_store"] = self.validate_directory(self.config.get("audiofolder")) @@ -73,6 +77,7 @@ class Monitoring: self.status["engine_status"] = "INVALID" + def get_io_state(self): """ Retrieves all input and outputs provided by the engine. @@ -155,4 +160,27 @@ class Monitoring: if status["exists"]: status["has_content"] = any([True for _ in os.scandir(dir_path)]) - return status \ No newline at end of file + return status + + + def get_url_response(self, url): + """ + Fetches JSON data from the given URL. + + Args: + url (String): The API endpoint to call + + Returns: + (dict[]): A Python object representing the JSON structure + """ + data = None + + try: + request = urllib.request.Request(url) + response = urllib.request.urlopen(request) + data = response.read() + + except (urllib.error.URLError, IOError, ValueError) as e: + self.logger.error("Error while connecting to URL '%s' - %s" % (url, e)) + + return json.loads(data, strict=False) \ No newline at end of file -- GitLab