fix another race in remctl interface
[invirt/packages/invirt-remote.git] / files / usr / sbin / sipb-xen-remote-listhost
1 #!/usr/bin/python
2 """
3 Say what host a running VM is on.
4 """
5
6 from subprocess import PIPE, Popen, call
7 import sys
8 import yaml
9
10 def main(argv):
11     if len(argv) < 2:
12         print >>sys.stderr, "usage: sipb-xen-remote-listhost <machine>"
13         return 2
14     machine_name = argv[1]
15
16     p = Popen(['/usr/sbin/sipb-xen-remote-proxy-web', 'listvms'], stdout=PIPE)
17     output = p.communicate()[0]
18     if p.returncode != 0:
19         raise RuntimeError("Command '%s' returned non-zero exit status %d"
20                            % ('sipb-xen-remote-proxy-web', p.returncode)) 
21     vms = yaml.load(output, yaml.CSafeLoader)
22
23     if machine_name not in vms:
24         print >>sys.stderr, "machine '%s' is not on" % machine_name
25         return 2
26
27     print vms[machine_name]['host']
28     return 0
29
30 if __name__ == '__main__':
31     sys.exit(main(sys.argv))
32
33 # vim:et:sw=4:ts=4