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