Add a dummy console for the host conservers in case no VMs are running
[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 from invirt.config import structs as config
8
9 sipb_xen_database.connect(config.db.uri)
10
11 def live_vms():
12     p = subprocess.Popen(['/usr/sbin/xm', 'list'], stdout=subprocess.PIPE)
13     p.wait()
14     output = p.stdout.read()
15     vms = [x.split()[0][2:] for x in output.splitlines() if x.startswith('d_')]
16     return vms
17
18 def reload_conserver():
19     p = subprocess.Popen(['/etc/init.d/conserver-server', 'reload'], stdout=subprocess.PIPE)
20     p.wait()
21
22 if __name__ == '__main__':
23     hostname = socket.getfqdn().lower()
24     realm = config.authn[0].realm
25     principal = 'host/'+hostname+'@'+realm
26     conftext = '\n'.join('console %s { master %s; }' % (vm, hostname)
27                          for vm in live_vms())
28     f = open('/etc/conserver/sipb-xen-consoles.cf', 'w')
29     f.write(conftext)
30     f.close()
31     reload_conserver()
32     subprocess.call(['/usr/bin/kinit', '-k', '-t', '/etc/krb5.keytab',
33                      principal])
34     subprocess.call(['/usr/bin/remctl', config.console.hostname,
35                      'console', 'update', conftext])