1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
# TargetNonInteractive.py
#
# abstraction for non-interactive backends (like chroot, qemu)
#
from DistUpgradeConfigParser import DistUpgradeConfig
import ConfigParser
import os
import os.path
# refactor the code so that we have
# UpgradeTest - the controler object
# UpgradeTestImage - abstraction for chroot/qemu/xen
class UpgradeTestImage(object):
def runInTarget(self, command):
pass
def copyToImage(self, fromFile, toFile):
pass
def copyFromImage(self, fromFile, toFile):
pass
def bootstrap(self):
pass
def start(self):
pass
def stop(self):
pass
class UpgradeTestBackend(object):
""" This is a abstrace interface that all backends (chroot, qemu)
should implement - very basic currently :)
"""
apt_options = ["-y","--allow-unauthenticated"]
def __init__(self, profile, basefiledir):
" init the backend with the given profile "
# init the dirs
assert(profile != None)
self.resultdir = os.path.abspath(os.path.join(os.path.dirname(profile),"result"))
self.basefilesdir = os.path.abspath(basefiledir)
# init the rest
if os.path.exists(profile):
self.profile = os.path.abspath(profile)
self.config = DistUpgradeConfig(datadir=os.path.dirname(profile),
name=os.path.basename(profile))
else:
raise IOError, "Can't find profile '%s' (%s) " % (profile, os.getcwd())
self.fromDist = self.config.get("Sources","From")
if self.config.has_option("NonInteractive","Proxy"):
proxy=self.config.get("NonInteractive","Proxy")
os.putenv("http_proxy",proxy)
os.putenv("DEBIAN_FRONTEND","noninteractive")
self.cachedir = None
try:
self.cachedir = self.config.get("NonInteractive","CacheDebs")
except ConfigParser.NoOptionError:
pass
# init a sensible environment (to ensure proper operation if
# run from cron)
os.environ["PATH"] = "/usr/sbin:/usr/bin:/sbin:/bin"
def bootstrap(self):
" bootstaps a pristine install"
pass
def upgrade(self):
" upgrade a given install "
pass
def test(self):
" test if the upgrade was successful "
pass
|