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.
This commit is contained in:
Daniel Hokka Zakrisson 2013-02-02 12:38:39 +01:00
parent a79373f6b2
commit 9a34c20cc5

View file

@ -125,20 +125,14 @@ def main(args):
if options.listhosts: if options.listhosts:
print 'playbook: %s' % playbook print 'playbook: %s' % playbook
playnum = 0 playnum = 0
for play in pb.playbook: for (play_ds, play_basedir) in zip(pb.playbook, pb.play_basedirs):
playnum += 1 playnum += 1
if 'hosts' in play: play = ansible.playbook.Play(pb, play_ds, play_basedir)
label = 'unnamed' label = play.name
if 'name' in play: hosts = pb.inventory.list_hosts(play.hosts)
label = play['name'] print ' hosts in play %s (%s): #%d' % (playnum, label, len(hosts))
tmp_hosts = play['hosts'] for host in hosts:
if isinstance(tmp_hosts, list): print ' %s' % host
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
continue continue
if options.syntax: if options.syntax: