diff options
Diffstat (limited to 'lib/ansible/plugins/loader.py')
-rw-r--r-- | lib/ansible/plugins/loader.py | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/lib/ansible/plugins/loader.py b/lib/ansible/plugins/loader.py index 9ff19bb..c865ac4 100644 --- a/lib/ansible/plugins/loader.py +++ b/lib/ansible/plugins/loader.py @@ -4,8 +4,7 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type +from __future__ import annotations import glob import os @@ -15,6 +14,7 @@ import sys import warnings from collections import defaultdict, namedtuple +from importlib import import_module from traceback import format_exc import ansible.module_utils.compat.typing as t @@ -26,7 +26,6 @@ from ansible import __version__ as ansible_version from ansible import constants as C from ansible.errors import AnsibleError, AnsiblePluginCircularRedirect, AnsiblePluginRemovedError, AnsibleCollectionUnsupportedVersionError from ansible.module_utils.common.text.converters import to_bytes, to_text, to_native -from ansible.module_utils.compat.importlib import import_module from ansible.module_utils.six import string_types from ansible.parsing.utils.yaml import from_yaml from ansible.parsing.yaml.loader import AnsibleLoader @@ -1232,24 +1231,22 @@ class Jinja2Loader(PluginLoader): # check deprecations deprecation_entry = routing_entry.get('deprecation') if deprecation_entry: - warning_text = deprecation_entry.get('warning_text') + warning_text = deprecation_entry.get('warning_text') or '' removal_date = deprecation_entry.get('removal_date') removal_version = deprecation_entry.get('removal_version') - if not warning_text: - warning_text = '{0} "{1}" is deprecated'.format(self.type, key) + warning_text = f'{self.type.title()} "{key}" has been deprecated.{" " if warning_text else ""}{warning_text}' display.deprecated(warning_text, version=removal_version, date=removal_date, collection_name=acr.collection) # check removal tombstone_entry = routing_entry.get('tombstone') if tombstone_entry: - warning_text = tombstone_entry.get('warning_text') + warning_text = tombstone_entry.get('warning_text') or '' removal_date = tombstone_entry.get('removal_date') removal_version = tombstone_entry.get('removal_version') - if not warning_text: - warning_text = '{0} "{1}" has been removed'.format(self.type, key) + warning_text = f'{self.type.title()} "{key}" has been removed.{" " if warning_text else ""}{warning_text}' exc_msg = display.get_deprecation_message(warning_text, version=removal_version, date=removal_date, collection_name=acr.collection, removed=True) @@ -1299,12 +1296,14 @@ class Jinja2Loader(PluginLoader): fq_name = '.'.join((parent_prefix, func_name)) src_name = f"ansible_collections.{acr.collection}.plugins.{self.type}.{acr.subdirs}.{func_name}" # TODO: load anyways into CACHE so we only match each at end of loop - # the files themseves should already be cached by base class caching of modules(python) + # the files themselves should already be cached by base class caching of modules(python) if key in (func_name, fq_name): plugin = self._plugin_wrapper_type(func) if plugin: context = plugin_impl.plugin_load_context self._update_object(plugin, src_name, plugin_impl.object._original_path, resolved=fq_name) + # context will have filename, which for tests/filters might not be correct + context._resolved_fqcn = plugin.ansible_name # FIXME: once we start caching these results, we'll be missing functions that would have loaded later break # go to next file as it can override if dupe (dont break both loops) @@ -1448,7 +1447,7 @@ def _load_plugin_filter(): display.warning(u'The plugin filter file, {0} does not exist.' u' Skipping.'.format(filter_cfg)) - # Specialcase the stat module as Ansible can run very few things if stat is rejected + # Special case: the stat module as Ansible can run very few things if stat is rejected if 'stat' in filters['ansible.modules']: raise AnsibleError('The stat module was specified in the module reject list file, {0}, but' ' Ansible will not function without the stat module. Please remove stat' |