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:
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: