Add test plugin which allows to query whether a module or action plugin is available (#3628)

* Add test which allows to query whether an action is available.

* Add documentation.

* Fix FreeBSD / macOS compatibility.

* Rename an_action -> a_module.

* Forgot one place.
This commit is contained in:
Felix Fontein 2021-11-01 19:00:24 +01:00 committed by GitHub
parent 9eb638f651
commit c69810bf04
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 183 additions and 0 deletions

33
plugins/test/a_module.py Normal file
View file

@ -0,0 +1,33 @@
# (c) 2021, Felix Fontein <felix@fontein.de>
# 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.loader import action_loader, module_loader
def a_module(term):
"""
Example:
- 'community.general.ufw' is community.general.a_module
- 'community.general.does_not_exist' is not community.general.a_module
"""
for loader in (action_loader, module_loader):
data = loader.find_plugin(term)
# Ansible 2.9 returns a tuple
if isinstance(data, tuple):
data = data[0]
if data is not None:
return True
return False
class TestModule(object):
''' Ansible jinja2 tests '''
def tests(self):
return {
'a_module': a_module,
}