diff --git a/dcc/driver/apps.py b/dcc/driver/apps.py index 4a5df03..27eca5a 100644 --- a/dcc/driver/apps.py +++ b/dcc/driver/apps.py @@ -1,6 +1,11 @@ from django.apps import AppConfig +from health_check.plugins import plugin_dir class DriverConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'driver' + + def ready(self): + from driver.health import DriverHealthCheck + plugin_dir.register(DriverHealthCheck) diff --git a/dcc/driver/health.py b/dcc/driver/health.py new file mode 100644 index 0000000..75e09f9 --- /dev/null +++ b/dcc/driver/health.py @@ -0,0 +1,20 @@ +from health_check.backends import BaseHealthCheckBackend +from health_check.exceptions import (ServiceUnavailable, + ServiceReturnedUnexpectedResult) + +from driver.connector import Connector + + +class DriverHealthCheck(BaseHealthCheckBackend): + critical_service = False + + def check_status(self): + try: + Connector().passthrough(b'') + except ConnectionRefusedError as e: + self.add_error(ServiceUnavailable("IOError"), e) + except Exception as e: + self.add_error(ServiceReturnedUnexpectedResult("IOError"), e) + + def identifier(self): + return "DriverDaemon"