plugin_filter: check for type error (#46664)
* Parsing plugin filter may raise TypeError, gracefully handle this exception
and let user know about the syntax error in plugin filter file.
* Test for plugin_filtering
Fixes: #46658
Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
(cherry picked from commit b32b4111b2
)
This commit is contained in:
parent
44088ef64d
commit
1293076d7b
5 changed files with 26 additions and 4 deletions
|
@ -0,0 +1,2 @@
|
|||
minor_changes:
|
||||
- Parsing plugin filter may raise TypeError, gracefully handle this exception and let user know about the syntax error in plugin filter file.
|
|
@ -574,10 +574,9 @@ class Jinja2Loader(PluginLoader):
|
|||
|
||||
def _load_plugin_filter():
|
||||
filters = defaultdict(frozenset)
|
||||
|
||||
user_set = False
|
||||
if C.PLUGIN_FILTERS_CFG is None:
|
||||
filter_cfg = '/etc/ansible/plugin_filters.yml'
|
||||
user_set = False
|
||||
else:
|
||||
filter_cfg = C.PLUGIN_FILTERS_CFG
|
||||
user_set = True
|
||||
|
@ -605,11 +604,17 @@ def _load_plugin_filter():
|
|||
if version == u'1.0':
|
||||
# Modules and action plugins share the same blacklist since the difference between the
|
||||
# two isn't visible to the users
|
||||
try:
|
||||
filters['ansible.modules'] = frozenset(filter_data['module_blacklist'])
|
||||
except TypeError:
|
||||
display.warning(u'Unable to parse the plugin filter file {0} as'
|
||||
u' module_blacklist is not a list.'
|
||||
u' Skipping.'.format(filter_cfg))
|
||||
return filters
|
||||
filters['ansible.plugins.action'] = filters['ansible.modules']
|
||||
else:
|
||||
display.warning(u'The plugin filter file, {0} was a version not recognized by this'
|
||||
u' version of Ansible. Skipping.')
|
||||
u' version of Ansible. Skipping.'.format(filter_cfg))
|
||||
else:
|
||||
if user_set:
|
||||
display.warning(u'The plugin filter file, {0} does not exist.'
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
[defaults]
|
||||
retry_files_enabled = False
|
||||
plugin_filters_cfg = ./no_blacklist_module.yml
|
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
filter_version: 1.0
|
||||
module_blacklist:
|
|
@ -21,6 +21,15 @@ if test $? != 0 ; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
#
|
||||
# Check that if no modules are blacklisted then Ansible should not through traceback
|
||||
#
|
||||
ANSIBLE_CONFIG=no_blacklist_module.ini ansible-playbook tempfile.yml -i ../../inventory -vvv "$@"
|
||||
if test $? != 0 ; then
|
||||
echo "### Failed to run tempfile with no modules blacklisted"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#
|
||||
# Check that with these modules filtered out, all of these modules fail to be found
|
||||
#
|
||||
|
|
Loading…
Reference in a new issue