-"""
-Functions to perform remctls.
-"""
-
import validation
from invirt.common import CodeError, InvalidInput
import random
-import subprocess
import sys
import time
import re
from invirt.config import structs as config
from invirt.database import Machine, Disk, Type, NIC, CDROM, session, meta
+from invirt.remctl import remctl
# ... and stolen from xend/uuid.py
def randomUUID():
"%02x" * 6]) % tuple(u)
# end stolen code
-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()
-
def lvcreate(machine, disk):
"""Create a single disk for a machine"""
remctl('web', 'lvcreate', machine.name,
from invirt.database import Machine, CDROM, session, connect, MachineAccess, Type, Autoinstall
from invirt.config import structs as config
from invirt.common import InvalidInput, CodeError
+from invirt.remctl import remctl
def pathSplit(path):
if path.startswith('/'):