diff options
author | Chris Lumens <clumens@redhat.com> | 2005-09-06 21:49:09 +0000 |
---|---|---|
committer | Chris Lumens <clumens@redhat.com> | 2005-09-06 21:49:09 +0000 |
commit | 4998da58de4c1082c10c27da62cf742baed64ea4 (patch) | |
tree | f648bd4bf73a97eec7ad2657da76c6293d4201f8 /kickstartParser.py | |
parent | 9f138e82e4e051e1936191287b45eece50332ae7 (diff) | |
download | anaconda-4998da58de4c1082c10c27da62cf742baed64ea4.tar.gz anaconda-4998da58de4c1082c10c27da62cf742baed64ea4.tar.xz anaconda-4998da58de4c1082c10c27da62cf742baed64ea4.zip |
Runtime error fixes. Allow KickstartParser to not take a handlers object
(useful for the %pre only parser). Don't catch exceptions in
handleCommand so we get useful debugging messages.
Diffstat (limited to 'kickstartParser.py')
-rw-r--r-- | kickstartParser.py | 42 |
1 files changed, 24 insertions, 18 deletions
diff --git a/kickstartParser.py b/kickstartParser.py index 246482c7a..a821d3863 100644 --- a/kickstartParser.py +++ b/kickstartParser.py @@ -30,6 +30,14 @@ STATE_TRACEBACK = 6 KS_MISSING_PROMPT = 0 KS_MISSING_IGNORE = 1 +CLEARPART_TYPE_LINUX = 1 +CLEARPART_TYPE_ALL = 2 +CLEARPART_TYPE_NONE = 3 + +FIRSTBOOT_DEFAULT = 0 +FIRSTBOOT_SKIP = 1 +FIRSTBOOT_RECONFIG = 2 + class KickstartError(Exception): def __init__(self, val = ""): self.value = val @@ -258,7 +266,7 @@ class KickstartHandlers: op = KSOptionParser() op.add_option("--all", dest="type", action="store_const", const=CLEARPART_TYPE_ALL) - op.add_option("--drives", dest="drives", action=callback, + op.add_option("--drives", dest="drives", action="callback", callback=drive_cb, nargs=1, type="string") op.add_option("--initlabel", dest="initAll", action="store_true", default=False) @@ -444,8 +452,8 @@ class KickstartHandlers: op.add_option("--noformat", dest="format", action="store_false", default=True) op.add_option("--onbiosdisk", dest="onbiosdisk", default="") - op.add_option("--ondisk", "--ondrive", dest="onPart") - op.add_option("--onpart", "--usepart", dest="disk", action="callback", + op.add_option("--ondisk", "--ondrive", dest="disk") + op.add_option("--onpart", "--usepart", dest="onPart", action="callback", callback=part_cb, nargs=1, type="string") op.add_option("--recommended", dest="recommended", action="store_true", default=False) @@ -640,13 +648,12 @@ class KickstartHandlers: # of this and override the methods you care about. Methods that don't need to # do anything may just pass. See KickstartPreParser below for an example of # a parser that only cares about the %pre scripts. +# +# Passing None for kshandlers is valid just in case you don't care about +# handling any commands. class KickstartParser: - def __init__ (self, ksdata, kshandlers=None): - if not kshandlers: - self.handler = KickstartHandlers(ksdata) - else: - self.handler = kshandlers - + def __init__ (self, ksdata, kshandlers): + self.handler = kshandlers self.ksdata = ksdata self.followIncludes = True @@ -678,11 +685,14 @@ class KickstartParser: self.ksdata.packageList.append(line.lstrip()) def handleCommand (self, cmd, args): - try: + if not self.handler: + return + + if not self.handler.handlers.has_key(cmd): + raise KickstartError, "Unrecognized kickstart command: %s" % cmd + else: if self.handler.handlers[cmd] != None: self.handler.handlers[cmd](args) - except KeyError: - raise KickstartError, "Unrecognized kickstart command: %s" % cmd def handlePackageHdr (self, args): op = KSOptionParser() @@ -811,12 +821,8 @@ class KickstartParser: state = STATE_COMMANDS class KickstartPreParser(KickstartParser): - def __init__ (self, ksdata, kshandlers=None): - if not kshandlers: - self.handler = KickstartHandlers(ksdata) - else: - self.handler = kshandlers - + def __init__ (self, ksdata, kshandlers): + self.handler = kshandlers KickstartParser.__init__(self, ksdata, kshandlers) self.followIncludes = False |