1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

gather facts improvements (#44008)

* gather_subset is a list of strings

When gather_subset is an integer, a message pointing out the problem, current tb error 
is replaced by this one:

    ERROR! the field 'gather_subset' should be a list of (<class 'str'>,), but the item '42' is a <class 'int'>
...
* gathering_facts test: ensure smart gathering is on
This commit is contained in:
Pilou 2018-08-23 17:36:06 +02:00 committed by Brian Coca
parent 23e44319ce
commit 2603604fd6
3 changed files with 14 additions and 10 deletions

View file

@ -589,7 +589,7 @@ DEFAULT_GATHERING:
choices: ['smart', 'explicit', 'implicit'] choices: ['smart', 'explicit', 'implicit']
DEFAULT_GATHER_SUBSET: DEFAULT_GATHER_SUBSET:
name: Gather facts subset name: Gather facts subset
default: 'all' default: ['all']
description: description:
- Set the `gather_subset` option for the M(setup) task in the implicit fact gathering. - Set the `gather_subset` option for the M(setup) task in the implicit fact gathering.
See the module documentation for specifics. See the module documentation for specifics.

View file

@ -59,7 +59,7 @@ class Play(Base, Taggable, Become):
# Facts # Facts
_fact_path = FieldAttribute(isa='string', default=None) _fact_path = FieldAttribute(isa='string', default=None)
_gather_facts = FieldAttribute(isa='bool', default=None, always_post_validate=True) _gather_facts = FieldAttribute(isa='bool', default=None, always_post_validate=True)
_gather_subset = FieldAttribute(isa='list', default=None, always_post_validate=True) _gather_subset = FieldAttribute(isa='list', default=None, listof=string_types, always_post_validate=True)
_gather_timeout = FieldAttribute(isa='int', default=None, always_post_validate=True) _gather_timeout = FieldAttribute(isa='int', default=None, always_post_validate=True)
# Variable Attributes # Variable Attributes

View file

@ -2,6 +2,10 @@
- hosts: facthost1 - hosts: facthost1
gather_facts: no gather_facts: no
tasks: tasks:
- name: check that smart gathering is enabled
fail:
msg: 'smart gathering must be enabled'
when: 'lookup("env", "ANSIBLE_GATHERING") != "smart"'
- name: install test local facts - name: install test local facts
copy: copy:
src: uuid.fact src: uuid.fact
@ -13,14 +17,14 @@
run_once: yes run_once: yes
tasks: tasks:
- block: - block:
- name: 'Check the same host is used' - name: 'Check the same host is used'
assert: assert:
that: 'hostvars.facthost1.ansible_fqdn == hostvars.facthost2.ansible_fqdn' that: 'hostvars.facthost1.ansible_fqdn == hostvars.facthost2.ansible_fqdn'
msg: 'This test requires 2 inventory hosts referring to the same host.' msg: 'This test requires 2 inventory hosts referring to the same host.'
- name: "Check that run_once doesn't prevent fact gathering (#39453)" - name: "Check that run_once doesn't prevent fact gathering (#39453)"
assert: assert:
that: 'hostvars.facthost1.ansible_local.uuid != hostvars.facthost2.ansible_local.uuid' that: 'hostvars.facthost1.ansible_local.uuid != hostvars.facthost2.ansible_local.uuid'
msg: "{{ 'Same value for ansible_local.uuid on both hosts: ' ~ hostvars.facthost1.ansible_local.uuid }}" msg: "{{ 'Same value for ansible_local.uuid on both hosts: ' ~ hostvars.facthost1.ansible_local.uuid }}"
always: always:
- name: remove test local facts - name: remove test local facts
file: file: