Fix setup subset (#74022)
* fix error msg on bad subset * added test * handle more raised but not handled fact exceptions
This commit is contained in:
parent
c66cff444c
commit
4a82e2c486
4 changed files with 31 additions and 10 deletions
2
changelogs/fragments/fix_setup_bad_subset.yml
Normal file
2
changelogs/fragments/fix_setup_bad_subset.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
bugfixes:
|
||||
- setup module, fix error handling on bad subset given
|
|
@ -144,10 +144,10 @@ EXAMPLES = """
|
|||
# import module snippets
|
||||
from ..module_utils.basic import AnsibleModule
|
||||
|
||||
from ansible.module_utils._text import to_text
|
||||
from ansible.module_utils.facts import ansible_collector, default_collectors
|
||||
from ansible.module_utils.facts.collector import CollectorNotFoundError, CycleFoundInFactDeps, UnresolvedFactDep
|
||||
from ansible.module_utils.facts.namespace import PrefixFactNamespace
|
||||
from ansible.module_utils.facts import ansible_collector
|
||||
|
||||
from ansible.module_utils.facts import default_collectors
|
||||
|
||||
|
||||
def main():
|
||||
|
@ -180,13 +180,16 @@ def main():
|
|||
namespace = PrefixFactNamespace(namespace_name='ansible',
|
||||
prefix='ansible_')
|
||||
|
||||
fact_collector = \
|
||||
ansible_collector.get_ansible_collector(all_collector_classes=all_collector_classes,
|
||||
namespace=namespace,
|
||||
filter_spec=filter_spec,
|
||||
gather_subset=gather_subset,
|
||||
gather_timeout=gather_timeout,
|
||||
minimal_gather_subset=minimal_gather_subset)
|
||||
try:
|
||||
fact_collector = ansible_collector.get_ansible_collector(all_collector_classes=all_collector_classes,
|
||||
namespace=namespace,
|
||||
filter_spec=filter_spec,
|
||||
gather_subset=gather_subset,
|
||||
gather_timeout=gather_timeout,
|
||||
minimal_gather_subset=minimal_gather_subset)
|
||||
except (TypeError, CollectorNotFoundError, CycleFoundInFactDeps, UnresolvedFactDep) as e:
|
||||
# bad subset given, collector, idk, deps declared but not found
|
||||
module.fail_json(msg=to_text(e))
|
||||
|
||||
facts_dict = fact_collector.collect(module=module)
|
||||
|
||||
|
|
|
@ -16,3 +16,6 @@ ansible-playbook verify_merge_facts.yml -v "$@" -e 'ansible_facts_parallel: Fals
|
|||
|
||||
# ensure we dont clobber facts in loop
|
||||
ansible-playbook prevent_clobbering.yml -v "$@"
|
||||
|
||||
# ensure we dont fail module on bad subset
|
||||
ansible-playbook verify_subset.yml "$@"
|
||||
|
|
13
test/integration/targets/gathering_facts/verify_subset.yml
Normal file
13
test/integration/targets/gathering_facts/verify_subset.yml
Normal file
|
@ -0,0 +1,13 @@
|
|||
- hosts: localhost
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: bad subset used
|
||||
setup: gather_subset=nonsense
|
||||
register: bad_sub
|
||||
ignore_errors: true
|
||||
|
||||
- name: verify we fail the right way
|
||||
assert:
|
||||
that:
|
||||
- bad_sub is failed
|
||||
- "'MODULE FAILURE' not in bad_sub['msg']"
|
Loading…
Reference in a new issue