From 76f95cd01cd84e7c832fe11798e19533effb0bd5 Mon Sep 17 00:00:00 2001 From: lza_menace Date: Mon, 12 Sep 2022 10:58:43 -0700 Subject: [PATCH] remove nodes if all the health checks are failed --- xmrnodes/app.py | 5 +++++ xmrnodes/models.py | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/xmrnodes/app.py b/xmrnodes/app.py index 70a34ae..ea8e292 100644 --- a/xmrnodes/app.py +++ b/xmrnodes/app.py @@ -201,6 +201,11 @@ def check(): node.datetime_checked = now node.save() hc.save() + if node.get_failed_checks().count() == node.get_all_checks().count() and node.get_all_checks().count() > 0: + print('this node fails all of its health checks - deleting it!') + for _hc in node.get_all_checks(): + _hc.delete_instance() + node.delete_instance() @app.cli.command("get_peers") def get_peers(): diff --git a/xmrnodes/models.py b/xmrnodes/models.py index 8cb5ca7..32fb6bd 100644 --- a/xmrnodes/models.py +++ b/xmrnodes/models.py @@ -23,6 +23,14 @@ class Node(Model): datetime_failed = DateTimeField(default=None, null=True) fail_reason = CharField(null=True) + def get_failed_checks(self): + hcs = HealthCheck.select().where(HealthCheck.node == self, HealthCheck.health == False) + return hcs + + def get_all_checks(self): + hcs = HealthCheck.select().where(HealthCheck.node == self) + return hcs + class Meta: database = db