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