#!/usr/bin/python import subprocess import os import socket from invirt.config import structs as config def live_vms(): p = subprocess.Popen(['/usr/sbin/xm', 'list'], stdout=subprocess.PIPE) p.wait() output = p.stdout.read() vms = [x.split()[0][2:] for x in output.splitlines() if x.startswith('d_')] return vms def reload_conserver(): p = subprocess.Popen(['/usr/sbin/invoke-rc.d', 'conserver-server', 'reload'], stdout=subprocess.PIPE) p.wait() if __name__ == '__main__': hostname = socket.getfqdn().lower() realm = config.authn[0].realm principal = 'host/'+hostname+'@'+realm conftext = '\n'.join('console %s { master %s; }' % (vm, hostname) for vm in live_vms()) f = open('/etc/conserver/invirt-consoles.cf', 'w') f.write(conftext) f.close() reload_conserver() subprocess.call(['/usr/bin/kinit', '-k', '-t', '/etc/krb5.keytab', principal]) subprocess.call(['/usr/bin/remctl', config.console.hostname, 'console', 'update', conftext])