def instantiate_plugins(config, **kwargs):
kwargs.setdefault('propagate_map_exceptions', True)
kwargs.setdefault('on_load_failure_callback', extension_load_failure_callback)
kwargs.setdefault('verify_requirements', True)
kwargs.setdefault('names', config.get('PLUGINS_ENABLED', six.viewkeys(config.get('PLUGINS', {}))))
plugins = stevedore.named.NamedExtensionManager(**kwargs)
logger.debug("'{!s}' plugins: loaded {!s}", kwargs['namespace'], plugins.names())
for plugin in plugins:
plugin_config = config.get('PLUGINS', {}).get(plugin.name, {})
plugin_config.setdefault('DEBUG', config.get('DEBUG', False))
plugin_config.setdefault('DEFAULT_TIMEOUT', config.get('DEFAULT_TIMEOUT', False))
plugin.obj = plugin.plugin(plugin_config)
plugin.obj.plugin_name = plugin.name
logger.debug("'{!s}' plugins: instantiated {!s}", kwargs['namespace'], plugins.names())
return plugins
评论列表
文章目录