1fc623b4c486efdd2a3570e98cfb08f0d6659688
[invirt/packages/invirt-console.git] / files / usr / sbin / sipb-xen-update-conserver
1 #!/usr/bin/python
2
3 import sipb_xen_database
4 import subprocess
5 import os
6 import socket
7
8 sipb_xen_database.connect('postgres://sipb-xen@sipb-xen-dev.mit.edu/sipb_xen')
9
10 def live_vms():
11     p = subprocess.Popen(['/usr/sbin/xm', 'list'], stdout=subprocess.PIPE)
12     p.wait()
13     output = p.stdout.read()
14     vms = [x.split()[0][2:] for x in output.splitlines() if x.startswith('d_')]
15     return vms
16
17 def reload_conserver():
18     p = subprocess.Popen(['/etc/init.d/conserver-server', 'reload'], stdout=subprocess.PIPE)
19     p.wait()
20
21 if __name__ == '__main__':
22     hostname = socket.getfqdn().lower()
23     realm = file('/etc/invirt/realm').read().strip()
24     principal = 'host/'+hostname+'@'+realm
25     config = '\n'.join('console %s { master %s; }' % (vm, hostname)
26                        for vm in live_vms())
27     f = open('/etc/conserver/sipb-xen-consoles.cf', 'w')
28     f.write(config)
29     f.close()
30     reload_conserver()
31     subprocess.call(['/usr/bin/kinit', '-k', '-t', '/etc/krb5.keytab',
32                      principal])
33     subprocess.call(['/usr/bin/remctl', 'sipb-xen-console.mit.edu',
34                      'console', 'update', config])