summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog10
-rw-r--r--kickstart.py21
-rw-r--r--kickstartData.py7
-rw-r--r--kickstartParser.py32
4 files changed, 56 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog
index c07f37b34..ca8af9717 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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):