diff --git a/rhodecode/authentication/__init__.py b/rhodecode/authentication/__init__.py --- a/rhodecode/authentication/__init__.py +++ b/rhodecode/authentication/__init__.py @@ -33,7 +33,8 @@ from rhodecode.model.settings import Set log = logging.getLogger(__name__) -# Legacy plugins are stored with this prefix in 'auth_plugins'. +# Plugin ID prefixes to distinct between normal and legacy plugins. +plugin_prefix = 'egg:' legacy_plugin_prefix = 'py:' @@ -44,16 +45,24 @@ legacy_plugin_prefix = 'py:' # TODO: When refactoring this think about splitting it up into distinct # discover, load and include phases. def _discover_plugins(config, entry_point='enterprise.plugins1'): - _discovered_plugins = {} - for ep in iter_entry_points(entry_point): - plugin_id = 'egg:{}#{}'.format(ep.dist.project_name, ep.name) + plugin_id = '{}:{}#{}'.format( + plugin_prefix, ep.dist.project_name, ep.name) log.debug('Plugin discovered: "%s"', plugin_id) - module = ep.load() - plugin = module(plugin_id=plugin_id) - config.include(plugin.includeme) + try: + module = ep.load() + plugin = module(plugin_id=plugin_id) + config.include(plugin.includeme) + except Exception as e: + log.exception( + 'Exception while loading authentication plugin ' + '"{}": {}'.format(plugin_id, e.message)) - return _discovered_plugins + +def _import_legacy_plugin(plugin_id): + module_name = plugin_id.split(legacy_plugin_prefix, 1)[-1] + module = importlib.import_module(module_name) + return module.plugin_factory(plugin_id=plugin_id) def _discover_legacy_plugins(config, prefix=legacy_plugin_prefix): @@ -66,22 +75,14 @@ def _discover_legacy_plugins(config, pre enabled_plugins = auth_plugins.app_settings_value legacy_plugins = [id_ for id_ in enabled_plugins if id_.startswith(prefix)] - log.debug('Importing these legacy authentication plugins {}'.format( - legacy_plugins)) - for plugin_id in legacy_plugins: - module_name = plugin_id.split(prefix, 1)[-1] + log.debug('Legacy plugin discovered: "%s"', plugin_id) try: - module = importlib.import_module(module_name) - plugin = module.plugin_factory(plugin_id=plugin_id) + plugin = _import_legacy_plugin(plugin_id) config.include(plugin.includeme) - except ImportError as e: - log.error( - 'ImportError while importing legacy authentication plugin ' - '"{}": {}'.format(plugin_id, e.message)) except Exception as e: - log.error( - 'Exception while importing legacy authentication plugin ' + log.exception( + 'Exception while loading legacy authentication plugin ' '"{}": {}'.format(plugin_id, e.message))