From d6cf09e4b8e79bcb5adf330b5c500504e60488de Mon Sep 17 00:00:00 2001 From: Blake Harnden <32446120+bharnden@users.noreply.github.com> Date: Mon, 30 Sep 2019 09:33:17 -0700 Subject: [PATCH] updated service loading to catch on_load exceptions and ignore service --- daemon/core/services/coreservices.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/daemon/core/services/coreservices.py b/daemon/core/services/coreservices.py index 42718f5e..4563d4b7 100644 --- a/daemon/core/services/coreservices.py +++ b/daemon/core/services/coreservices.py @@ -249,6 +249,7 @@ class ServiceManager(object): :param CoreService service: service to add :return: nothing + :raises ValueError: when service cannot be loaded """ name = service.name logging.debug("loading service: class(%s) name(%s)", service.__name__, name) @@ -261,6 +262,13 @@ class ServiceManager(object): for executable in service.executables: which(executable, required=True) + # validate service on load succeeds + try: + service.on_load() + except Exception as e: + logging.exception("error during service(%s) on load", service.name) + raise ValueError(e) + # make service available cls.services[name] = service @@ -289,7 +297,6 @@ class ServiceManager(object): for service in services: if not service.name: continue - service.on_load() try: cls.add(service)