diff options
author | Matt Davis <6775756+nitzmahone@users.noreply.github.com> | 2022-08-03 10:29:51 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-03 10:29:51 -0700 |
commit | ff4bb5500a79609de7d23253b2f25713eeaf6bfe (patch) | |
tree | a950e40852006c67670e2449243ffa4179ca6c29 /test/integration/targets | |
parent | 426e4899a3dab37b88f128807616502b99dab5ae (diff) | |
download | ansible-ff4bb5500a79609de7d23253b2f25713eeaf6bfe.tar.gz |
PluginLoader now installs module-to-be-imported in sys.modules before exec (as Python import does). (#78364) (#78367)
(cherry picked from commit 1368bfa34821df099fde36c6e655d92d40bf24f5)
Diffstat (limited to 'test/integration/targets')
-rw-r--r-- | test/integration/targets/plugin_loader/normal/action_plugins/self_referential.py | 29 | ||||
-rw-r--r-- | test/integration/targets/plugin_loader/normal/self_referential.yml | 5 |
2 files changed, 34 insertions, 0 deletions
diff --git a/test/integration/targets/plugin_loader/normal/action_plugins/self_referential.py b/test/integration/targets/plugin_loader/normal/action_plugins/self_referential.py new file mode 100644 index 0000000000..b4c8957759 --- /dev/null +++ b/test/integration/targets/plugin_loader/normal/action_plugins/self_referential.py @@ -0,0 +1,29 @@ +# Copyright: Contributors to the 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 ansible.plugins.action import ActionBase + +import sys + +# reference our own module from sys.modules while it's being loaded to ensure the importer behaves properly +try: + mod = sys.modules[__name__] +except KeyError: + raise Exception(f'module {__name__} is not accessible via sys.modules, likely a pluginloader bug') + + +class ActionModule(ActionBase): + TRANSFERS_FILES = False + + def run(self, tmp=None, task_vars=None): + if task_vars is None: + task_vars = dict() + + result = super(ActionModule, self).run(tmp, task_vars) + del tmp # tmp no longer has any effect + + result['changed'] = False + result['msg'] = 'self-referential action loaded and ran successfully' + return result diff --git a/test/integration/targets/plugin_loader/normal/self_referential.yml b/test/integration/targets/plugin_loader/normal/self_referential.yml new file mode 100644 index 0000000000..d3eed21833 --- /dev/null +++ b/test/integration/targets/plugin_loader/normal/self_referential.yml @@ -0,0 +1,5 @@ +- hosts: testhost + gather_facts: false + tasks: + - name: ensure a self-referential action plugin loads properly + self_referential: |