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
|
# import module snippets
|
||||||
from ..module_utils.basic import AnsibleModule
|
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.namespace import PrefixFactNamespace
|
||||||
from ansible.module_utils.facts import ansible_collector
|
|
||||||
|
|
||||||
from ansible.module_utils.facts import default_collectors
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
@ -180,13 +180,16 @@ def main():
|
||||||
namespace = PrefixFactNamespace(namespace_name='ansible',
|
namespace = PrefixFactNamespace(namespace_name='ansible',
|
||||||
prefix='ansible_')
|
prefix='ansible_')
|
||||||
|
|
||||||
fact_collector = \
|
try:
|
||||||
ansible_collector.get_ansible_collector(all_collector_classes=all_collector_classes,
|
fact_collector = ansible_collector.get_ansible_collector(all_collector_classes=all_collector_classes,
|
||||||
namespace=namespace,
|
namespace=namespace,
|
||||||
filter_spec=filter_spec,
|
filter_spec=filter_spec,
|
||||||
gather_subset=gather_subset,
|
gather_subset=gather_subset,
|
||||||
gather_timeout=gather_timeout,
|
gather_timeout=gather_timeout,
|
||||||
minimal_gather_subset=minimal_gather_subset)
|
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)
|
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
|
# ensure we dont clobber facts in loop
|
||||||
ansible-playbook prevent_clobbering.yml -v "$@"
|
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