Merge invirt-remote-host and invirt-remote-server into invirt-remote
[invirt/packages/invirt-remote.git] / server / usr / sbin / invirt-remote-listvms
diff --git a/server/usr/sbin/invirt-remote-listvms b/server/usr/sbin/invirt-remote-listvms
new file mode 100755 (executable)
index 0000000..8c25d09
--- /dev/null
@@ -0,0 +1,28 @@
+#!/usr/bin/python
+
+"""
+Collates the results of listvms from multiple VM servers.  Part of the xvm
+suite.
+"""
+
+from invirt.remote import bcast
+import sys
+import yaml
+
+def main(argv):
+    # Query each of the hosts.
+    results = filter(lambda (_, x): x is not None, bcast('listvms'))
+
+    # Merge the results and print.
+    merged = {}
+    for server, result in results:
+        for data in result.itervalues():
+            data['host'] = server
+        merged.update(result)
+
+    print yaml.dump(merged, Dumper=yaml.CSafeDumper, default_flow_style=False)
+
+if __name__ == '__main__':
+    sys.exit(main(sys.argv))
+
+# vim:et:sw=4:ts=4