From 9a34c20cc5f9286a7f8d50072129c5cc48e2ffd7 Mon Sep 17 00:00:00 2001 From: Daniel Hokka Zakrisson Date: Sat, 2 Feb 2013 12:38:39 +0100 Subject: [PATCH] Create Play objects for --list-hosts to mimic actual behaviour This makes --list-hosts work more like actually running the playbook, and thus gets the correct hosts with regard to includes and similar. Fixes #1959. --- bin/ansible-playbook | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/bin/ansible-playbook b/bin/ansible-playbook index f6c8a102176..060bbe284ec 100755 --- a/bin/ansible-playbook +++ b/bin/ansible-playbook @@ -125,20 +125,14 @@ def main(args): if options.listhosts: print 'playbook: %s' % playbook playnum = 0 - for play in pb.playbook: + for (play_ds, play_basedir) in zip(pb.playbook, pb.play_basedirs): playnum += 1 - if 'hosts' in play: - label = 'unnamed' - if 'name' in play: - label = play['name'] - tmp_hosts = play['hosts'] - if isinstance(tmp_hosts, list): - tmp_hosts = ':'.join(tmp_hosts) - tmp_hosts = utils.template(pb.basedir, tmp_hosts, extra_vars) - hosts = pb.inventory.list_hosts(tmp_hosts) - print ' hosts in play %s (%s): #%d' % (playnum, label, len(hosts)) - for host in hosts: - print ' %s' % host + play = ansible.playbook.Play(pb, play_ds, play_basedir) + label = play.name + hosts = pb.inventory.list_hosts(play.hosts) + print ' hosts in play %s (%s): #%d' % (playnum, label, len(hosts)) + for host in hosts: + print ' %s' % host continue if options.syntax: