Merge branch 'jhoekx-custom-facts' into devel

pull/213/head
Michael DeHaan 13 years ago
commit bced4c9db1

@ -397,6 +397,12 @@ class PlayBook(object):
module_args, module_vars, remote_user, async_seconds, module_args, module_vars, remote_user, async_seconds,
async_poll_interval, only_if, sudo, transport, port) async_poll_interval, only_if, sudo, transport, port)
# add facts to the global setup cache
for host, result in results['contacted'].iteritems():
if "ansible_facts" in result:
for k,v in result['ansible_facts'].iteritems():
SETUP_CACHE[host][k]=v
self.stats.compute(results) self.stats.compute(results)
# if no hosts are matched, carry on, unlike /bin/ansible # if no hosts are matched, carry on, unlike /bin/ansible
@ -528,7 +534,8 @@ class PlayBook(object):
if vars_files is None: if vars_files is None:
# first pass only or we'll erase good work # first pass only or we'll erase good work
for (host, result) in setup_ok.iteritems(): for (host, result) in setup_ok.iteritems():
SETUP_CACHE[host] = result if 'ansible_facts' in result:
SETUP_CACHE[host] = result['ansible_facts']
# ***************************************************** # *****************************************************

@ -320,9 +320,9 @@ class Runner(object):
''' allows discovered variables to be used in templates and action statements ''' ''' allows discovered variables to be used in templates and action statements '''
host = conn.host host = conn.host
try: if 'ansible_facts' in result:
var_result = utils.parse_json(result) var_result = result['ansible_facts']
except: else:
var_result = {} var_result = {}
# note: do not allow variables from playbook to be stomped on # note: do not allow variables from playbook to be stomped on
@ -349,10 +349,12 @@ class Runner(object):
if module_name == 'setup': if module_name == 'setup':
self._add_result_to_setup_cache(conn, result) self._add_result_to_setup_cache(conn, result)
if self.is_playbook: (host, ok, data, err) = self._return_from_module(conn, host, result, err, executed)
self._save_setup_result_to_disk(conn, result)
return self._return_from_module(conn, host, result, err, executed) if ok:
self._add_result_to_setup_cache(conn, data)
return (host, ok, data, err)
# ***************************************************** # *****************************************************

@ -22,4 +22,6 @@
# facter # facter
# ruby-json # ruby-json
echo '{ "ansible_facts":'
/usr/bin/facter --json /usr/bin/facter --json
echo '}'

@ -18,4 +18,6 @@
# along with Ansible. If not, see <http://www.gnu.org/licenses/>. # along with Ansible. If not, see <http://www.gnu.org/licenses/>.
# #
echo '{ "ansible_facts":'
/usr/bin/ohai /usr/bin/ohai
echo '}'

@ -362,9 +362,11 @@ md5sum2 = os.popen("md5sum %s" % ansible_file).read().split()[0]
if md5sum != md5sum2: if md5sum != md5sum2:
changed = True changed = True
setup_options['written'] = ansible_file setup_result = {}
setup_options['changed'] = changed setup_result['written'] = ansible_file
setup_options['md5sum'] = md5sum2 setup_result['changed'] = changed
setup_result['md5sum'] = md5sum2
setup_result['ansible_facts'] = setup_options
print json.dumps(setup_options) print json.dumps(setup_result)

@ -85,15 +85,17 @@ class TestRunner(unittest.TestCase):
if not get_binary("facter"): if not get_binary("facter"):
raise SkipTest raise SkipTest
result = self._run('facter',[]) result = self._run('facter',[])
assert "hostname" in result assert "hostname" in result['ansible_facts']
# temporarily disbabled since it occasionally hangs # temporarily disbabled since it occasionally hangs
# ohai's fault, setup module doesn't actually run this # ohai's fault, setup module doesn't actually run this
# to get ohai's "facts" anyway # to get ohai's "facts" anyway
# #
#def test_ohai(self): #def test_ohai(self):
# if not get_binary("facter"):
# raise SkipTest
# result = self._run('ohai',[]) # result = self._run('ohai',[])
# assert "hostname" in result # assert "hostname" in result['ansible_facts']
def test_copy(self): def test_copy(self):
# test copy module, change trigger, etc # test copy module, change trigger, etc

Loading…
Cancel
Save