From: Quentin Smith Date: Wed, 18 Mar 2009 22:52:03 +0000 (-0400) Subject: Make invirt-update-vnc-cert more robust to failure X-Git-Tag: 0.0.11~1 X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-vnc-client.git/commitdiff_plain/72bd5ed6de8518646bb16e54b96ddc7f3a0f071b Make invirt-update-vnc-cert more robust to failure svn path=/trunk/packages/invirt-vnc-client/; revision=2261 --- diff --git a/debian/invirt-update-vnc-cert b/debian/invirt-update-vnc-cert index 27997c0..177c39a 100755 --- a/debian/invirt-update-vnc-cert +++ b/debian/invirt-update-vnc-cert @@ -1,30 +1,41 @@ #!/usr/bin/python from invirt.config import structs as config -from subprocess import Popen, call, PIPE +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(): - call(['kinit', '-k', 'daemon/%s' % config.web.hostname]) + 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', - '/usr/share/invirt-vnc-client/VncViewer.jar') + jarfile) - temp_dir = tempfile.mkdtemp() 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) - cert.wait() - call(['keytool', '-import', '-noprompt', '-alias', host.hostname, - '-keystore', keystore, '-storepass', 'foobar'], - stdin=cert.stdout) + check_wait(cert) + check_call(['keytool', '-import', '-noprompt', '-alias', host.hostname, + '-keystore', keystore, '-storepass', 'foobar'], + stdin=cert.stdout) - call(['jar', 'uf', '/usr/share/invirt-vnc-client/VncViewer.jar', - '-C', temp_dir, 'trust.store']) + check_call(['jar', 'uf', jarfile, + '-C', temp_dir, 'trust.store']) + + shutil.move(jarfile, '/usr/share/invirt-vnc-client/VncViewer.jar') shutil.rmtree(temp_dir)