From 4e706695a3bce2ff5cc2010a2a496d7b403bdd15 Mon Sep 17 00:00:00 2001 From: Evan Broder Date: Tue, 11 Nov 2008 03:50:13 -0500 Subject: [PATCH 1/1] Move the remctl code into invirt.remctl svn path=/trunk/packages/invirt-base/; revision=1613 --- debian/changelog | 3 ++- python/invirt/remctl.py | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 python/invirt/remctl.py diff --git a/debian/changelog b/debian/changelog index 7082585..314f13b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,9 @@ invirt-base (0.0.9) unstable; urgency=low * Move useful Python exceptions into invirt.common + * Move the remctl code out of the website and into invirt-base - -- Evan Broder Tue, 11 Nov 2008 00:32:19 -0500 + -- Evan Broder Tue, 11 Nov 2008 01:14:42 -0500 invirt-base (0.0.8) unstable; urgency=low diff --git a/python/invirt/remctl.py b/python/invirt/remctl.py new file mode 100644 index 0000000..8f93984 --- /dev/null +++ b/python/invirt/remctl.py @@ -0,0 +1,40 @@ +""" +Functions to perform remctls. +""" + +from invirt.common import CodeError +import subprocess + +def kinit(): + """Kinit with a given username and keytab""" + p = subprocess.Popen(['kinit', "-k", "-t", '/etc/invirt/keytab', + 'daemon/'+config.web.hostname], + stderr=subprocess.PIPE) + e = p.wait() + if e: + raise CodeError("Error %s in kinit: %s" % (e, p.stderr.read())) + +def checkKinit(): + """If we lack tickets, kinit.""" + p = subprocess.Popen(['klist', '-s']) + if p.wait(): + kinit() + +def remctl(*args, **kws): + """Perform a remctl and return the output. + + kinits if necessary, and outputs errors to stderr. + """ + checkKinit() + p = subprocess.Popen(['remctl', config.remote.hostname] + + list(args), + stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + v = p.wait() + if kws.get('err'): + return p.stdout.read(), p.stderr.read() + if v: + print >> sys.stderr, 'Error', v, 'on remctl', args, ':' + print >> sys.stderr, p.stderr.read() + raise CodeError('ERROR on remctl') + return p.stdout.read() -- 1.7.9.5