From fedfd187749654105a22be20c27e0050bc722d0a Mon Sep 17 00:00:00 2001 From: Dag Wieers Date: Tue, 2 Oct 2012 23:15:18 +0200 Subject: [PATCH] Fix gather_facts assumption that SETUP_CACHE for a host is empty We now check explicitely for 'module_setup' in the SETUP_CACHE in order to avoid skipping setup because SETUP_CACHE was populated some other way. Other modules can implement the same mechanism to test if they've already run. This closes #1206. --- lib/ansible/playbook/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/ansible/playbook/__init__.py b/lib/ansible/playbook/__init__.py index ed8739f7975..3469f305909 100644 --- a/lib/ansible/playbook/__init__.py +++ b/lib/ansible/playbook/__init__.py @@ -317,7 +317,7 @@ class PlayBook(object): if play.gather_facts is False: return {} elif play.gather_facts is None: - host_list = [h for h in host_list if h not in self.SETUP_CACHE] + 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 {} @@ -340,6 +340,7 @@ class PlayBook(object): # let runner template out future commands setup_ok = setup_results.get('contacted', {}) for (host, result) in setup_ok.iteritems(): + self.SETUP_CACHE[host].update({'module_setup': True}) self.SETUP_CACHE[host].update(result.get('ansible_facts', {})) return setup_results