In invirt-remote:
[invirt/packages/invirt-remote.git] / server / usr / sbin / invirt-remote-listvms
1 #!/usr/bin/python
2
3 """
4 Collates the results of listvms from multiple VM servers.  Part of the xvm
5 suite.
6 """
7
8 from invirt.remote import bcast
9 import sys
10 import yaml
11
12 def main(argv):
13     # Query each of the hosts.
14     results = filter(lambda (_, x): x is not None, bcast('listvms'))
15
16     # Merge the results and print.
17     merged = {}
18     for server, result in results:
19         for data in result.itervalues():
20             data['host'] = server
21         merged.update(result)
22
23     print yaml.dump(merged, Dumper=yaml.CSafeDumper, default_flow_style=False)
24
25 if __name__ == '__main__':
26     sys.exit(main(sys.argv))
27
28 # vim:et:sw=4:ts=4