#!/usr/bin/python from invirt.config import structs as config from subprocess import Popen, check_call, PIPE, CalledProcessError import tempfile import os import sys import shutil def check_wait(popen): retcode = popen.wait() if retcode != 0: raise CalledProcessError(retcode, popen.pid) return retcode def main(): check_call(['kinit', '-k', 'daemon/%s' % config.web.hostname]) temp_dir = tempfile.mkdtemp() jarfile = os.path.join(temp_dir, 'VncViewer.jar') shutil.copy('/usr/share/invirt-vnc-client/VncViewer.src.jar', jarfile) keystore = os.path.join(temp_dir, 'trust.store') for host in config.hosts: cert = Popen(['remctl', config.remote.hostname, 'web', 'vnccert', host.hostname], stdout=PIPE) check_wait(cert) check_call(['keytool', '-import', '-noprompt', '-alias', host.hostname, '-keystore', keystore, '-storepass', 'foobar'], stdin=cert.stdout) check_call(['jar', 'uf', jarfile, '-C', temp_dir, 'trust.store']) shutil.move(jarfile, '/usr/share/invirt-vnc-client/VncViewer.jar') shutil.rmtree(temp_dir) if __name__ == '__main__': sys.exit(main())