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