diff options
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | kickstart.py | 21 | ||||
-rw-r--r-- | kickstartData.py | 7 | ||||
-rw-r--r-- | kickstartParser.py | 32 |
4 files changed, 56 insertions, 14 deletions
@@ -1,3 +1,13 @@ +2005-09-27 Chris Lumens <clumens@redhat.com> + + * kickstart.py: Use AnacondaKSScript instead of Script class. + Override KickstartParser.addScript so we have the run method. + * kickstartData.py: Reorganize. Remove duplicate information. + * kickstartParser.py: Added a method to Script to print out the + script in a form suitable for printing to a kickstart file. Fix + setattr on current ks command. Prefix "ksdata" with "self." where it + was missing. Fix check for chroot script option. + 2005-09-24 Jeremy Katz <katzj@redhat.com> * anaconda.spec: Bump version. diff --git a/kickstart.py b/kickstart.py index d43a80dce..8f5cd2f3c 100644 --- a/kickstart.py +++ b/kickstart.py @@ -566,8 +566,9 @@ class KickstartPreParser(KickstartParser): def addScript (self, state, script): if state == STATE_PRE: - s = Script (script["body"], script["interp"], script["chroot"], - script["log"], script["errorOnFail"]) + s = AnacondaKSScript (script["body"], script["interp"], + script["chroot"], script["log"], + script["errorOnFail"]) self.ksdata.preScripts.append(s) def addPackages (self, line): @@ -601,6 +602,22 @@ class AnacondaKSParser(KickstartParser): self.id = id KickstartParser.__init__(self, ksdata, kshandlers) + def addScript (self, state, script): + if script["body"].strip() == "": + return + + s = AnacondaKSScript (script["body"], script["interp"], + script["chroot"], script["log"], + script["errorOnFail"]) + log.info("adding script: %s" % s) + + if state == STATE_PRE: + self.ksdata.preScripts.append(s) + elif state == STATE_POST: + self.ksdata.postScripts.append(s) + elif state == STATE_TRACEBACK: + self.ksdata.tracebackScripts.append(s) + def handleCommand (self, cmd, args): if not self.handler: return diff --git a/kickstartData.py b/kickstartData.py index 16144077b..a3421925f 100644 --- a/kickstartData.py +++ b/kickstartData.py @@ -31,13 +31,12 @@ class KickstartData: "password": "", "upgrade": False} self.clearpart = {"drives": [], "initAll": False, "type": CLEARPART_TYPE_NONE} - self.displayMode = DISPLAY_MODE_GRAPHICAL - self.firewall = {"enabled": True, "ports": [], "trusts": []} - self.firstboot = FIRSTBOOT_SKIP self.device = "" self.deviceprobe = "" - self.displayMode = True + self.displayMode = DISPLAY_MODE_GRAPHICAL self.driverdisk = "" + self.firewall = {"enabled": True, "ports": [], "trusts": []} + self.firstboot = FIRSTBOOT_SKIP self.ignoredisk = [] self.interactive = False self.keyboard = "" diff --git a/kickstartParser.py b/kickstartParser.py index e6d7c0474..cdc68a261 100644 --- a/kickstartParser.py +++ b/kickstartParser.py @@ -142,6 +142,22 @@ class Script: self.logfile = logfile self.errorOnFail = errorOnFail + # Produce a string representation of the script suitable for writing + # to a kickstart file. Add this to the end of the %whatever header. + def write(self): + str = "" + if self.interp != "/bin/sh": + str = str + " --interp %s" % self.interp + if not self.inChroot: + str = str + " --nochroot" + if self.logfile != None: + str = str + " --logfile %s" % self.logfile + if self.errorOnFail: + str = str + " --erroronfail" + + str = str + "\n%s" % self.script + return str + # You may make a subclass of KickstartHandlers if you need to do something # besides just build up the data store. If you need to do additional processing # just make a subclass, define handlers for each command in your subclass, and @@ -723,7 +739,7 @@ class KickstartParser: raise KickstartParseError, (cmd + " " + string.join (args)) else: if self.handler.handlers[cmd] != None: - self.handler.setattr("currentCmd", cmd) + setattr(self.handler, "currentCmd", cmd) self.handler.handlers[cmd](args) def handlePackageHdr (self, args): @@ -737,12 +753,12 @@ class KickstartParser: (opts, extra) = op.parse_args(args=args[1:]) - ksdata.excludeDocs = opts.excludedocs - ksdata.addBase = not opts.nobase + self.ksdata.excludeDocs = opts.excludedocs + self.ksdata.addBase = not opts.nobase if opts.ignoremissing: - ksdata.handleMissing = KS_MISSING_IGNORE + self.ksdata.handleMissing = KS_MISSING_IGNORE else: - ksdata.handleMissing = KS_MISSING_PROMPT + self.ksdata.handleMissing = KS_MISSING_PROMPT def handleScriptHdr (self, args, script): op = KSOptionParser() @@ -752,9 +768,9 @@ class KickstartParser: op.add_option("--log", "--logfile", dest="log") if args[0] == "%pre" or args[0] == "%traceback": - script["chroot"] = 0 + script["chroot"] = False elif args[0] == "%post": - script["chroot"] = 1 + script["chroot"] = True op.add_option("--nochroot", dest="nochroot", action="store_true", default=False) @@ -763,7 +779,7 @@ class KickstartParser: script["interp"] = opts.interpreter script["log"] = opts.log script["errorOnFail"] = opts.errorOnFail - if opts.nochroot: + if hasattr(opts, "nochroot"): script["chroot"] = opts.nochroot def readKickstart (self, file, state=STATE_COMMANDS): |