summaryrefslogtreecommitdiffstats
path: root/python/run-bindtests
diff options
context:
space:
mode:
authorHilko Bengen <bengen@hilluzination.de>2012-01-21 22:56:51 +0100
committerRichard W.M. Jones <rjones@redhat.com>2012-01-23 09:08:33 +0000
commitb6e0552ee5359da785bd1c08cadf022190e98720 (patch)
treedc27506bf79b6fb19f1d6aba1fda8087306416b3 /python/run-bindtests
parent7004fafc6989efbbb1ef46723e8a91f936f16249 (diff)
Do not run appliance-related checks if not building appliance
Diffstat (limited to 'python/run-bindtests')
0 files changed, 0 insertions, 0 deletions
137' href='#n137'>137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
#
# cmdline.py - non-interactive, very very simple frontend to anaconda
#
# Jeremy Katz <katzj@redhat.com
#
# Copyright 2003 Red Hat, Inc.
#
# This software may be freely redistributed under the terms of the GNU
# general public license.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#

import sys, os
import isys, iutil
import time
import signal
import parted, rpm
from constants import *
from flags import flags

from rhpl.translate import _, cat, N_

import logging
log = logging.getLogger("anaconda")

stepToClasses = { "install" : "setupProgressDisplay" }

class WaitWindow:
    def pop(self):
        pass

    def __init__(self, title, text):
        print text

class ProgressWindow:
    def pop(self):
        print ""

    def set(self, amount):
        if amount == self.total:
            print _("Completed"),

    def refresh(self):
        pass

    def __init__(self, title, text, total, updpct = 0.05):
        self.total = total
        print text
        print _("In progress...   "),

class InstallInterface:
    def __init__(self):
#        signal.signal(signal.SIGINT, signal.SIG_IGN)
        signal.signal(signal.SIGTSTP, signal.SIG_DFL)

    def __del__(self):
        pass

    def shutdown(self):
        pass

    def suspend(self):
        pass

    def resume(self):
        pass

    def getInstallKey(self, *args):
        print _("Can't have a question in command line mode!")
        while 1:
            time.sleep(5)

    def getLuksPassphrase(self, *args):
        print _("Can't have a question in command line mode!")
        while 1:
            time.sleep(5)

    def progressWindow(self, title, text, total, updpct = 0.05):
        return ProgressWindow(title, text, total, updpct)

    def kickstartErrorWindow(self, text):
        s = _("The following error was found while parsing your "
              "kickstart configuration:\n\n%s") %(text,)
        print s

        while 1:
            time.sleep(5)
        
    def messageWindow(self, title, text, type="ok", default = None,
                      custom_icon = None, custom_buttons = []):
        if type == "ok":
            print text
        else:
            print _("Can't have a question in command line mode!")
            print title
            print text
            print type, custom_buttons

            # don't exit
            while 1:
                time.sleep(5)

    def exceptionWindow(self, shortText, longTextFile):
        print shortText

    def partedExceptionWindow(self, exc):
        # if our only option is to cancel, let us handle the exception
        # in our code and avoid popping up the exception window here.
        log.critical("parted exception: %s: %s" %(exc.type_string,exc.message))
        if exc.options == parted.EXCEPTION_CANCEL:
            return parted.EXCEPTION_UNHANDLED

        print _("Parted exceptions can't be handled in command line mode!")
        print exc.message

        # don't exit
        while 1:
            time.sleep(5)

    def waitWindow(self, title, text):
        return WaitWindow(title, text)

    def beep(self):
        pass

    def run(self, anaconda):
        anaconda.id.fsset.registerMessageWindow(self.messageWindow)
        anaconda.id.fsset.registerProgressWindow(self.progressWindow)
        anaconda.id.fsset.registerWaitWindow(self.waitWindow)        
        parted.exception_set_handler(self.partedExceptionWindow)        

        (step, instance) = anaconda.dispatch.currentStep()
        while step:
            if stepToClasses.has_key(step):
                s = "nextWin = %s" %(stepToClasses[step],)
                exec s
                nextWin(instance)
            else:
                print "In interactive step %s, can't continue" %(step,)
                while 1:
                    time.sleep(1)

            anaconda.dispatch.gotoNext()
	    (step, instance) = anaconda.dispatch.currentStep()
            

class progressDisplay:
    def __init__(self):
        pass

    def __del__(self):
        pass

    def completePackage(self, hdr, timer):
        self.numComplete = self.numComplete + 1
	self.sizeComplete = self.sizeComplete + (hdr[rpm.RPMTAG_SIZE] / 1024)

        print _("Done [%d/%d]" %(self.numComplete, self.total))

    def setPackageScale(self, amount, total):
        pass

    def setPackage(self, hdr):
        print _("Installing %s-%s-%s... ") %(hdr[rpm.RPMTAG_NAME],
                                             hdr[rpm.RPMTAG_VERSION],
                                             hdr[rpm.RPMTAG_RELEASE]),

    def processEvents(self):
        pass

    def setSizes(self, total, totalSize, totalFiles):
        self.total = total
        self.totalSize = totalSize
        self.numComplete = 0
        self.sizeComplete = 0

    def setPackageStatus(self, state, amount):
        if state != "downloading":
            print state


def setupProgressDisplay(anaconda):
    if anaconda.dir == DISPATCH_BACK:
        anaconda.id.setInstallProgressClass(None)
        return DISPATCH_BACK
    else:
        anaconda.id.setInstallProgressClass(progressDisplay())
        
    return DISPATCH_FORWARD