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)