From f3cdff4d3890a9fa68f579ee5ace2a07963c5ce9 Mon Sep 17 00:00:00 2001 From: ChaoticByte Date: Mon, 24 Feb 2025 23:06:32 +0100 Subject: [PATCH] Set the Unknown state after something went wrong instead of setting it in advance, this fixes a bug where the UI shows the Unknown state for all systems until it refreshs again --- dashboard/system.py | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/dashboard/system.py b/dashboard/system.py index 91169e0..360b1ee 100644 --- a/dashboard/system.py +++ b/dashboard/system.py @@ -66,18 +66,21 @@ class PingableSystem(System): return s.returncode == 0, s.stdout.decode(), s.stderr.decode() def update_state(self): - self.state = SystemState.UNKNOWN - ok, stdout, stderr = self.ping() - if ok: - self.state = SystemState.OK - p_matches = ping_time_regex.findall(stdout) - if len(p_matches) > 0: - self.state_verbose = f"Ping: {p_matches[0]}" + try: + ok, stdout, stderr = self.ping() + if ok: + self.state = SystemState.OK + p_matches = ping_time_regex.findall(stdout) + if len(p_matches) > 0: + self.state_verbose = f"Ping: {p_matches[0]}" + else: + self.state_verbose = stdout.strip("\n\r ") else: - self.state_verbose = stdout.strip("\n\r ") - else: - self.state = SystemState.FAILED - self.state_verbose = (stdout + "\n" + stderr).strip("\n\r ") + self.state = SystemState.FAILED + self.state_verbose = (stdout + "\n" + stderr).strip("\n\r ") + except Exception as e: + self.state = SystemState.UNKNOWN + self.state_verbose = f"Exception: {str(e)}" class HTTPServer(System): @@ -89,7 +92,6 @@ class HTTPServer(System): self.allow_self_signed_cert = allow_self_signed_cert def update_state(self): - self.state = SystemState.UNKNOWN try: r = requests.head(self.url, timeout=1.0, verify=not self.allow_self_signed_cert) if r.status_code == self.expected_status: @@ -99,4 +101,7 @@ class HTTPServer(System): self.state_verbose = f"Status {r.status_code} {r.url}" except requests.ConnectionError as e: self.state = SystemState.FAILED + self.state_verbose = f"Connection failed: {str(e)}" + except Exception as e: + self.state = SystemState.UNKNOWN self.state_verbose = f"Exception: {str(e)}"