EOX GitLab Instance

Skip to content
Snippets Groups Projects
Commit f09aba2b authored by Fabian Schindler's avatar Fabian Schindler
Browse files

Adding possibility to configure error handlers

parent d4416c9d
No related branches found
No related tags found
2 merge requests!49Production release 1.1.1,!48Registrar fixes
import re
import logging
import importlib
from .source import get_source
from .scheme import get_scheme
from .backend import get_backends
from .exceptions import RegistrationError
from .utils import import_by_path
logger = logging.getLogger(__name__)
......@@ -22,22 +22,27 @@ def register_file(config: dict, path: str, replace: bool=False):
for pre_handler in get_pre_handlers(config):
pre_handler(config, path, context)
for backend in get_backends(config, path):
if backend.exists(source, context):
if replace:
logger.info(f"Replacing '{path}'.")
backend.register(source, context, replace=True)
try:
for backend in get_backends(config, path):
if backend.exists(source, context):
if replace:
logger.info(f"Replacing '{path}'.")
backend.register(source, context, replace=True)
else:
raise RegistrationError(f'Object {context} is already registered')
else:
raise RegistrationError(f'Object {context} is already registered')
else:
logger.info(f"Registering '{path}'.")
backend.register(source, context, replace=False)
logger.info(f"Registering '{path}'.")
backend.register(source, context, replace=False)
except Exception as e:
for error_handler in get_error_handlers(config):
error_handler(config, path, context, e)
raise
else:
for post_handler in get_post_handlers(config):
post_handler(config, path, context)
for post_handler in get_post_handlers(config):
post_handler(config, path, context)
logger.info(f"Successfully {'replaced' if replace else 'registered'} '{path}'")
return context
logger.info(f"Successfully {'replaced' if replace else 'registered'} '{path}'")
return context
def _get_handlers(config, name):
......@@ -61,3 +66,7 @@ def get_pre_handlers(config):
def get_post_handlers(config):
return _get_handlers(config, 'post_handlers')
def get_error_handlers(config):
return _get_handlers(config, 'error_handlers')
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment