diff --git a/changelogs/fragments/abstract_errors_info.yml b/changelogs/fragments/abstract_errors_info.yml new file mode 100644 index 00000000000..1a1c5d7b378 --- /dev/null +++ b/changelogs/fragments/abstract_errors_info.yml @@ -0,0 +1,3 @@ +bugfixes: + - plugin loader, now when skipping a plugin due to an abstract method error we provide that in 'verbose' mode instead of totally obscuring the error. + The current implementation assumed only the base classes would trigger this and failed to consider 'in development' plugins. diff --git a/lib/ansible/plugins/loader.py b/lib/ansible/plugins/loader.py index ef72587b126..f2cc7f3f89d 100644 --- a/lib/ansible/plugins/loader.py +++ b/lib/ansible/plugins/loader.py @@ -873,8 +873,8 @@ class PluginLoader: obj = instance except TypeError as e: if "abstract" in e.args[0]: - # Abstract Base Class. The found plugin file does not - # fully implement the defined interface. + # Abstract Base Class or incomplete plugin, don't load + display.v('Returning not found on "%s" as it has unimplemented abstract methods; %s' % (name, to_native(e))) return get_with_context_result(None, plugin_load_context) raise