mirror of
https://github.com/ansible/awx.git
synced 2026-03-01 00:38:45 -03:30
fixed fact cache sender to work when gather_facts: false
This commit is contained in:
@@ -65,20 +65,22 @@ class CacheModule(BaseCacheModule):
|
|||||||
str(e)))
|
str(e)))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
def identify_ansible_facts(self, facts):
|
def filter_ansible_facts(self, facts):
|
||||||
ansible_keys = {}
|
return dict((k, facts[k]) for k in facts.keys() if k.startswith('ansible_'))
|
||||||
for k in facts.keys():
|
|
||||||
if k.startswith('ansible_'):
|
|
||||||
ansible_keys[k] = 1
|
|
||||||
return ansible_keys
|
|
||||||
|
|
||||||
def identify_new_module(self, key, value):
|
def identify_new_module(self, key, value):
|
||||||
|
# Return the first key found that doesn't exist in the
|
||||||
|
# previous set of facts
|
||||||
if key in self._cache_prev:
|
if key in self._cache_prev:
|
||||||
value_old = self._cache_prev[key]
|
value_old = self._cache_prev[key]
|
||||||
for k,v in value.iteritems():
|
for k,v in value.iteritems():
|
||||||
if k not in value_old:
|
if k not in value_old:
|
||||||
if not k.startswith('ansible_'):
|
if not k.startswith('ansible_'):
|
||||||
return k
|
return k
|
||||||
|
# First time we have seen facts from this host
|
||||||
|
# it's either ansible facts or a module facts (including module_setup)
|
||||||
|
elif len(value) == 1:
|
||||||
|
return value.iterkeys().next()
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def get(self, key):
|
def get(self, key):
|
||||||
@@ -105,13 +107,7 @@ class CacheModule(BaseCacheModule):
|
|||||||
def set(self, key, value):
|
def set(self, key, value):
|
||||||
module = self.identify_new_module(key, value)
|
module = self.identify_new_module(key, value)
|
||||||
# Assume ansible fact triggered the set if no new module found
|
# Assume ansible fact triggered the set if no new module found
|
||||||
facts = {}
|
facts = self.filter_ansible_facts(value) if not module else dict({ module : value[module]})
|
||||||
if not module:
|
|
||||||
keys = self.identify_ansible_facts(value)
|
|
||||||
for k in keys:
|
|
||||||
facts[k] = value[k]
|
|
||||||
else:
|
|
||||||
facts[module] = value[module]
|
|
||||||
|
|
||||||
self._cache_prev = deepcopy(self._cache)
|
self._cache_prev = deepcopy(self._cache)
|
||||||
self._cache[key] = value
|
self._cache[key] = value
|
||||||
|
|||||||
Reference in New Issue
Block a user