> the attached patch adds new option to the > upgrade command in kickstart. > > upgrade [--root-device=/dev/sda2] > > The purpose is to be able to automatically upgrade systems that are dual boot. > Specifying which is the root device makes upgrades more flexible. > > More info is available at anaconda-devel-list: > https://www.redhat.com/archives/anaconda-devel-list/2008-December/msg00162.html Note that we do actually have a bug number for this - 471232. > diff --git a/pykickstart/commands/upgrade.py b/pykickstart/commands/upgrade.py > index b7dba86..8510fbe 100644 > --- a/pykickstart/commands/upgrade.py > +++ b/pykickstart/commands/upgrade.py > @@ -30,20 +30,37 @@ class FC3_Upgrade(KickstartCommand): > > def __init__(self, writePriority=0, *args, **kwargs): > KickstartCommand.__init__(self, writePriority, *args, **kwargs) > + self.op = self._getParser() > + > self.upgrade = kwargs.get("upgrade", None) > + self.root_device = kwargs.get("root_device", None) > > def __str__(self): > if self.upgrade is None: > - return "" > + retval="" > > if self.upgrade: > - return "# Upgrade existing installation\nupgrade\n" > + if (self.root_device is not None): > + retval="# Upgrade existing installation\nupgrade --root-device=%s\n" % self.root_device > + else: > + retval="# Upgrade existing installation\nupgrade\n" > else: > - return "# Install OS instead of upgrade\ninstall\n" > + retval="# Install OS instead of upgrade\ninstall\n" > + > + return retval > + > + def _getParser(self): > + op = KSOptionParser(lineno=self.lineno) > + op.add_option("--root-device", dest="root_device") > + return op > > def parse(self, args): > - if len(args) > 0: > - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s does not take any arguments") % "upgrade") > + (opts, extra) = self.op.parse_args(args=args) > + > + if (opts.root_device is not None) and (opts.root_device == ""): > + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s does not accept empty parameter %s") % ("upgrade", "--root-device")) > + else: > + self.root_device = opts.root_device > > if self.currentCmd == "upgrade": > self.upgrade = True > Thanks for fetching pykickstart first and following all my recent stylistic changes (like the kwargs.get stuff)! However, you don't want to add this option to FC3_Upgrade. You'll want to make a new F11_Upgrade object that inherits from FC3_Upgrade, then modify the appropriate commandMap entry in handlers/control.py to reference the F11_Upgrade object. Then the F11_Upgrade class gets the new option and the FC3_Upgrade class goes untouched. Before you can do that, I will need to add support for F11 throughout, which will only take a second. I'll do that just as soon as I send this mail. Aside from that one comment, I'm happy with the name of the parameter and how you've implemented it. I'm sure a second run of the patch with the new class will be fine. - Chris _______________________________________________ Kickstart-list mailing list Kickstart-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/kickstart-list