do not erroneously set gathered_facts=True

In `lib/ansible/executor/play_iterator.py`, ansible sets a host's
`_gathered_facts` property to `True` without checking to see if there
are any tasks to be executed.  In the event that the entire play is
skipped, `_gathered_facts` will be `True` even though the `setup`
module was never run.

This patch modifies the logic to only set `_gathered_facts` to `True`
when there are tasks to execute.

Closes #15744.
This commit is contained in:
Lars Kellogg-Stedman 2016-05-05 23:45:06 -04:00
parent 5c7ad654db
commit 21ac95402f

View file

@ -295,10 +295,10 @@ class PlayIterator:
setup_block = self._blocks[0] setup_block = self._blocks[0]
if setup_block.has_tasks() and len(setup_block.block) > 0: if setup_block.has_tasks() and len(setup_block.block) > 0:
task = setup_block.block[0] task = setup_block.block[0]
if not peek: if not peek:
# mark the host as having gathered facts, because we're # mark the host as having gathered facts, because we're
# returning the setup task to be executed # returning the setup task to be executed
host.set_gathered_facts(True) host.set_gathered_facts(True)
else: else:
# This is the second trip through ITERATING_SETUP, so we clear # This is the second trip through ITERATING_SETUP, so we clear
# the flag and move onto the next block in the list while setting # the flag and move onto the next block in the list while setting