diff options
author | Sloane Hertel <19572925+s-hertel@users.noreply.github.com> | 2021-06-24 12:51:03 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-24 12:51:03 -0400 |
commit | 865bda3a11486ea502108381c972b21d91bfe983 (patch) | |
tree | d81bf025f465ffb84d47285a55cc8b0156a84496 /lib/ansible/plugins | |
parent | a4021977ad46ef9991d9b41391f60d5d84137209 (diff) | |
download | ansible-865bda3a11486ea502108381c972b21d91bfe983.tar.gz |
Add a resolved_action task attribute (#74709)
* The resolved_action is the formatted version of the final plugin in the PluginLoadContext's redirect_list
* Collection plugins are represented as FQCN
* Legacy plugins are represented with only the plugin name
* Add tests
* Changelog
Diffstat (limited to 'lib/ansible/plugins')
-rw-r--r-- | lib/ansible/plugins/loader.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/ansible/plugins/loader.py b/lib/ansible/plugins/loader.py index cbd2fd382e..a80aae7c2b 100644 --- a/lib/ansible/plugins/loader.py +++ b/lib/ansible/plugins/loader.py @@ -129,6 +129,22 @@ class PluginLoadContext(object): self.removal_version = None self.deprecation_warnings = [] self.resolved = False + self._resolved_fqcn = None + + @property + def resolved_fqcn(self): + if not self.resolved: + return + + if not self._resolved_fqcn: + final_plugin = self.redirect_list[-1] + if AnsibleCollectionRef.is_valid_fqcr(final_plugin) and final_plugin.startswith('ansible.legacy.'): + final_plugin = final_plugin.split('ansible.legacy.')[-1] + if self.plugin_resolved_collection and not AnsibleCollectionRef.is_valid_fqcr(final_plugin): + final_plugin = self.plugin_resolved_collection + '.' + final_plugin + self._resolved_fqcn = final_plugin + + return self._resolved_fqcn def record_deprecation(self, name, deprecation, collection_name): if not deprecation: |