Fix regression causing setup to run for every play

This patch makes sure setup only runs once, unless it is enforced on a play.
This commit is contained in:
Dag Wieers 2014-03-03 16:01:10 +01:00
parent 1e01fb856d
commit 0da06eff5c
2 changed files with 6 additions and 3 deletions

View file

@ -475,10 +475,13 @@ class PlayBook(object):
def _do_setup_step(self, play):
''' get facts from the remote system '''
host_list = self._trim_unavailable_hosts(play._play_hosts)
if play.gather_facts is False:
return {}
host_list = self._trim_unavailable_hosts(play._play_hosts)
elif play.gather_facts is None:
host_list = [h for h in host_list if h not in self.SETUP_CACHE or 'module_setup' not in self.SETUP_CACHE[h]]
if len(host_list) == 0:
return {}
self.callbacks.on_setup()
self.inventory.restrict_to(host_list)

View file

@ -117,7 +117,7 @@ class Play(object):
self.sudo = ds.get('sudo', self.playbook.sudo)
self.sudo_user = ds.get('sudo_user', self.playbook.sudo_user)
self.transport = ds.get('connection', self.playbook.transport)
self.gather_facts = ds.get('gather_facts', True)
self.gather_facts = ds.get('gather_facts', None)
self.remote_port = self.remote_port
self.any_errors_fatal = utils.boolean(ds.get('any_errors_fatal', 'false'))
self.accelerate = utils.boolean(ds.get('accelerate', 'false'))