From 045e8d8680addf684b1477c85cee58cce4e263b4 Mon Sep 17 00:00:00 2001
From: David Trattnig <david.trattnig@o94.at>
Date: Thu, 7 May 2020 10:11:58 +0200
Subject: [PATCH] Extend monitoring.

---
 modules/core/monitor.py | 34 ++++++++++++++++++++++++----------
 1 file changed, 24 insertions(+), 10 deletions(-)

diff --git a/modules/core/monitor.py b/modules/core/monitor.py
index 0395a519..0d9d6fe2 100644
--- a/modules/core/monitor.py
+++ b/modules/core/monitor.py
@@ -21,11 +21,19 @@ import urllib
 import logging
 import json
 import os.path
+
 from os import path
+from enum import Enum
 
 from modules.communication.redis.adapter import ClientRedisAdapter
 
 
+class MonitorResponseCode(Enum):
+    OK = "OK"
+    INVALID_STATE = "INVALID-STATE"
+
+
+
 class Monitoring:
     """
     Engine Monitoring
@@ -47,7 +55,7 @@ class Monitoring:
         self.status["api"] = dict()
         self.status["api"]["steering"] = dict()
         self.status["api"]["tank"] = dict()
-
+        self.status["api"]["engine"] = dict()
 
 
     def update_status(self):
@@ -63,18 +71,24 @@ class Monitoring:
         #self.status["soundsystem"]["recorder"] = self.soundsystem.get_recorder_status()
         self.soundsystem.disable_transaction(self.soundsystem.client)
     
+        self.status["api"]["steering"]["url"]       = self.config.get("api_steering_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"))
+        self.status["api"]["tank"]["url"]           = self.config.get("api_tank_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["api"]["engine"]["url"]          = self.config.get("exposed_api_url")
+        self.status["api"]["engine"]["available"]   = self.validate_url_connection(self.config.get("exposed_api_url"))
+
+        self.status["redis_ready"]                  = self.validate_redis_connection()
+        self.status["audio_store"]                  = self.validate_directory(self.config.get("audiofolder"))
 
         # Set overall status
         if self.has_valid_status():
-            self.status["engine_status"] = "OK"
+            self.status["engine_status"] = MonitorResponseCode.OK.value
         else:
-            self.status["engine_status"] = "INVALID"
+            self.status["engine_status"] = MonitorResponseCode.INVALID_STATE.value
 
 
 
@@ -90,7 +104,7 @@ class Monitoring:
             return ios
         except Exception as e:
             self.logger.warn("Got invalid JSON from soundsystem - " + str(e))
-            return "[ERROR]"
+            return MonitorResponseCode.INVALID_STATE.value
 
 
 
@@ -179,8 +193,8 @@ class Monitoring:
             request = urllib.request.Request(url)
             response = urllib.request.urlopen(request)
             data = response.read()
-
+            return json.loads(data, strict=False)
         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
+        return MonitorResponseCode.INVALID_STATE.value
\ No newline at end of file
-- 
GitLab