mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-04-24 03:11:24 -07:00
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:
parent
9eb638f651
commit
c69810bf04
11 changed files with 183 additions and 0 deletions
33
plugins/test/a_module.py
Normal file
33
plugins/test/a_module.py
Normal 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,
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue