[PATCH 3/4] Allow new KS commands to be created by Addons
Chris Lumens
clumens at redhat.com
Wed Mar 27 14:17:14 UTC 2013
> +class AddonCommand(object):
Just curious... why not subclass pykickstart.base.KickstartCommand?
> diff --git a/pyanaconda/kickstart.py b/pyanaconda/kickstart.py
> index 5ceaf19..b93be56 100644
> --- a/pyanaconda/kickstart.py
> +++ b/pyanaconda/kickstart.py
> @@ -1431,7 +1431,27 @@ class AnacondaKSHandler(superclass):
>
> classes = collect(module_name, path, lambda cls: issubclass(cls, self.AddonClassType))
> if classes:
> - addons[addon_id] = classes[0](name = addon_id)
> + addon_class = classes[0]
> +
> + # create data structure
> + addons[addon_id] = addon_class(name = addon_id)
> + for commandName, commandClass in addon_class.COMMAND_MAP.iteritems():
> + # check for conflicts
> + if commandName in self.commands:
> + raise KeyError("Trying to override kickstart command %s" % commandName)
> +
> + # register all commands
> + cmdObj = commandClass(commandName = commandName, data = addons[addon_id])
> + self.commands[commandName] = cmdObj
> +
> + # Also, add the object into the _writeOrder dict in the right place.
> + if cmdObj.writePriority is not None:
> + if not self._writeOrder.has_key(cmdObj.writePriority):
> + self._writeOrder[cmdObj.writePriority] = [cmdObj]
> + else:
> + self._writeOrder[cmdObj.writePriority].append(cmdObj)
> +
> +
>
> # Prepare the structure to track configured spokes
> self.configured_spokes = SpokeRegistry()
And then here, it seems like an awful lot of duplication of what
pykickstart is already doing. You could build up a dict and pass it to
_registerCommands, or at least use _setCommand. You don't know what
else I'll need to do in pykickstart in the future.
- Chris
More information about the anaconda-patches
mailing list