From: JF Ding Date: Fri, 19 Aug 2011 13:28:35 +0000 (+0800) Subject: change the path of pykickstart module X-Git-Tag: 0.1~186 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a17b93a28cecb150c48796799a00ad8ba5bdeca0;p=tools%2Fmic.git change the path of pykickstart module --- diff --git a/mic/__init__.py b/mic/__init__.py index e69de29..92649b9 100644 --- a/mic/__init__.py +++ b/mic/__init__.py @@ -0,0 +1,3 @@ +import os, sys + +sys.path.insert(0, os.path.dirname(__file__) or '.') diff --git a/mic/configmgr.py b/mic/configmgr.py index 717a755..1ba75e2 100644 --- a/mic/configmgr.py +++ b/mic/configmgr.py @@ -22,6 +22,7 @@ import logging import ConfigParser import mic.utils as utils import mic.utils.errors as errors +from mic import kickstart from mic import msger DEFAULT_GSITECONF='/etc/mic/mic.conf' @@ -75,7 +76,6 @@ class ConfigMgr(object): def __set_ksconf(self, ksconf): self.ksconf = ksconf self.parse_kickstart(ksconf) - pass def __get_ksconf(self): return self.ksconf _ksconf = property(__get_ksconf, __set_ksconf) @@ -111,17 +111,17 @@ class ConfigMgr(object): return try: - kickstart = utils.kickstart.read_kickstart(ksconf) - ksrepos = utils.misc.get_repostrs_from_ks(kickstart) + ks = kickstart.read_kickstart(ksconf) + ksrepos = utils.misc.get_repostrs_from_ks(ks) msger.info("Retrieving repo metadata:") repometadata = utils.misc.get_metadata_from_repos(ksrepos, self.create['cachedir']) - msger.info("\nDONE") + msger.raw(" DONE") - self.create['ks'] = kickstart + self.create['ks'] = ks self.create['repomd'] = repometadata self.create['name'] = os.path.splitext(os.path.basename(ksconf))[0] except Exception, e: - raise errors.KickstartError("Unable to load kickstart file '%s': %s" % (ksconf, e)) + raise errors.KsError("Unable to load kickstart file '%s': %s" % (ksconf, e)) def setProperty(self, key, value): if not hasattr(self, key): diff --git a/mic/imager/baseimager.py b/mic/imager/baseimager.py index 4089d10..a4fab4a 100644 --- a/mic/imager/baseimager.py +++ b/mic/imager/baseimager.py @@ -139,8 +139,8 @@ class BaseImageCreator(object): vdso_value = vdso_fh.read().strip() vdso_fh.close() if (int)(vdso_value) == 1: - msger.warning("vdso is enabled on your host, which might cause problems with arm emulations.\n" + - "\tYou can disable vdso with following command before starting image build:\n" + + msger.warning("vdso is enabled on your host, which might cause problems with arm emulations.\n" + "\tYou can disable vdso with following command before starting image build:\n" "\techo 0 | sudo tee /proc/sys/vm/vdso_enabled") return True diff --git a/mic/imager/loop.py b/mic/imager/loop.py index bd584fa..c3e111d 100644 --- a/mic/imager/loop.py +++ b/mic/imager/loop.py @@ -17,13 +17,12 @@ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. import os -import os.path import subprocess -import mic.kickstart as kickstart from baseimager import BaseImageCreator from mic.utils.errors import * from mic.utils.fs_related import * from mic.utils.misc import * +from mic import kickstart FSLABEL_MAXLEN = 32 """The maximum string length supported for LoopImageCreator.fslabel.""" diff --git a/mic/kickstart/__init__.py b/mic/kickstart/__init__.py index 8e28003..9055f80 100644 --- a/mic/kickstart/__init__.py +++ b/mic/kickstart/__init__.py @@ -28,9 +28,6 @@ from mic.utils import misc from mic.utils import fs_related as fs from mic import msger -sys.path.insert(0, os.path.dirname(__file__) or '.') -import pykickstart - import pykickstart.commands as kscommands import pykickstart.constants as ksconstants import pykickstart.errors as kserrors @@ -72,11 +69,11 @@ def read_kickstart(path): try: ks.readKickstart(path) except IOError, (err, msg): - raise errors.KickstartError("Failed to read kickstart file " - "'%s' : %s" % (path, msg)) - except kserrors.KickstartError, e: - raise errors.KickstartError("Failed to parse kickstart file " - "'%s' : %s" % (path, e)) + raise errors.KsError("Failed to read kickstart file " + "'%s' : %s" % (path, msg)) + except kserrors.KickstartParseError, e: + raise errors.KsError("Failed to parse kickstart file " + "'%s' : %s" % (path, e)) return ks def build_name(kscfg, prefix = None, suffix = None, maxlen = None): @@ -136,7 +133,7 @@ class KickstartConfig(object): def call(self, args): if not os.path.exists("%s/%s" %(self.instroot, args[0])): msger.warning("%s/%s" %(self.instroot, args[0])) - raise errors.KickstartError("Unable to run %s!" %(args)) + raise errors.KsError("Unable to run %s!" %(args)) subprocess.call(args, preexec_fn = self.chroot) def apply(self): @@ -179,7 +176,7 @@ class TimezoneConfig(KickstartConfig): shutil.copyfile(self.path("/usr/share/zoneinfo/%s" %(tz,)), self.path("/etc/localtime")) except (IOError, OSError), (errno, msg): - raise errors.KickstartError("Error copying timezone info: %s" %(msg,)) + raise errors.KsError("Error copying timezone info: %s" %(msg,)) class AuthConfig(KickstartConfig): @@ -216,7 +213,7 @@ class RootPasswordConfig(KickstartConfig): def set_unencrypted(self, password): for p in ("/bin/echo", "/usr/sbin/chpasswd"): if not os.path.exists("%s/%s" %(self.instroot, p)): - raise errors.KickstartError("Unable to set unencrypted password due to lack of %s" % p) + raise errors.KsError("Unable to set unencrypted password due to lack of %s" % p) p1 = subprocess.Popen(["/bin/echo", "root:%s" %password], stdout = subprocess.PIPE, @@ -245,7 +242,7 @@ class UserConfig(KickstartConfig): def set_unencrypted_passwd(self, user, password): for p in ("/bin/echo", "/usr/sbin/chpasswd"): if not os.path.exists("%s/%s" %(self.instroot, p)): - raise errors.KickstartError("Unable to set unencrypted password due to lack of %s" % p) + raise errors.KsError("Unable to set unencrypted password due to lack of %s" % p) p1 = subprocess.Popen(["/bin/echo", "%s:%s" %(user, password)], stdout = subprocess.PIPE, @@ -276,7 +273,7 @@ class UserConfig(KickstartConfig): else: self.set_empty_passwd(userconfig.name) else: - raise errors.KickstartError("Invalid kickstart command: %s" % userconfig.__str__()) + raise errors.KsError("Invalid kickstart command: %s" % userconfig.__str__()) def apply(self, user): for userconfig in user.userList: @@ -559,12 +556,12 @@ class NetworkConfig(KickstartConfig): for network in ksnet.network: if not network.device: - raise errors.KickstartError("No --device specified with " + raise errors.KsError("No --device specified with " "network kickstart command") if (network.onboot and network.bootProto.lower() != "dhcp" and not (network.ip and network.netmask)): - raise errors.KickstartError("No IP address and/or netmask " + raise errors.KsError("No IP address and/or netmask " "specified with static " "configuration for '%s'" % network.device) diff --git a/mic/kickstart/pykickstart/__init__.py b/mic/kickstart/pykickstart/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/mic/kickstart/pykickstart/base.py b/mic/kickstart/pykickstart/base.py deleted file mode 100644 index e6c8f56..0000000 --- a/mic/kickstart/pykickstart/base.py +++ /dev/null @@ -1,466 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2006, 2007, 2008 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -""" -Base classes for creating commands and syntax version object. - -This module exports several important base classes: - - BaseData - The base abstract class for all data objects. Data objects - are contained within a BaseHandler object. - - BaseHandler - The base abstract class from which versioned kickstart - handler are derived. Subclasses of BaseHandler hold - BaseData and KickstartCommand objects. - - DeprecatedCommand - An abstract subclass of KickstartCommand that should - be further subclassed by users of this module. When - a subclass is used, a warning message will be - printed. - - KickstartCommand - The base abstract class for all kickstart commands. - Command objects are contained within a BaseHandler - object. -""" -import gettext -gettext.textdomain("pykickstart") -_ = lambda x: gettext.ldgettext("pykickstart", x) - -import types -import warnings -from pykickstart.errors import * -from pykickstart.ko import * -from pykickstart.parser import Packages -from pykickstart.version import versionToString - -### -### COMMANDS -### -class KickstartCommand(KickstartObject): - """The base class for all kickstart commands. This is an abstract class.""" - removedKeywords = [] - removedAttrs = [] - - def __init__(self, writePriority=0, *args, **kwargs): - """Create a new KickstartCommand instance. This method must be - provided by all subclasses, but subclasses must call - KickstartCommand.__init__ first. Instance attributes: - - currentCmd -- The name of the command in the input file that - caused this handler to be run. - currentLine -- The current unprocessed line from the input file - that caused this handler to be run. - handler -- A reference to the BaseHandler subclass this - command is contained withing. This is needed to - allow referencing of Data objects. - lineno -- The current line number in the input file. - writePriority -- An integer specifying when this command should be - printed when iterating over all commands' __str__ - methods. The higher the number, the later this - command will be written. All commands with the - same priority will be written alphabetically. - """ - - # We don't want people using this class by itself. - if self.__class__ is KickstartCommand: - raise TypeError, "KickstartCommand is an abstract class." - - KickstartObject.__init__(self, *args, **kwargs) - - self.writePriority = writePriority - - # These will be set by the dispatcher. - self.currentCmd = "" - self.currentLine = "" - self.handler = None - self.lineno = 0 - - # If a subclass provides a removedKeywords list, remove all the - # members from the kwargs list before we start processing it. This - # ensures that subclasses don't continue to recognize arguments that - # were removed. - for arg in filter(kwargs.has_key, self.removedKeywords): - kwargs.pop(arg) - - def __call__(self, *args, **kwargs): - """Set multiple attributes on a subclass of KickstartCommand at once - via keyword arguments. Valid attributes are anything specified in - a subclass, but unknown attributes will be ignored. - """ - for (key, val) in kwargs.items(): - # Ignore setting attributes that were removed in a subclass, as - # if they were unknown attributes. - if key in self.removedAttrs: - continue - - if hasattr(self, key): - setattr(self, key, val) - - def __str__(self): - """Return a string formatted for output to a kickstart file. This - method must be provided by all subclasses. - """ - return KickstartObject.__str__(self) - - def parse(self, args): - """Parse the list of args and set data on the KickstartCommand object. - This method must be provided by all subclasses. - """ - raise TypeError, "parse() not implemented for KickstartCommand" - - def apply(self, instroot="/"): - """Write out the configuration related to the KickstartCommand object. - Subclasses which do not provide this method will not have their - configuration written out. - """ - return - - def dataList(self): - """For commands that can occur multiple times in a single kickstart - file (like network, part, etc.), return the list that we should - append more data objects to. - """ - return None - - def deleteRemovedAttrs(self): - """Remove all attributes from self that are given in the removedAttrs - list. This method should be called from __init__ in a subclass, - but only after the superclass's __init__ method has been called. - """ - for attr in filter(lambda k: hasattr(self, k), self.removedAttrs): - delattr(self, attr) - - # Set the contents of the opts object (an instance of optparse.Values - # returned by parse_args) as attributes on the KickstartCommand object. - # It's useful to call this from KickstartCommand subclasses after parsing - # the arguments. - def _setToSelf(self, optParser, opts): - self._setToObj(optParser, opts, self) - - # Sets the contents of the opts object (an instance of optparse.Values - # returned by parse_args) as attributes on the provided object obj. It's - # useful to call this from KickstartCommand subclasses that handle lists - # of objects (like partitions, network devices, etc.) and need to populate - # a Data object. - def _setToObj(self, optParser, opts, obj): - for key in filter (lambda k: getattr(opts, k) != None, optParser.keys()): - setattr(obj, key, getattr(opts, key)) - -class DeprecatedCommand(KickstartCommand): - """Specify that a command is deprecated and no longer has any function. - Any command that is deprecated should be subclassed from this class, - only specifying an __init__ method that calls the superclass's __init__. - This is an abstract class. - """ - def __init__(self, writePriority=None, *args, **kwargs): - # We don't want people using this class by itself. - if self.__class__ is KickstartCommand: - raise TypeError, "DeprecatedCommand is an abstract class." - - # Create a new DeprecatedCommand instance. - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - - def __str__(self): - """Placeholder since DeprecatedCommands don't work anymore.""" - return "" - - def parse(self, args): - """Print a warning message if the command is seen in the input file.""" - mapping = {"lineno": self.lineno, "cmd": self.currentCmd} - warnings.warn(_("Ignoring deprecated command on line %(lineno)s: The %(cmd)s command has been deprecated and no longer has any effect. It may be removed from future releases, which will result in a fatal error from kickstart. Please modify your kickstart file to remove this command.") % mapping, DeprecationWarning) - - -### -### HANDLERS -### -class BaseHandler(KickstartObject): - """Each version of kickstart syntax is provided by a subclass of this - class. These subclasses are what users will interact with for parsing, - extracting data, and writing out kickstart files. This is an abstract - class. - - version -- The version this syntax handler supports. This is set by - a class attribute of a BaseHandler subclass and is used to - set up the command dict. It is for read-only use. - """ - version = None - - def __init__(self, mapping=None, dataMapping=None, commandUpdates=None, - dataUpdates=None, *args, **kwargs): - """Create a new BaseHandler instance. This method must be provided by - all subclasses, but subclasses must call BaseHandler.__init__ first. - - mapping -- A custom map from command strings to classes, - useful when creating your own handler with - special command objects. It is otherwise unused - and rarely needed. If you give this argument, - the mapping takes the place of the default one - and so must include all commands you want - recognized. - dataMapping -- This is the same as mapping, but for data - objects. All the same comments apply. - commandUpdates -- This is similar to mapping, but does not take - the place of the defaults entirely. Instead, - this mapping is applied after the defaults and - updates it with just the commands you want to - modify. - dataUpdates -- This is the same as commandUpdates, but for - data objects. - - - Instance attributes: - - commands -- A mapping from a string command to a KickstartCommand - subclass object that handles it. Multiple strings can - map to the same object, but only one instance of the - command object should ever exist. Most users should - never have to deal with this directly, as it is - manipulated internally and called through dispatcher. - currentLine -- The current unprocessed line from the input file - that caused this handler to be run. - packages -- An instance of pykickstart.parser.Packages which - describes the packages section of the input file. - platform -- A string describing the hardware platform, which is - needed only by system-config-kickstart. - scripts -- A list of pykickstart.parser.Script instances, which is - populated by KickstartParser.addScript and describes the - %pre/%post/%traceback script section of the input file. - """ - - # We don't want people using this class by itself. - if self.__class__ is BaseHandler: - raise TypeError, "BaseHandler is an abstract class." - - KickstartObject.__init__(self, *args, **kwargs) - - # This isn't really a good place for these, but it's better than - # everything else I can think of. - self.scripts = [] - self.packages = Packages() - self.platform = "" - - # These will be set by the dispatcher. - self.commands = {} - self.currentLine = 0 - - # A dict keyed by an integer priority number, with each value being a - # list of KickstartCommand subclasses. This dict is maintained by - # registerCommand and used in __str__. No one else should be touching - # it. - self._writeOrder = {} - - self._registerCommands(mapping, dataMapping, commandUpdates, dataUpdates) - - def __str__(self): - """Return a string formatted for output to a kickstart file.""" - retval = "" - - if self.platform != "": - retval += "#platform=%s\n" % self.platform - - retval += "#version=%s\n" % versionToString(self.version) - - lst = self._writeOrder.keys() - lst.sort() - - for prio in lst: - for obj in self._writeOrder[prio]: - retval += obj.__str__() - - for script in self.scripts: - retval += script.__str__() - - retval += self.packages.__str__() - - return retval - - def _insertSorted(self, lst, obj): - length = len(lst) - i = 0 - - while i < length: - # If the two classes have the same name, it's because we are - # overriding an existing class with one from a later kickstart - # version, so remove the old one in favor of the new one. - if obj.__class__.__name__ > lst[i].__class__.__name__: - i += 1 - elif obj.__class__.__name__ == lst[i].__class__.__name__: - lst[i] = obj - return - elif obj.__class__.__name__ < lst[i].__class__.__name__: - break - - if i >= length: - lst.append(obj) - else: - lst.insert(i, obj) - - def _setCommand(self, cmdObj): - # Add an attribute on this version object. We need this to provide a - # way for clients to access the command objects. We also need to strip - # off the version part from the front of the name. - if cmdObj.__class__.__name__.find("_") != -1: - name = unicode(cmdObj.__class__.__name__.split("_", 1)[1]) - else: - name = unicode(cmdObj.__class__.__name__).lower() - - setattr(self, name.lower(), cmdObj) - - # Also, add the object into the _writeOrder dict in the right place. - if cmdObj.writePriority is not None: - if self._writeOrder.has_key(cmdObj.writePriority): - self._insertSorted(self._writeOrder[cmdObj.writePriority], cmdObj) - else: - self._writeOrder[cmdObj.writePriority] = [cmdObj] - - def _registerCommands(self, mapping=None, dataMapping=None, commandUpdates=None, - dataUpdates=None): - if mapping == {} or mapping == None: - from pykickstart.handlers.control import commandMap - cMap = commandMap[self.version] - else: - cMap = mapping - - if dataMapping == {} or dataMapping == None: - from pykickstart.handlers.control import dataMap - dMap = dataMap[self.version] - else: - dMap = dataMapping - - if type(commandUpdates) == types.DictType: - cMap.update(commandUpdates) - - if type(dataUpdates) == types.DictType: - dMap.update(dataUpdates) - - for (cmdName, cmdClass) in cMap.iteritems(): - # First make sure we haven't instantiated this command handler - # already. If we have, we just need to make another mapping to - # it in self.commands. - cmdObj = None - - for (key, val) in self.commands.iteritems(): - if val.__class__.__name__ == cmdClass.__name__: - cmdObj = val - break - - # If we didn't find an instance in self.commands, create one now. - if cmdObj == None: - cmdObj = cmdClass() - self._setCommand(cmdObj) - - # Finally, add the mapping to the commands dict. - self.commands[cmdName] = cmdObj - self.commands[cmdName].handler = self - - # We also need to create attributes for the various data objects. - # No checks here because dMap is a bijection. At least, that's what - # the comment says. Hope no one screws that up. - for (dataName, dataClass) in dMap.iteritems(): - setattr(self, dataName, dataClass) - - def dispatcher(self, args, lineno): - """Call the appropriate KickstartCommand handler for the current line - in the kickstart file. A handler for the current command should - be registered, though a handler of None is not an error. Returns - the data object returned by KickstartCommand.parse. - - args -- A list of arguments to the current command - lineno -- The line number in the file, for error reporting - """ - cmd = args[0] - - if not self.commands.has_key(cmd): - raise KickstartParseError, formatErrorMsg(lineno, msg=_("Unknown command: %s" % cmd)) - elif self.commands[cmd] != None: - self.commands[cmd].currentCmd = cmd - self.commands[cmd].currentLine = self.currentLine - self.commands[cmd].lineno = lineno - - # The parser returns the data object that was modified. This could - # be a BaseData subclass that should be put into a list, or it - # could be the command handler object itself. - obj = self.commands[cmd].parse(args[1:]) - lst = self.commands[cmd].dataList() - if lst is not None: - lst.append(obj) - - return obj - - def maskAllExcept(self, lst): - """Set all entries in the commands dict to None, except the ones in - the lst. All other commands will not be processed. - """ - self._writeOrder = {} - - for (key, val) in self.commands.iteritems(): - if not key in lst: - self.commands[key] = None - - def hasCommand(self, cmd): - """Return true if there is a handler for the string cmd.""" - return hasattr(self, cmd) - - -### -### DATA -### -class BaseData(KickstartObject): - """The base class for all data objects. This is an abstract class.""" - removedKeywords = [] - removedAttrs = [] - - def __init__(self, *args, **kwargs): - """Create a new BaseData instance. - - lineno -- Line number in the ks-file where this object was defined - """ - - # We don't want people using this class by itself. - if self.__class__ is BaseData: - raise TypeError, "BaseData is an abstract class." - - KickstartObject.__init__(self, *args, **kwargs) - self.lineno = 0 - - def __str__(self): - """Return a string formatted for output to a kickstart file.""" - return "" - - def __call__(self, *args, **kwargs): - """Set multiple attributes on a subclass of BaseData at once via - keyword arguments. Valid attributes are anything specified in a - subclass, but unknown attributes will be ignored. - """ - for (key, val) in kwargs.items(): - # Ignore setting attributes that were removed in a subclass, as - # if they were unknown attributes. - if key in self.removedAttrs: - continue - - if hasattr(self, key): - setattr(self, key, val) - - def deleteRemovedAttrs(self): - """Remove all attributes from self that are given in the removedAttrs - list. This method should be called from __init__ in a subclass, - but only after the superclass's __init__ method has been called. - """ - for attr in filter(lambda k: hasattr(self, k), self.removedAttrs): - delattr(self, attr) diff --git a/mic/kickstart/pykickstart/commands/__init__.py b/mic/kickstart/pykickstart/commands/__init__.py deleted file mode 100644 index da48ff5..0000000 --- a/mic/kickstart/pykickstart/commands/__init__.py +++ /dev/null @@ -1,26 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2009 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -import authconfig, autopart, autostep, bootloader, clearpart, device -import deviceprobe, displaymode, dmraid, driverdisk, fcoe, firewall, firstboot -import group, ignoredisk, interactive, iscsi, iscsiname, key, keyboard, lang -import langsupport, lilocheck, logging, logvol, mediacheck, method, monitor -import mouse, multipath, network, partition, raid, reboot, repo, rescue, rootpw -import selinux, services, skipx, sshpw, timezone, updates, upgrade, user, vnc -import volgroup, xconfig, zerombr, zfcp diff --git a/mic/kickstart/pykickstart/commands/authconfig.py b/mic/kickstart/pykickstart/commands/authconfig.py deleted file mode 100644 index 9af9c0f..0000000 --- a/mic/kickstart/pykickstart/commands/authconfig.py +++ /dev/null @@ -1,40 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * - -class FC3_Authconfig(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, *args, **kwargs) - self.authconfig = kwargs.get("authconfig", "") - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.authconfig: - retval += "# System authorization information\nauth %s\n" % self.authconfig - - return retval - - def parse(self, args): - self.authconfig = self.currentLine[len(self.currentCmd):].strip() - return self diff --git a/mic/kickstart/pykickstart/commands/autopart.py b/mic/kickstart/pykickstart/commands/autopart.py deleted file mode 100644 index cf28b5c..0000000 --- a/mic/kickstart/pykickstart/commands/autopart.py +++ /dev/null @@ -1,119 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007, 2008 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC3_AutoPart(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=100, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.autopart = kwargs.get("autopart", False) - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.autopart: - retval += "autopart\n" - - return retval - - def parse(self, args): - if len(args) > 0: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s does not take any arguments") % "autopart") - - self.autopart = True - return self - -class F9_AutoPart(FC3_AutoPart): - removedKeywords = FC3_AutoPart.removedKeywords - removedAttrs = FC3_AutoPart.removedAttrs - - def __init__(self, writePriority=100, *args, **kwargs): - FC3_AutoPart.__init__(self, writePriority=writePriority, *args, **kwargs) - self.encrypted = kwargs.get("encrypted", False) - self.passphrase = kwargs.get("passphrase", "") - - self.op = self._getParser() - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.autopart: - retval += "autopart" - - if self.encrypted: - retval += " --encrypted" - - if self.passphrase != "": - retval += " --passphrase=\"%s\""% self.passphrase - - if retval != "": - retval += "\n" - - return retval - - def _getParser(self): - op = KSOptionParser() - op.add_option("--encrypted", action="store_true", default=False) - op.add_option("--passphrase") - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - self._setToSelf(self.op, opts) - self.autopart = True - return self - -class F12_AutoPart(F9_AutoPart): - removedKeywords = F9_AutoPart.removedKeywords - removedAttrs = F9_AutoPart.removedAttrs - - def __init__(self, writePriority=100, *args, **kwargs): - F9_AutoPart.__init__(self, writePriority=writePriority, *args, **kwargs) - - self.escrowcert = kwargs.get("escrowcert", "") - self.backuppassphrase = kwargs.get("backuppassphrase", False) - - def __str__(self): - retval = F9_AutoPart.__str__(self) - - if self.encrypted and self.escrowcert != "": - retval = retval.strip() - - retval += " --escrowcert=\"%s\"" % self.escrowcert - - if self.backuppassphrase: - retval += " --backuppassphrase" - - retval += "\n" - - return retval - - def _getParser(self): - op = F9_AutoPart._getParser(self) - op.add_option("--escrowcert") - op.add_option("--backuppassphrase", action="store_true", default=False) - return op diff --git a/mic/kickstart/pykickstart/commands/autostep.py b/mic/kickstart/pykickstart/commands/autostep.py deleted file mode 100644 index e6ae71c..0000000 --- a/mic/kickstart/pykickstart/commands/autostep.py +++ /dev/null @@ -1,55 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.options import * - -class FC3_AutoStep(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.autostep = kwargs.get("autostep", False) - self.autoscreenshot = kwargs.get("autoscreenshot", False) - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.autostep: - if self.autoscreenshot: - retval += "autostep --autoscreenshot\n" - else: - retval += "autostep\n" - - return retval - - def _getParser(self): - op = KSOptionParser() - op.add_option("--autoscreenshot", dest="autoscreenshot", - action="store_true", default=False) - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - self._setToSelf(self.op, opts) - self.autostep = True - return self diff --git a/mic/kickstart/pykickstart/commands/bootloader.py b/mic/kickstart/pykickstart/commands/bootloader.py deleted file mode 100644 index b227fac..0000000 --- a/mic/kickstart/pykickstart/commands/bootloader.py +++ /dev/null @@ -1,265 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.options import * - -class FC3_Bootloader(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=10, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.driveorder = kwargs.get("driveorder", []) - self.appendLine = kwargs.get("appendLine", "") - self.forceLBA = kwargs.get("forceLBA", False) - self.linear = kwargs.get("linear", True) - self.location = kwargs.get("location", "") - self.md5pass = kwargs.get("md5pass", "") - self.password = kwargs.get("password", "") - self.upgrade = kwargs.get("upgrade", False) - self.useLilo = kwargs.get("useLilo", False) - - self.deleteRemovedAttrs() - - def _getArgsAsStr(self): - retval = "" - - if self.appendLine != "": - retval += " --append=\"%s\"" % self.appendLine - if self.linear: - retval += " --linear" - if self.location: - retval += " --location=%s" % self.location - if hasattr(self, "forceLBA") and self.forceLBA: - retval += " --lba32" - if self.password != "": - retval += " --password=\"%s\"" % self.password - if self.md5pass != "": - retval += " --md5pass=\"%s\"" % self.md5pass - if self.upgrade: - retval += " --upgrade" - if self.useLilo: - retval += " --useLilo" - if len(self.driveorder) > 0: - retval += " --driveorder=\"%s\"" % ",".join(self.driveorder) - - return retval - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.location != "": - retval += "# System bootloader configuration\nbootloader" - retval += self._getArgsAsStr() + "\n" - - return retval - - def _getParser(self): - def driveorder_cb (option, opt_str, value, parser): - for d in value.split(','): - parser.values.ensure_value(option.dest, []).append(d) - - op = KSOptionParser() - op.add_option("--append", dest="appendLine") - op.add_option("--linear", dest="linear", action="store_true", - default=True) - op.add_option("--nolinear", dest="linear", action="store_false") - op.add_option("--location", dest="location", type="choice", - default="mbr", - choices=["mbr", "partition", "none", "boot"]) - op.add_option("--lba32", dest="forceLBA", action="store_true", - default=False) - op.add_option("--password", dest="password", default="") - op.add_option("--md5pass", dest="md5pass", default="") - op.add_option("--upgrade", dest="upgrade", action="store_true", - default=False) - op.add_option("--useLilo", dest="useLilo", action="store_true", - default=False) - op.add_option("--driveorder", dest="driveorder", action="callback", - callback=driveorder_cb, nargs=1, type="string") - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - self._setToSelf(self.op, opts) - - if self.currentCmd == "lilo": - self.useLilo = True - - return self - -class FC4_Bootloader(FC3_Bootloader): - removedKeywords = FC3_Bootloader.removedKeywords + ["linear", "useLilo"] - removedAttrs = FC3_Bootloader.removedAttrs + ["linear", "useLilo"] - - def __init__(self, writePriority=10, *args, **kwargs): - FC3_Bootloader.__init__(self, writePriority, *args, **kwargs) - - def _getArgsAsStr(self): - retval = "" - if self.appendLine != "": - retval += " --append=\"%s\"" % self.appendLine - if self.location: - retval += " --location=%s" % self.location - if hasattr(self, "forceLBA") and self.forceLBA: - retval += " --lba32" - if self.password != "": - retval += " --password=\"%s\"" % self.password - if self.md5pass != "": - retval += " --md5pass=\"%s\"" % self.md5pass - if self.upgrade: - retval += " --upgrade" - if len(self.driveorder) > 0: - retval += " --driveorder=\"%s\"" % ",".join(self.driveorder) - return retval - - def _getParser(self): - op = FC3_Bootloader._getParser(self) - op.remove_option("--linear") - op.remove_option("--nolinear") - op.remove_option("--useLilo") - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - self._setToSelf(self.op, opts) - return self - -class F8_Bootloader(FC4_Bootloader): - removedKeywords = FC4_Bootloader.removedKeywords - removedAttrs = FC4_Bootloader.removedAttrs - - def __init__(self, writePriority=10, *args, **kwargs): - FC4_Bootloader.__init__(self, writePriority, *args, **kwargs) - - self.timeout = kwargs.get("timeout", None) - self.default = kwargs.get("default", "") - - def _getArgsAsStr(self): - ret = FC4_Bootloader._getArgsAsStr(self) - - if self.timeout is not None: - ret += " --timeout=%d" %(self.timeout,) - if self.default: - ret += " --default=%s" %(self.default,) - - return ret - - def _getParser(self): - op = FC4_Bootloader._getParser(self) - op.add_option("--timeout", dest="timeout", type="int") - op.add_option("--default", dest="default") - return op - -class F12_Bootloader(F8_Bootloader): - removedKeywords = F8_Bootloader.removedKeywords - removedAttrs = F8_Bootloader.removedAttrs - - def _getParser(self): - op = F8_Bootloader._getParser(self) - op.add_option("--lba32", dest="forceLBA", deprecated=1, action="store_true") - return op - -class F14_Bootloader(F12_Bootloader): - removedKeywords = F12_Bootloader.removedKeywords + ["forceLBA"] - removedAttrs = F12_Bootloader.removedKeywords + ["forceLBA"] - - def _getParser(self): - op = F12_Bootloader._getParser(self) - op.remove_option("--lba32") - return op - -class F15_Bootloader(F14_Bootloader): - removedKeywords = F14_Bootloader.removedKeywords - removedAttrs = F14_Bootloader.removedAttrs - - def __init__(self, writePriority=10, *args, **kwargs): - F14_Bootloader.__init__(self, writePriority, *args, **kwargs) - - self.isCrypted = kwargs.get("isCrypted", False) - - def _getArgsAsStr(self): - ret = F14_Bootloader._getArgsAsStr(self) - - if self.isCrypted: - ret += " --iscrypted" - - return ret - - def _getParser(self): - def password_cb(option, opt_str, value, parser): - parser.values.isCrypted = True - parser.values.password = value - - op = F14_Bootloader._getParser(self) - op.add_option("--iscrypted", dest="isCrypted", action="store_true", default=False) - op.add_option("--md5pass", action="callback", callback=password_cb, nargs=1, type="string") - return op - -class RHEL5_Bootloader(FC4_Bootloader): - removedKeywords = FC4_Bootloader.removedKeywords - removedAttrs = FC4_Bootloader.removedAttrs - - def __init__(self, writePriority=10, *args, **kwargs): - FC4_Bootloader.__init__(self, writePriority, *args, **kwargs) - - self.hvArgs = kwargs.get("hvArgs", "") - - def _getArgsAsStr(self): - ret = FC4_Bootloader._getArgsAsStr(self) - - if self.hvArgs: - ret += " --hvargs=\"%s\"" %(self.hvArgs,) - - return ret - - def _getParser(self): - op = FC4_Bootloader._getParser(self) - op.add_option("--hvargs", dest="hvArgs", type="string") - return op - -class RHEL6_Bootloader(F12_Bootloader): - removedKeywords = F12_Bootloader.removedKeywords - removedAttrs = F12_Bootloader.removedAttrs - - def __init__(self, writePriority=10, *args, **kwargs): - F12_Bootloader.__init__(self, writePriority, *args, **kwargs) - - self.isCrypted = kwargs.get("isCrypted", False) - - def _getArgsAsStr(self): - ret = F12_Bootloader._getArgsAsStr(self) - - if self.isCrypted: - ret += " --iscrypted" - - return ret - - def _getParser(self): - def password_cb(option, opt_str, value, parser): - parser.values.isCrypted = True - parser.values.password = value - - op = F12_Bootloader._getParser(self) - op.add_option("--iscrypted", dest="isCrypted", action="store_true", default=False) - op.add_option("--md5pass", action="callback", callback=password_cb, nargs=1, type="string") - return op diff --git a/mic/kickstart/pykickstart/commands/clearpart.py b/mic/kickstart/pykickstart/commands/clearpart.py deleted file mode 100644 index a8089fc..0000000 --- a/mic/kickstart/pykickstart/commands/clearpart.py +++ /dev/null @@ -1,86 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.constants import * -from pykickstart.errors import * -from pykickstart.options import * - -class FC3_ClearPart(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=120, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.drives = kwargs.get("drives", []) - self.initAll = kwargs.get("initAll", False) - self.type = kwargs.get("type", None) - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.type is None: - return retval - - if self.type == CLEARPART_TYPE_NONE: - clearstr = "--none" - elif self.type == CLEARPART_TYPE_LINUX: - clearstr = "--linux" - elif self.type == CLEARPART_TYPE_ALL: - clearstr = "--all" - else: - clearstr = "" - - if self.initAll: - initstr = "--initlabel" - else: - initstr = "" - - if len(self.drives) > 0: - drivestr = "--drives=" + ",".join(self.drives) - else: - drivestr = "" - - retval += "# Partition clearing information\nclearpart %s %s %s\n" % (clearstr, initstr, drivestr) - return retval - - def _getParser(self): - def drive_cb (option, opt_str, value, parser): - for d in value.split(','): - parser.values.ensure_value(option.dest, []).append(d) - - op = KSOptionParser() - op.add_option("--all", dest="type", action="store_const", - const=CLEARPART_TYPE_ALL) - 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) - op.add_option("--linux", dest="type", action="store_const", - const=CLEARPART_TYPE_LINUX) - op.add_option("--none", dest="type", action="store_const", - const=CLEARPART_TYPE_NONE) - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - self._setToSelf(self.op, opts) - return self diff --git a/mic/kickstart/pykickstart/commands/device.py b/mic/kickstart/pykickstart/commands/device.py deleted file mode 100644 index 321410e..0000000 --- a/mic/kickstart/pykickstart/commands/device.py +++ /dev/null @@ -1,125 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.options import * - -import gettext -import warnings -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class F8_DeviceData(BaseData): - removedKeywords = BaseData.removedKeywords - removedAttrs = BaseData.removedAttrs - - def __init__(self, *args, **kwargs): - BaseData.__init__(self, *args, **kwargs) - self.moduleName = kwargs.get("moduleName", "") - self.moduleOpts = kwargs.get("moduleOpts", "") - - def __eq__(self, y): - return self.moduleName == y.moduleName - - def __str__(self): - retval = BaseData.__str__(self) - - if self.moduleName != "": - retval += "device %s" % self.moduleName - - if self.moduleOpts != "": - retval += " --opts=\"%s\"" % self.moduleOpts - - return retval + "\n" - -class FC3_Device(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.type = kwargs.get("type", "") - self.moduleName = kwargs.get("moduleName", "") - self.moduleOpts = kwargs.get("moduleOpts", "") - - def __eq__(self, y): - return self.moduleName == y.moduleName - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.moduleName != "": - retval += "device %s %s" % (self.type, self.moduleName) - - if self.moduleOpts != "": - retval += " --opts=\"%s\"" % self.moduleOpts - - return retval + "\n" - - def _getParser(self): - op = KSOptionParser() - op.add_option("--opts", dest="moduleOpts", default="") - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - - if len(extra) != 2: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("device command requires two arguments: module type and name")) - - self.moduleOpts = opts.moduleOpts - self.type = extra[0] - self.moduleName = extra[1] - return self - -class F8_Device(FC3_Device): - removedKeywords = FC3_Device.removedKeywords - removedAttrs = FC3_Device.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - FC3_Device.__init__(self, writePriority, *args, **kwargs) - self.deviceList = kwargs.get("deviceList", []) - - def __str__(self): - retval = "" - for device in self.deviceList: - retval += device.__str__() - - return retval - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - - if len(extra) != 1: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("%s command requires a single argument: %s") % ("device", "module name")) - - dd = F8_DeviceData() - self._setToObj(self.op, opts, dd) - dd.lineno = self.lineno - dd.moduleName = extra[0] - - # Check for duplicates in the data list. - if dd in self.dataList(): - warnings.warn(_("A module with the name %s has already been defined.") % dd.moduleName) - - return dd - - def dataList(self): - return self.deviceList diff --git a/mic/kickstart/pykickstart/commands/deviceprobe.py b/mic/kickstart/pykickstart/commands/deviceprobe.py deleted file mode 100644 index 9f462fd..0000000 --- a/mic/kickstart/pykickstart/commands/deviceprobe.py +++ /dev/null @@ -1,40 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * - -class FC3_DeviceProbe(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.deviceprobe = kwargs.get("deviceprobe", "") - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.deviceprobe != "": - retval += "deviceprobe %s\n" % self.deviceprobe - - return retval - - def parse(self, args): - self.deviceprobe = " ".join(args) - return self diff --git a/mic/kickstart/pykickstart/commands/displaymode.py b/mic/kickstart/pykickstart/commands/displaymode.py deleted file mode 100644 index 6a12d58..0000000 --- a/mic/kickstart/pykickstart/commands/displaymode.py +++ /dev/null @@ -1,68 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.constants import * -from pykickstart.options import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC3_DisplayMode(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - self.displayMode = kwargs.get("displayMode", None) - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.displayMode is None: - return retval - - if self.displayMode == DISPLAY_MODE_CMDLINE: - retval += "cmdline\n" - elif self.displayMode == DISPLAY_MODE_GRAPHICAL: - retval += "# Use graphical install\ngraphical\n" - elif self.displayMode == DISPLAY_MODE_TEXT: - retval += "# Use text mode install\ntext\n" - - return retval - - def _getParser(self): - op = KSOptionParser() - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - - if len(extra) > 0: - raise KickstartParseError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s does not take any arguments") % self.currentCmd) - - if self.currentCmd == "cmdline": - self.displayMode = DISPLAY_MODE_CMDLINE - elif self.currentCmd == "graphical": - self.displayMode = DISPLAY_MODE_GRAPHICAL - elif self.currentCmd == "text": - self.displayMode = DISPLAY_MODE_TEXT - - return self diff --git a/mic/kickstart/pykickstart/commands/dmraid.py b/mic/kickstart/pykickstart/commands/dmraid.py deleted file mode 100644 index 993575a..0000000 --- a/mic/kickstart/pykickstart/commands/dmraid.py +++ /dev/null @@ -1,91 +0,0 @@ -# -# Chris Lumens -# Peter Jones -# -# Copyright 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -import warnings -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC6_DmRaidData(BaseData): - removedKeywords = BaseData.removedKeywords - removedAttrs = BaseData.removedAttrs - - def __init__(self, *args, **kwargs): - BaseData.__init__(self, *args, **kwargs) - - self.name = kwargs.get("name", "") - self.devices = kwargs.get("devices", []) - self.dmset = kwargs.get("dmset", None) - - def __eq__(self, y): - return self.name == y.name and self.devices == y.devices - - def __str__(self): - retval = BaseData.__str__(self) - retval += "dmraid --name=%s" % self.name - - for dev in self.devices: - retval += " --dev=\"%s\"" % dev - - return retval + "\n" - -class FC6_DmRaid(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=60, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.dmraids = kwargs.get("dmraids", []) - - def __str__(self): - retval = "" - for dm in self.dmraids: - retval += dm.__str__() - - return retval - - def _getParser(self): - op = KSOptionParser() - op.add_option("--name", dest="name", action="store", type="string", - required=1) - op.add_option("--dev", dest="devices", action="append", type="string", - required=1) - return op - - def parse(self, args): - dm = FC6_DmRaidData() - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - dm.name = dm.name.split('/')[-1] - self._setToObj(self.op, opts, dm) - dm.lineno = self.lineno - - # Check for duplicates in the data list. - if dm in self.dataList(): - warnings.warn(_("A DM RAID device with the name %s and devices %s has already been defined.") % (dm.name, dm.devices)) - - return dm - - def dataList(self): - return self.dmraids diff --git a/mic/kickstart/pykickstart/commands/driverdisk.py b/mic/kickstart/pykickstart/commands/driverdisk.py deleted file mode 100644 index 82a58c0..0000000 --- a/mic/kickstart/pykickstart/commands/driverdisk.py +++ /dev/null @@ -1,184 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007, 2008 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.options import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC3_DriverDiskData(BaseData): - removedKeywords = BaseData.removedKeywords - removedAttrs = BaseData.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - BaseData.__init__(self, *args, **kwargs) - - self.partition = kwargs.get("partition", "") - self.source = kwargs.get("source", "") - self.type = kwargs.get("type", "") - - def _getArgsAsStr(self): - retval = "" - - if self.partition: - retval += "%s" % self.partition - - if hasattr(self, "type") and self.type: - retval += " --type=%s" % self.type - elif self.source: - retval += "--source=%s" % self.source - return retval - - def __str__(self): - retval = BaseData.__str__(self) - retval += "driverdisk %s\n" % self._getArgsAsStr() - return retval - -class FC4_DriverDiskData(FC3_DriverDiskData): - removedKeywords = FC3_DriverDiskData.removedKeywords - removedAttrs = FC3_DriverDiskData.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - FC3_DriverDiskData.__init__(self, *args, **kwargs) - self.deleteRemovedAttrs() - - self.biospart = kwargs.get("biospart", "") - - def _getArgsAsStr(self): - retval = "" - - if self.partition: - retval += "%s" % self.partition - - if hasattr(self, "type") and self.type: - retval += " --type=%s" % self.type - elif self.source: - retval += "--source=%s" % self.source - elif self.biospart: - retval += "--biospart=%s" % self.biospart - - return retval - -class F12_DriverDiskData(FC4_DriverDiskData): - removedKeywords = FC4_DriverDiskData.removedKeywords + ["type"] - removedAttrs = FC4_DriverDiskData.removedAttrs + ["type"] - - def __init__(self, *args, **kwargs): - FC4_DriverDiskData.__init__(self, *args, **kwargs) - self.deleteRemovedAttrs() - -F14_DriverDiskData = F12_DriverDiskData - -class FC3_DriverDisk(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.driverdiskList = kwargs.get("driverdiskList", []) - - def __str__(self): - retval = "" - for dd in self.driverdiskList: - retval += dd.__str__() - - return retval - - def _getParser(self): - op = KSOptionParser() - op.add_option("--source") - op.add_option("--type") - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - - if len(extra) > 1: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Only one partition may be specified for driverdisk command.")) - - if len(extra) == 1 and opts.source: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Only one of --source and partition may be specified for driverdisk command.")) - - if not extra and not opts.source: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("One of --source or partition must be specified for driverdisk command.")) - - ddd = self.handler.DriverDiskData() - self._setToObj(self.op, opts, ddd) - ddd.lineno = self.lineno - if len(extra) == 1: - ddd.partition = extra[0] - - return ddd - - def dataList(self): - return self.driverdiskList - -class FC4_DriverDisk(FC3_DriverDisk): - removedKeywords = FC3_DriverDisk.removedKeywords - removedAttrs = FC3_DriverDisk.removedKeywords - - def _getParser(self): - op = FC3_DriverDisk._getParser(self) - op.add_option("--biospart") - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - - if len(extra) > 1: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Only one partition may be specified for driverdisk command.")) - - if len(extra) == 1 and opts.source: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Only one of --source and partition may be specified for driverdisk command.")) - elif len(extra) == 1 and opts.biospart: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Only one of --biospart and partition may be specified for driverdisk command.")) - elif opts.source and opts.biospart: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Only one of --biospart and --source may be specified for driverdisk command.")) - - if not extra and not opts.source and not opts.biospart: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("One of --source, --biospart, or partition must be specified for driverdisk command.")) - - ddd = self.handler.DriverDiskData() - self._setToObj(self.op, opts, ddd) - ddd.lineno = self.lineno - if len(extra) == 1: - ddd.partition = extra[0] - - return ddd - -class F12_DriverDisk(FC4_DriverDisk): - removedKeywords = FC4_DriverDisk.removedKeywords - removedAttrs = FC4_DriverDisk.removedKeywords - - def _getParser(self): - op = FC4_DriverDisk._getParser(self) - op.add_option("--type", deprecated=1) - return op - -class F14_DriverDisk(F12_DriverDisk): - removedKeywords = F12_DriverDisk.removedKeywords - removedAttrs = F12_DriverDisk.removedKeywords - - def _getParser(self): - op = F12_DriverDisk._getParser(self) - op.remove_option("--type") - return op diff --git a/mic/kickstart/pykickstart/commands/fcoe.py b/mic/kickstart/pykickstart/commands/fcoe.py deleted file mode 100644 index 3320849..0000000 --- a/mic/kickstart/pykickstart/commands/fcoe.py +++ /dev/null @@ -1,114 +0,0 @@ -# -# Hans de Goede -# -# Copyright 2009 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.options import * - -import gettext -import warnings -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class F12_FcoeData(BaseData): - removedKeywords = BaseData.removedKeywords - removedAttrs = BaseData.removedAttrs - - def __init__(self, *args, **kwargs): - BaseData.__init__(self, *args, **kwargs) - self.nic = kwargs.get("nic", None) - - def __eq__(self, y): - return self.nic == y.nic - - def _getArgsAsStr(self): - retval = "" - - if self.nic: - retval += " --nic=%s" % self.nic - - return retval - - def __str__(self): - retval = BaseData.__str__(self) - retval += "fcoe%s\n" % self._getArgsAsStr() - return retval - -class F13_FcoeData(F12_FcoeData): - removedKeywords = F12_FcoeData.removedKeywords - removedAttrs = F12_FcoeData.removedAttrs - - def __init__(self, *args, **kwargs): - F12_FcoeData.__init__(self, *args, **kwargs) - self.dcb = kwargs.get("dcb", False) - - def _getArgsAsStr(self): - retval = F12_FcoeData._getArgsAsStr(self) - - if self.dcb: - retval += " --dcb" - - return retval - -class F12_Fcoe(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=71, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - self.fcoe = kwargs.get("fcoe", []) - - def __str__(self): - retval = "" - for fcoe in self.fcoe: - retval += fcoe.__str__() - - return retval - - def _getParser(self): - op = KSOptionParser() - op.add_option("--nic", dest="nic", required=1) - return op - - def parse(self, args): - zd = self.handler.FcoeData() - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - if len(extra) > 0: - mapping = {"command": "fcoe", "options": extra} - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Unexpected arguments to %(command)s command: %(options)s") % mapping) - - self._setToObj(self.op, opts, zd) - zd.lineno = self.lineno - - # Check for duplicates in the data list. - if zd in self.dataList(): - warnings.warn(_("A FCOE device with the name %s has already been defined.") % zd.nic) - - return zd - - def dataList(self): - return self.fcoe - -class F13_Fcoe(F12_Fcoe): - removedKeywords = F12_Fcoe.removedKeywords - removedAttrs = F12_Fcoe.removedAttrs - - def _getParser(self): - op = F12_Fcoe._getParser(self) - op.add_option("--dcb", dest="dcb", action="store_true", default=False) - return op diff --git a/mic/kickstart/pykickstart/commands/firewall.py b/mic/kickstart/pykickstart/commands/firewall.py deleted file mode 100644 index 24a01bd..0000000 --- a/mic/kickstart/pykickstart/commands/firewall.py +++ /dev/null @@ -1,193 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC3_Firewall(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.enabled = kwargs.get("enabled", None) - self.ports = kwargs.get("ports", []) - self.trusts = kwargs.get("trusts", []) - - def __str__(self): - extra = [] - filteredPorts = [] - - retval = KickstartCommand.__str__(self) - - if self.enabled is None: - return retval - - if self.enabled: - # It's possible we have words in the ports list instead of - # port:proto (s-c-kickstart may do this). So, filter those - # out into their own list leaving what we expect. - for port in self.ports: - if port == "ssh": - extra.append(" --ssh") - elif port == "telnet": - extra.append(" --telnet") - elif port == "smtp": - extra.append(" --smtp") - elif port == "http": - extra.append(" --http") - elif port == "ftp": - extra.append(" --ftp") - else: - filteredPorts.append(port) - - # All the port:proto strings go into a comma-separated list. - portstr = ",".join(filteredPorts) - if len(portstr) > 0: - portstr = " --port=" + portstr - else: - portstr = "" - - extrastr = "".join(extra) - truststr = ",".join(self.trusts) - - if len(truststr) > 0: - truststr = " --trust=" + truststr - - # The output port list consists only of port:proto for - # everything that we don't recognize, and special options for - # those that we do. - retval += "# Firewall configuration\nfirewall --enabled%s%s%s\n" % (extrastr, portstr, truststr) - else: - retval += "# Firewall configuration\nfirewall --disabled\n" - - return retval - - def _getParser(self): - def firewall_port_cb (option, opt_str, value, parser): - for p in value.split(","): - p = p.strip() - if p.find(":") == -1: - p = "%s:tcp" % p - parser.values.ensure_value(option.dest, []).append(p) - - op = KSOptionParser(mapping={"ssh":["22:tcp"], "telnet":["23:tcp"], - "smtp":["25:tcp"], "http":["80:tcp", "443:tcp"], - "ftp":["21:tcp"]}) - - op.add_option("--disable", "--disabled", dest="enabled", - action="store_false") - op.add_option("--enable", "--enabled", dest="enabled", - action="store_true", default=True) - op.add_option("--ftp", "--http", "--smtp", "--ssh", "--telnet", - dest="ports", action="map_extend") - op.add_option("--high", deprecated=1) - op.add_option("--medium", deprecated=1) - op.add_option("--port", dest="ports", action="callback", - callback=firewall_port_cb, nargs=1, type="string") - op.add_option("--trust", dest="trusts", action="append") - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - - if len(extra) != 0: - mapping = {"command": "firewall", "options": extra} - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Unexpected arguments to %(command)s command: %(options)s") % mapping) - - self._setToSelf(self.op, opts) - return self - -class F9_Firewall(FC3_Firewall): - removedKeywords = FC3_Firewall.removedKeywords - removedAttrs = FC3_Firewall.removedAttrs - - def _getParser(self): - op = FC3_Firewall._getParser(self) - op.remove_option("--high") - op.remove_option("--medium") - return op - -class F10_Firewall(F9_Firewall): - removedKeywords = F9_Firewall.removedKeywords - removedAttrs = F9_Firewall.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - F9_Firewall.__init__(self, writePriority, *args, **kwargs) - self.services = kwargs.get("services", []) - - def __str__(self): - if self.enabled is None: - return "" - - retval = F9_Firewall.__str__(self) - if self.enabled: - retval = retval.strip() - - svcstr = ",".join(self.services) - if len(svcstr) > 0: - svcstr = " --service=" + svcstr - else: - svcstr = "" - - return retval + "%s\n" % svcstr - else: - return retval - - def _getParser(self): - def service_cb (option, opt_str, value, parser): - # python2.4 does not support action="append_const" that we were - # using for these options. Instead, we have to fake it by - # appending whatever the option string is to the service list. - if not value: - parser.values.ensure_value(option.dest, []).append(opt_str[2:]) - return - - for p in value.split(","): - p = p.strip() - parser.values.ensure_value(option.dest, []).append(p) - - op = F9_Firewall._getParser(self) - op.add_option("--service", dest="services", action="callback", - callback=service_cb, nargs=1, type="string") - op.add_option("--ftp", dest="services", action="callback", - callback=service_cb) - op.add_option("--http", dest="services", action="callback", - callback=service_cb) - op.add_option("--smtp", dest="services", action="callback", - callback=service_cb) - op.add_option("--ssh", dest="services", action="callback", - callback=service_cb) - op.add_option("--telnet", deprecated=1) - return op - -class F14_Firewall(F10_Firewall): - removedKeywords = F10_Firewall.removedKeywords + ["telnet"] - removedAttrs = F10_Firewall.removedAttrs + ["telnet"] - - def _getParser(self): - op = F10_Firewall._getParser(self) - op.remove_option("--telnet") - return op diff --git a/mic/kickstart/pykickstart/commands/firstboot.py b/mic/kickstart/pykickstart/commands/firstboot.py deleted file mode 100644 index 05c0ac1..0000000 --- a/mic/kickstart/pykickstart/commands/firstboot.py +++ /dev/null @@ -1,62 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.constants import * -from pykickstart.options import * - -class FC3_Firstboot(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.firstboot = kwargs.get("firstboot", None) - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.firstboot is None: - return retval - - if self.firstboot == FIRSTBOOT_SKIP: - retval += "firstboot --disable\n" - elif self.firstboot == FIRSTBOOT_DEFAULT: - retval += "# Run the Setup Agent on first boot\nfirstboot --enable\n" - elif self.firstboot == FIRSTBOOT_RECONFIG: - retval += "# Run the Setup Agent on first boot\nfirstboot --reconfig\n" - - return retval - - def _getParser(self): - op = KSOptionParser() - op.add_option("--disable", "--disabled", dest="firstboot", - action="store_const", const=FIRSTBOOT_SKIP) - op.add_option("--enable", "--enabled", dest="firstboot", - action="store_const", const=FIRSTBOOT_DEFAULT) - op.add_option("--reconfig", dest="firstboot", action="store_const", - const=FIRSTBOOT_RECONFIG) - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - self.firstboot = opts.firstboot - return self diff --git a/mic/kickstart/pykickstart/commands/group.py b/mic/kickstart/pykickstart/commands/group.py deleted file mode 100644 index 80ba5bd..0000000 --- a/mic/kickstart/pykickstart/commands/group.py +++ /dev/null @@ -1,88 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2009 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.constants import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -import warnings -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class F12_GroupData(BaseData): - removedKeywords = BaseData.removedKeywords - removedAttrs = BaseData.removedAttrs - - def __init__(self, *args, **kwargs): - BaseData.__init__(self, *args, **kwargs) - self.name = kwargs.get("name", "") - self.gid = kwargs.get("gid", None) - - def __eq__(self, y): - return self.name == y.name - - def __str__(self): - retval = BaseData.__str__(self) - retval += "group" - - if self.name: - retval += " --name=%s" % self.name - if self.gid: - retval += " --gid=%s" % self.gid - - return retval + "\n" - -class F12_Group(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.groupList = kwargs.get("groupList", []) - - def __str__(self): - retval = "" - for user in self.groupList: - retval += user.__str__() - - return retval - - def _getParser(self): - op = KSOptionParser() - op.add_option("--name", required=1) - op.add_option("--gid", type="int") - return op - - def parse(self, args): - gd = self.handler.GroupData() - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - self._setToObj(self.op, opts, gd) - gd.lineno = self.lineno - - # Check for duplicates in the data list. - if gd in self.dataList(): - warnings.warn(_("A group with the name %s has already been defined.") % gd.name) - - return gd - - def dataList(self): - return self.groupList diff --git a/mic/kickstart/pykickstart/commands/ignoredisk.py b/mic/kickstart/pykickstart/commands/ignoredisk.py deleted file mode 100644 index 676d080..0000000 --- a/mic/kickstart/pykickstart/commands/ignoredisk.py +++ /dev/null @@ -1,139 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007, 2009 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.options import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC3_IgnoreDisk(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.ignoredisk = kwargs.get("ignoredisk", []) - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if len(self.ignoredisk) > 0: - retval += "ignoredisk --drives=%s\n" % ",".join(self.ignoredisk) - - return retval - - def _getParser(self): - def drive_cb (option, opt_str, value, parser): - for d in value.split(','): - parser.values.ensure_value(option.dest, []).append(d) - - op = KSOptionParser() - op.add_option("--drives", dest="ignoredisk", action="callback", - callback=drive_cb, nargs=1, type="string", required=1) - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - self._setToSelf(self.op, opts) - return self - -class F8_IgnoreDisk(FC3_IgnoreDisk): - removedKeywords = FC3_IgnoreDisk.removedKeywords - removedAttrs = FC3_IgnoreDisk.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - FC3_IgnoreDisk.__init__(self, writePriority, *args, **kwargs) - - self.onlyuse = kwargs.get("onlyuse", []) - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if len(self.ignoredisk) > 0: - retval += "ignoredisk --drives=%s\n" % ",".join(self.ignoredisk) - elif len(self.onlyuse) > 0: - retval += "ignoredisk --only-use=%s\n" % ",".join(self.onlyuse) - - return retval - - def parse(self, args, errorCheck=True): - retval = FC3_IgnoreDisk.parse(self, args) - - if errorCheck: - if (len(self.ignoredisk) == 0 and len(self.onlyuse) == 0) or (len(self.ignoredisk) > 0 and (len(self.onlyuse) > 0)): - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("One of --drives or --only-use must be specified for ignoredisk command.")) - - return retval - - def _getParser(self): - def drive_cb (option, opt_str, value, parser): - for d in value.split(','): - parser.values.ensure_value(option.dest, []).append(d) - - op = FC3_IgnoreDisk._getParser(self) - op.add_option("--drives", dest="ignoredisk", action="callback", - callback=drive_cb, nargs=1, type="string") - op.add_option("--only-use", dest="onlyuse", action="callback", - callback=drive_cb, nargs=1, type="string") - return op - -class RHEL6_IgnoreDisk(F8_IgnoreDisk): - removedKeywords = F8_IgnoreDisk.removedKeywords - removedAttrs = F8_IgnoreDisk.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - F8_IgnoreDisk.__init__(self, writePriority, *args, **kwargs) - - self.interactive = kwargs.get("interactive", False) - if self.interactive: - self.ignoredisk = [] - - def __str__(self): - retval = F8_IgnoreDisk.__str__(self) - - if self.interactive: - retval = "ignoredisk --interactive\n" - - return retval - - def parse(self, args): - retval = F8_IgnoreDisk.parse(self, args, errorCheck=False) - - howmany = 0 - if len(self.ignoredisk) > 0: - howmany += 1 - if len(self.onlyuse) > 0: - howmany += 1 - if self.interactive: - howmany += 1 - if howmany != 1: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("One of --drives , --only-use , or --interactive must be specified for ignoredisk command.")) - - return retval - - def _getParser(self): - op = F8_IgnoreDisk._getParser(self) - op.add_option("--interactive", dest="interactive", action="store_true", - default=False) - return op - -F14_IgnoreDisk = RHEL6_IgnoreDisk diff --git a/mic/kickstart/pykickstart/commands/interactive.py b/mic/kickstart/pykickstart/commands/interactive.py deleted file mode 100644 index fa3dc02..0000000 --- a/mic/kickstart/pykickstart/commands/interactive.py +++ /dev/null @@ -1,58 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC3_Interactive(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - self.interactive = kwargs.get("interactive", False) - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.interactive: - retval += "# Use interactive kickstart installation method\ninteractive\n" - - return retval - - def _getParser(self): - op = KSOptionParser() - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - if len(extra) > 0: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s does not take any arguments") % "interactive") - - self.interactive = True - return self - -class F14_Interactive(DeprecatedCommand): - def __init__(self): - DeprecatedCommand.__init__(self) diff --git a/mic/kickstart/pykickstart/commands/iscsi.py b/mic/kickstart/pykickstart/commands/iscsi.py deleted file mode 100644 index da5a544..0000000 --- a/mic/kickstart/pykickstart/commands/iscsi.py +++ /dev/null @@ -1,133 +0,0 @@ -# -# Chris Lumens -# Peter Jones -# -# Copyright 2005, 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC6_IscsiData(BaseData): - removedKeywords = BaseData.removedKeywords - removedAttrs = BaseData.removedAttrs - - def __init__(self, *args, **kwargs): - BaseData.__init__(self, *args, **kwargs) - self.ipaddr = kwargs.get("ipaddr", "") - self.port = kwargs.get("port", "3260") - self.target = kwargs.get("target", "") - self.user = kwargs.get("user", None) - self.password = kwargs.get("password", None) - - def _getArgsAsStr(self): - retval = "" - - if self.target != "": - retval += " --target=%s" % self.target - if self.ipaddr != "": - retval += " --ipaddr=%s" % self.ipaddr - if self.port != "3260": - retval += " --port=%s" % self.port - if self.user is not None: - retval += " --user=%s" % self.user - if self.password is not None: - retval += " --password=%s" % self.password - - return retval - - def __str__(self): - retval = BaseData.__str__(self) - retval += "iscsi%s\n" % self._getArgsAsStr() - return retval - -class F10_IscsiData(FC6_IscsiData): - removedKeywords = FC6_IscsiData.removedKeywords - removedAttrs = FC6_IscsiData.removedAttrs - - def __init__(self, *args, **kwargs): - FC6_IscsiData.__init__(self, *args, **kwargs) - self.user_in = kwargs.get("user_in", None) - self.password_in = kwargs.get("password_in", None) - - def _getArgsAsStr(self): - retval = FC6_IscsiData._getArgsAsStr(self) - - if self.user_in is not None: - retval += " --reverse-user=%s" % self.user_in - if self.password_in is not None: - retval += " --reverse-password=%s" % self.password_in - - return retval - -class FC6_Iscsi(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=71, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.iscsi = kwargs.get("iscsi", []) - - def __str__(self): - retval = "" - for iscsi in self.iscsi: - retval += iscsi.__str__() - - return retval - - def _getParser(self): - op = KSOptionParser() - op.add_option("--target", dest="target", action="store", type="string") - op.add_option("--ipaddr", dest="ipaddr", action="store", type="string", - required=1) - op.add_option("--port", dest="port", action="store", type="string") - op.add_option("--user", dest="user", action="store", type="string") - op.add_option("--password", dest="password", action="store", - type="string") - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - - if len(extra) != 0: - mapping = {"command": "iscsi", "options": extra} - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Unexpected arguments to %(command)s command: %(options)s") % mapping) - - dd = self.handler.IscsiData() - self._setToObj(self.op, opts, dd) - dd.lineno = self.lineno - return dd - - def dataList(self): - return self.iscsi - -class F10_Iscsi(FC6_Iscsi): - removedKeywords = FC6_Iscsi.removedKeywords - removedAttrs = FC6_Iscsi.removedAttrs - - def _getParser(self): - op = FC6_Iscsi._getParser(self) - op.add_option("--reverse-user", dest="user_in", action="store", - type="string") - op.add_option("--reverse-password", dest="password_in", action="store", - type="string") - return op diff --git a/mic/kickstart/pykickstart/commands/iscsiname.py b/mic/kickstart/pykickstart/commands/iscsiname.py deleted file mode 100644 index a87d063..0000000 --- a/mic/kickstart/pykickstart/commands/iscsiname.py +++ /dev/null @@ -1,54 +0,0 @@ -# -# Chris Lumens -# Peter Jones -# -# Copyright 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC6_IscsiName(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=70, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - self.iscsiname = kwargs.get("iscsiname", "") - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.iscsiname != "": - retval += "iscsiname %s\n" % self.iscsiname - - return retval - - def _getParser(self): - op = KSOptionParser() - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - if len(extra) != 1: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s requires one argument") % "iscsiname") - self.iscsiname = extra[0] - return self diff --git a/mic/kickstart/pykickstart/commands/key.py b/mic/kickstart/pykickstart/commands/key.py deleted file mode 100644 index c20c423..0000000 --- a/mic/kickstart/pykickstart/commands/key.py +++ /dev/null @@ -1,64 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.constants import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class RHEL5_Key(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - self.key = kwargs.get("key", "") - self.skip = kwargs.get("skip", False) - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.key == KS_INSTKEY_SKIP: - retval += "key --skip\n" - elif self.key != "": - retval += "key %s\n" % self.key - - return retval - - def _getParser(self): - op = KSOptionParser() - op.add_option("--skip", action="store_true", default=False) - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - self._setToSelf(self.op, opts) - - if self.skip: - self.key = KS_INSTKEY_SKIP - elif len(extra) != 1: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s requires one argument") % "key") - else: - self.key = extra[0] - - return self diff --git a/mic/kickstart/pykickstart/commands/keyboard.py b/mic/kickstart/pykickstart/commands/keyboard.py deleted file mode 100644 index babc2ac..0000000 --- a/mic/kickstart/pykickstart/commands/keyboard.py +++ /dev/null @@ -1,55 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC3_Keyboard(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - self.keyboard = kwargs.get("keyboard", "") - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.keyboard != "": - retval += "# System keyboard\nkeyboard %s\n" % self.keyboard - - return retval - - def _getParser(self): - op = KSOptionParser() - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - - if len(extra) != 1: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s requires one argument") % "keyboard") - - self.keyboard = extra[0] - return self diff --git a/mic/kickstart/pykickstart/commands/lang.py b/mic/kickstart/pykickstart/commands/lang.py deleted file mode 100644 index cf5e46c..0000000 --- a/mic/kickstart/pykickstart/commands/lang.py +++ /dev/null @@ -1,60 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC3_Lang(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - self.lang = kwargs.get("lang", "") - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.lang != "": - retval += "# System language\nlang %s\n" % self.lang - - return retval - - def _getParser(self): - op = KSOptionParser() - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - if len(extra) != 1: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s requires one argument") % "lang") - - self.lang = extra[0] - return self - - def apply(self, instroot="/"): - if self.lang == "": return - f = open(instroot + "/etc/sysconfig/i18n", "w+") - f.write("LANG=\"%s\"\n" %(self.lang,)) - f.close() diff --git a/mic/kickstart/pykickstart/commands/langsupport.py b/mic/kickstart/pykickstart/commands/langsupport.py deleted file mode 100644 index 73a9e53..0000000 --- a/mic/kickstart/pykickstart/commands/langsupport.py +++ /dev/null @@ -1,58 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.options import * - -class FC3_LangSupport(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.deflang = kwargs.get("deflang", "") - self.supported = kwargs.get("supported", []) - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.deflang: - retval += "langsupport --default=%s" % self.deflang - - if self.supported: - retval += " %s" % " ".join(self.supported) - - return retval + "\n" - - def _getParser(self): - op = KSOptionParser() - op.add_option("--default", dest="deflang", default="en_US.UTF-8") - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - self._setToSelf(self.op, opts) - self.supported = extra - return self - -class FC5_LangSupport(DeprecatedCommand): - def __init__(self): - DeprecatedCommand.__init__(self) diff --git a/mic/kickstart/pykickstart/commands/lilocheck.py b/mic/kickstart/pykickstart/commands/lilocheck.py deleted file mode 100644 index 92b3f93..0000000 --- a/mic/kickstart/pykickstart/commands/lilocheck.py +++ /dev/null @@ -1,54 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC3_LiloCheck(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - self.check = kwargs.get("check", False) - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.check: - retval += "lilocheck\n" - - return retval - - def _getParser(self): - op = KSOptionParser() - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - if len(extra) > 0: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s does not take any arguments") % "lilocheck") - - self.check = True - return self diff --git a/mic/kickstart/pykickstart/commands/logging.py b/mic/kickstart/pykickstart/commands/logging.py deleted file mode 100644 index 6985619..0000000 --- a/mic/kickstart/pykickstart/commands/logging.py +++ /dev/null @@ -1,66 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2007, 2009 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC6_Logging(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.host = kwargs.get("host", "") - self.level = kwargs.get("level", "info") - self.port = kwargs.get("port", "") - - def __str__(self): - retval = KickstartCommand.__str__(self) - retval += "# Installation logging level\nlogging --level=%s" % self.level - - if self.host != "": - retval += " --host=%s" % self.host - - if self.port != "": - retval += " --port=%s" % self.port - - return retval + "\n" - - def _getParser(self): - op = KSOptionParser() - op.add_option("--host") - op.add_option("--level", type="choice", default="info", - choices=["debug", "info", "warning", "error", "critical"]) - op.add_option("--port") - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - - if opts.port and not opts.host: - raise KickstartParseError, formatErrorMsg(self.lineno, msg=_("Can't specify --port without --host.")) - - self._setToSelf(self.op, opts) - return self diff --git a/mic/kickstart/pykickstart/commands/logvol.py b/mic/kickstart/pykickstart/commands/logvol.py deleted file mode 100644 index c1b9cc3..0000000 --- a/mic/kickstart/pykickstart/commands/logvol.py +++ /dev/null @@ -1,304 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007, 2008 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -import warnings -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC3_LogVolData(BaseData): - removedKeywords = BaseData.removedKeywords - removedAttrs = BaseData.removedAttrs - - def __init__(self, *args, **kwargs): - BaseData.__init__(self, *args, **kwargs) - self.fstype = kwargs.get("fstype", "") - self.grow = kwargs.get("grow", False) - self.maxSizeMB = kwargs.get("maxSizeMB", 0) - self.name = kwargs.get("name", "") - self.format = kwargs.get("format", True) - self.percent = kwargs.get("percent", 0) - self.recommended = kwargs.get("recommended", False) - self.size = kwargs.get("size", None) - self.preexist = kwargs.get("preexist", False) - self.vgname = kwargs.get("vgname", "") - self.mountpoint = kwargs.get("mountpoint", "") - - def __eq__(self, y): - return self.vgname == y.vgname and self.name == y.name - - def _getArgsAsStr(self): - retval = "" - - if self.fstype != "": - retval += " --fstype=\"%s\"" % self.fstype - if self.grow: - retval += " --grow" - if self.maxSizeMB > 0: - retval += " --maxsize=%d" % self.maxSizeMB - if not self.format: - retval += " --noformat" - if self.percent > 0: - retval += " --percent=%d" % self.percent - if self.recommended: - retval += " --recommended" - if self.size > 0: - retval += " --size=%d" % self.size - if self.preexist: - retval += " --useexisting" - - return retval - - def __str__(self): - retval = BaseData.__str__(self) - retval += "logvol %s %s --name=%s --vgname=%s\n" % (self.mountpoint, self._getArgsAsStr(), self.name, self.vgname) - return retval - -class FC4_LogVolData(FC3_LogVolData): - removedKeywords = FC3_LogVolData.removedKeywords - removedAttrs = FC3_LogVolData.removedAttrs - - def __init__(self, *args, **kwargs): - FC3_LogVolData.__init__(self, *args, **kwargs) - self.bytesPerInode = kwargs.get("bytesPerInode", 4096) - self.fsopts = kwargs.get("fsopts", "") - - def _getArgsAsStr(self): - retval = FC3_LogVolData._getArgsAsStr(self) - - if hasattr(self, "bytesPerInode") and self.bytesPerInode != 0: - retval += " --bytes-per-inode=%d" % self.bytesPerInode - if self.fsopts != "": - retval += " --fsoptions=\"%s\"" % self.fsopts - - return retval - -class RHEL5_LogVolData(FC4_LogVolData): - removedKeywords = FC4_LogVolData.removedKeywords - removedAttrs = FC4_LogVolData.removedAttrs - - def __init__(self, *args, **kwargs): - FC4_LogVolData.__init__(self, *args, **kwargs) - self.encrypted = kwargs.get("encrypted", False) - self.passphrase = kwargs.get("passphrase", "") - - def _getArgsAsStr(self): - retval = FC4_LogVolData._getArgsAsStr(self) - - if self.encrypted: - retval += " --encrypted" - - if self.passphrase != "": - retval += " --passphrase=\"%s\"" % self.passphrase - - return retval - -class F9_LogVolData(FC4_LogVolData): - removedKeywords = FC4_LogVolData.removedKeywords + ["bytesPerInode"] - removedAttrs = FC4_LogVolData.removedAttrs + ["bytesPerInode"] - - def __init__(self, *args, **kwargs): - FC4_LogVolData.__init__(self, *args, **kwargs) - self.deleteRemovedAttrs() - - self.fsopts = kwargs.get("fsopts", "") - self.fsprofile = kwargs.get("fsprofile", "") - self.encrypted = kwargs.get("encrypted", False) - self.passphrase = kwargs.get("passphrase", "") - - def _getArgsAsStr(self): - retval = FC4_LogVolData._getArgsAsStr(self) - - if self.fsprofile != "": - retval += " --fsprofile=\"%s\"" % self.fsprofile - if self.encrypted: - retval += " --encrypted" - - if self.passphrase != "": - retval += " --passphrase=\"%s\"" % self.passphrase - - return retval - -class F12_LogVolData(F9_LogVolData): - removedKeywords = F9_LogVolData.removedKeywords - removedAttrs = F9_LogVolData.removedAttrs - - def __init__(self, *args, **kwargs): - F9_LogVolData.__init__(self, *args, **kwargs) - self.deleteRemovedAttrs() - - self.escrowcert = kwargs.get("escrowcert", "") - self.backuppassphrase = kwargs.get("backuppassphrase", False) - - def _getArgsAsStr(self): - retval = F9_LogVolData._getArgsAsStr(self) - - if self.encrypted and self.escrowcert != "": - retval += " --escrowcert=\"%s\"" % self.escrowcert - - if self.backuppassphrase: - retval += " --backuppassphrase" - - return retval - -F14_LogVolData = F12_LogVolData - -class F15_LogVolData(F14_LogVolData): - removedKeywords = F14_LogVolData.removedKeywords - removedAttrs = F14_LogVolData.removedAttrs - - def __init__(self, *args, **kwargs): - F14_LogVolData.__init__(self, *args, **kwargs) - self.label = kwargs.get("label", "") - - def _getArgsAsStr(self): - retval = F14_LogVolData._getArgsAsStr(self) - - if self.label != "": - retval += " --label=\"%s\"" % self.label - - return retval - -class FC3_LogVol(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=133, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.lvList = kwargs.get("lvList", []) - - def __str__(self): - retval = "" - - for part in self.lvList: - retval += part.__str__() - - return retval - - def _getParser(self): - def lv_cb (option, opt_str, value, parser): - parser.values.format = False - parser.values.preexist = True - - op = KSOptionParser() - op.add_option("--fstype", dest="fstype") - op.add_option("--grow", dest="grow", action="store_true", - default=False) - op.add_option("--maxsize", dest="maxSizeMB", action="store", type="int", - nargs=1) - op.add_option("--name", dest="name", required=1) - op.add_option("--noformat", action="callback", callback=lv_cb, - dest="format", default=True, nargs=0) - op.add_option("--percent", dest="percent", action="store", type="int", - nargs=1) - op.add_option("--recommended", dest="recommended", action="store_true", - default=False) - op.add_option("--size", dest="size", action="store", type="int", - nargs=1) - op.add_option("--useexisting", dest="preexist", action="store_true", - default=False) - op.add_option("--vgname", dest="vgname", required=1) - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - - if len(extra) == 0: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Mount point required for %s") % "logvol") - - lvd = self.handler.LogVolData() - self._setToObj(self.op, opts, lvd) - lvd.lineno = self.lineno - lvd.mountpoint=extra[0] - - # Check for duplicates in the data list. - if lvd in self.dataList(): - warnings.warn(_("A logical volume with the name %s has already been defined in volume group %s.") % (lvd.device, lvd.vgname)) - - return lvd - - def dataList(self): - return self.lvList - -class FC4_LogVol(FC3_LogVol): - removedKeywords = FC3_LogVol.removedKeywords - removedAttrs = FC3_LogVol.removedAttrs - - def _getParser(self): - op = FC3_LogVol._getParser(self) - op.add_option("--bytes-per-inode", dest="bytesPerInode", action="store", - type="int", nargs=1) - op.add_option("--fsoptions", dest="fsopts") - return op - -class RHEL5_LogVol(FC4_LogVol): - removedKeywords = FC4_LogVol.removedKeywords - removedAttrs = FC4_LogVol.removedAttrs - - def _getParser(self): - op = FC4_LogVol._getParser(self) - op.add_option("--encrypted", action="store_true", default=False) - op.add_option("--passphrase") - return op - -class F9_LogVol(FC4_LogVol): - removedKeywords = FC4_LogVol.removedKeywords - removedAttrs = FC4_LogVol.removedAttrs - - def _getParser(self): - op = FC4_LogVol._getParser(self) - op.add_option("--bytes-per-inode", deprecated=1) - op.add_option("--fsprofile", dest="fsprofile", action="store", - type="string", nargs=1) - op.add_option("--encrypted", action="store_true", default=False) - op.add_option("--passphrase") - return op - -class F12_LogVol(F9_LogVol): - removedKeywords = F9_LogVol.removedKeywords - removedAttrs = F9_LogVol.removedAttrs - - def _getParser(self): - op = F9_LogVol._getParser(self) - op.add_option("--escrowcert") - op.add_option("--backuppassphrase", action="store_true", default=False) - return op - -class F14_LogVol(F12_LogVol): - removedKeywords = F12_LogVol.removedKeywords - removedAttrs = F12_LogVol.removedAttrs - - def _getParser(self): - op = F12_LogVol._getParser(self) - op.remove_option("--bytes-per-inode") - return op - -class F15_LogVol(F14_LogVol): - removedKeywords = F14_LogVol.removedKeywords - removedAttrs = F14_LogVol.removedAttrs - - def _getParser(self): - op = F14_LogVol._getParser(self) - op.add_option("--label") - return op diff --git a/mic/kickstart/pykickstart/commands/mediacheck.py b/mic/kickstart/pykickstart/commands/mediacheck.py deleted file mode 100644 index 388823a..0000000 --- a/mic/kickstart/pykickstart/commands/mediacheck.py +++ /dev/null @@ -1,53 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC4_MediaCheck(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - self.mediacheck = kwargs.get("mediacheck", False) - - def __str__(self): - retval = KickstartCommand.__str__(self) - if self.mediacheck: - retval += "mediacheck\n" - - return retval - - def _getParser(self): - op = KSOptionParser() - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - if len(extra) > 0: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s does not take any arguments") % "mediacheck") - - self.mediacheck = True - return self diff --git a/mic/kickstart/pykickstart/commands/method.py b/mic/kickstart/pykickstart/commands/method.py deleted file mode 100644 index e21064a..0000000 --- a/mic/kickstart/pykickstart/commands/method.py +++ /dev/null @@ -1,186 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2007, 2009 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC3_Method(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.method = kwargs.get("method", "") - - # Set all these attributes so calls to this command's __call__ - # method can set them. However we don't want to provide them as - # arguments to __init__ because method is special. - self.biospart = None - self.partition = None - self.server = None - self.dir = None - self.url = None - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.method == "cdrom": - retval += "# Use CDROM installation media\ncdrom\n" - elif self.method == "harddrive": - msg = "# Use hard drive installation media\nharddrive --dir=%s" % self.dir - - if self.biospart is not None: - retval += msg + " --biospart=%s\n" % self.biospart - else: - retval += msg + " --partition=%s\n" % self.partition - elif self.method == "nfs": - retval += "# Use NFS installation media\nnfs --server=%s --dir=%s\n" % (self.server, self.dir) - elif self.method == "url": - retval += "# Use network installation\nurl --url=\"%s\"\n" % self.url - - return retval - - def _getParser(self): - op = KSOptionParser() - - # method = "cdrom" falls through to the return - if self.currentCmd == "harddrive": - op.add_option("--biospart", dest="biospart") - op.add_option("--partition", dest="partition") - op.add_option("--dir", dest="dir", required=1) - elif self.currentCmd == "nfs": - op.add_option("--server", dest="server", required=1) - op.add_option("--dir", dest="dir", required=1) - elif self.currentCmd == "url": - op.add_option("--url", dest="url", required=1) - - return op - - def parse(self, args): - self.method = self.currentCmd - - op = self._getParser() - (opts, extra) = op.parse_args(args=args, lineno=self.lineno) - self._setToSelf(op, opts) - - if self.currentCmd == "harddrive": - if self.biospart is None and self.partition is None or \ - self.biospart is not None and self.partition is not None: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("One of biospart or partition options must be specified.")) - - return self - -class FC6_Method(FC3_Method): - removedKeywords = FC3_Method.removedKeywords - removedAttrs = FC3_Method.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - FC3_Method.__init__(self, writePriority, *args, **kwargs) - - # Same reason for this attribute as the comment in FC3_Method. - self.opts = None - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.method == "cdrom": - retval += "# Use CDROM installation media\ncdrom\n" - elif self.method == "harddrive": - msg = "# Use hard drive installation media\nharddrive --dir=%s" % self.dir - - if self.biospart is not None: - retval += msg + " --biospart=%s\n" % self.biospart - else: - retval += msg + " --partition=%s\n" % self.partition - elif self.method == "nfs": - retval += "# Use NFS installation media\nnfs --server=%s --dir=%s" % (self.server, self.dir) - if self.opts is not None: - retval += " --opts=\"%s\"" % self.opts - retval += "\n" - elif self.method == "url": - retval += "# Use network installation\nurl --url=\"%s\"\n" % self.url - - return retval - - def _getParser(self): - op = FC3_Method._getParser(self) - - if self.currentCmd == "nfs": - op.add_option("--opts", dest="opts") - - return op - -class F13_Method(FC6_Method): - removedKeywords = FC6_Method.removedKeywords - removedAttrs = FC6_Method.removedAttrs - - def __init__(self, *args, **kwargs): - FC6_Method.__init__(self, *args, **kwargs) - - # And same as all the other __init__ methods. - self.proxy = "" - - def __str__(self): - retval = FC6_Method.__str__(self) - - if self.method == "url" and self.proxy: - retval = retval.strip() - retval += " --proxy=\"%s\"\n" % self.proxy - - return retval - - def _getParser(self): - op = FC6_Method._getParser(self) - - if self.currentCmd == "url": - op.add_option("--proxy") - - return op - -class F14_Method(F13_Method): - removedKeywords = F13_Method.removedKeywords - removedAttrs = F13_Method.removedAttrs - - def __init__(self, *args, **kwargs): - F13_Method.__init__(self, *args, **kwargs) - - self.noverifyssl = False - - def __str__(self): - retval = F13_Method.__str__(self) - - if self.method == "url" and self.noverifyssl: - retval = retval.strip() - retval += " --noverifyssl\n" - - return retval - - def _getParser(self): - op = F13_Method._getParser(self) - - if self.currentCmd == "url": - op.add_option("--noverifyssl", action="store_true", default=False) - - return op - -RHEL6_Method = F14_Method diff --git a/mic/kickstart/pykickstart/commands/monitor.py b/mic/kickstart/pykickstart/commands/monitor.py deleted file mode 100644 index 8c8c2c4..0000000 --- a/mic/kickstart/pykickstart/commands/monitor.py +++ /dev/null @@ -1,106 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007, 2008 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC3_Monitor(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.hsync = kwargs.get("hsync", "") - self.monitor = kwargs.get("monitor", "") - self.vsync = kwargs.get("vsync", "") - - def __str__(self): - retval = KickstartCommand.__str__(self) - retval += "monitor" - - if self.hsync != "": - retval += " --hsync=%s" % self.hsync - if self.monitor != "": - retval += " --monitor=\"%s\"" % self.monitor - if self.vsync != "": - retval += " --vsync=%s" % self.vsync - - if retval != "monitor": - return retval + "\n" - else: - return "" - - def _getParser(self): - op = KSOptionParser() - op.add_option("--hsync") - op.add_option("--monitor") - op.add_option("--vsync") - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - - if extra: - mapping = {"cmd": "monitor", "options": extra} - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Unexpected arguments to %(cmd)s command: %(options)s") % mapping) - - self._setToSelf(self.op, opts) - return self - -class FC6_Monitor(FC3_Monitor): - removedKeywords = FC3_Monitor.removedKeywords - removedAttrs = FC3_Monitor.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - FC3_Monitor.__init__(self, writePriority, *args, **kwargs) - self.probe = kwargs.get("probe", True) - - def __str__(self): - retval = KickstartCommand.__str__(self) - retval += "monitor" - - if self.hsync != "": - retval += " --hsync=%s" % self.hsync - if self.monitor != "": - retval += " --monitor=\"%s\"" % self.monitor - if not self.probe: - retval += " --noprobe" - if self.vsync != "": - retval += " --vsync=%s" % self.vsync - - if retval != "monitor": - return retval + "\n" - else: - return "" - - def _getParser(self): - op = FC3_Monitor._getParser(self) - op.add_option("--noprobe", dest="probe", action="store_false", - default=True) - return op - -class F10_Monitor(DeprecatedCommand): - def __init__(self): - DeprecatedCommand.__init__(self) diff --git a/mic/kickstart/pykickstart/commands/mouse.py b/mic/kickstart/pykickstart/commands/mouse.py deleted file mode 100644 index c643bce..0000000 --- a/mic/kickstart/pykickstart/commands/mouse.py +++ /dev/null @@ -1,70 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class RHEL3_Mouse(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.device = kwargs.get("device", "") - self.emulthree = kwargs.get("emulthree", False) - self.mouse = kwargs.get("mouse", "") - - def __str__(self): - retval = KickstartCommand.__str__(self) - - opts = "" - if self.device: - opts += "--device=%s " % self.device - if self.emulthree: - opts += "--emulthree " - - if self.mouse: - retval += "# System mouse\nmouse %s%s\n" % (opts, self.mouse) - return retval - - def _getParser(self): - op = KSOptionParser() - op.add_option("--device", dest="device", default="") - op.add_option("--emulthree", dest="emulthree", default=False, action="store_true") - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - self._setToSelf(self.op, opts) - - if len(extra) != 1: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s requires one argument") % "mouse") - - self.mouse = extra[0] - return self - -class FC3_Mouse(DeprecatedCommand): - def __init__(self): - DeprecatedCommand.__init__(self) diff --git a/mic/kickstart/pykickstart/commands/multipath.py b/mic/kickstart/pykickstart/commands/multipath.py deleted file mode 100644 index 84ba755..0000000 --- a/mic/kickstart/pykickstart/commands/multipath.py +++ /dev/null @@ -1,111 +0,0 @@ -# -# Chris Lumens -# Peter Jones -# -# Copyright 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC6_MpPathData(BaseData): - removedKeywords = BaseData.removedKeywords - removedAttrs = BaseData.removedAttrs - - def __init__(self, *args, **kwargs): - BaseData.__init__(self, *args, **kwargs) - self.mpdev = kwargs.get("mpdev", "") - self.device = kwargs.get("device", "") - self.rule = kwargs.get("rule", "") - - def __str__(self): - return " --device=%s --rule=\"%s\"" % (self.device, self.rule) - -class FC6_MultiPathData(BaseData): - removedKeywords = BaseData.removedKeywords - removedAttrs = BaseData.removedAttrs - - def __init__(self, *args, **kwargs): - BaseData.__init__(self, *args, **kwargs) - self.name = kwargs.get("name", "") - self.paths = kwargs.get("paths", []) - - def __str__(self): - retval = BaseData.__str__(self) - - for path in self.paths: - retval += "multipath --mpdev=%s %s\n" % (self.name, path.__str__()) - - return retval - -class FC6_MultiPath(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=50, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.mpaths = kwargs.get("mpaths", []) - - def __str__(self): - retval = "" - for mpath in self.mpaths: - retval += mpath.__str__() - - return retval - - def _getParser(self): - op = KSOptionParser() - op.add_option("--name", dest="name", action="store", type="string", - required=1) - op.add_option("--device", dest="device", action="store", type="string", - required=1) - op.add_option("--rule", dest="rule", action="store", type="string", - required=1) - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - dd = FC6_MpPathData() - self._setToObj(self.op, opts, dd) - dd.lineno = self.lineno - dd.mpdev = dd.mpdev.split('/')[-1] - - parent = None - for x in range(0, len(self.mpaths)): - mpath = self.mpaths[x] - for path in mpath.paths: - if path.device == dd.device: - mapping = {"device": path.device, "multipathdev": path.mpdev} - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Device '%(device)s' is already used in multipath '%(multipathdev)s'") % mapping) - if mpath.name == dd.mpdev: - parent = x - - if parent is None: - mpath = FC6_MultiPathData() - return mpath - else: - mpath = self.mpaths[parent] - - return dd - - def dataList(self): - return self.mpaths diff --git a/mic/kickstart/pykickstart/commands/network.py b/mic/kickstart/pykickstart/commands/network.py deleted file mode 100644 index 9b67f92..0000000 --- a/mic/kickstart/pykickstart/commands/network.py +++ /dev/null @@ -1,363 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007, 2008 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.constants import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -import warnings -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC3_NetworkData(BaseData): - removedKeywords = BaseData.removedKeywords - removedAttrs = BaseData.removedAttrs - - def __init__(self, *args, **kwargs): - BaseData.__init__(self, *args, **kwargs) - self.bootProto = kwargs.get("bootProto", BOOTPROTO_DHCP) - self.dhcpclass = kwargs.get("dhcpclass", "") - self.device = kwargs.get("device", "") - self.essid = kwargs.get("essid", "") - self.ethtool = kwargs.get("ethtool", "") - self.gateway = kwargs.get("gateway", "") - self.hostname = kwargs.get("hostname", "") - self.ip = kwargs.get("ip", "") - self.mtu = kwargs.get("mtu", "") - self.nameserver = kwargs.get("nameserver", "") - self.netmask = kwargs.get("netmask", "") - self.nodns = kwargs.get("nodns", False) - self.onboot = kwargs.get("onboot", True) - self.wepkey = kwargs.get("wepkey", "") - - def __eq__(self, y): - return self.device and self.device == y.device - - def _getArgsAsStr(self): - retval = "" - - if self.bootProto != "": - retval += " --bootproto=%s" % self.bootProto - if self.dhcpclass != "": - retval += " --dhcpclass=%s" % self.dhcpclass - if self.device != "": - retval += " --device=%s" % self.device - if self.essid != "": - retval += " --essid=\"%s\"" % self.essid - if self.ethtool != "": - retval += " --ethtool=\"%s\"" % self.ethtool - if self.gateway != "": - retval += " --gateway=%s" % self.gateway - if self.hostname != "": - retval += " --hostname=%s" % self.hostname - if self.ip != "": - retval += " --ip=%s" % self.ip - if self.mtu != "": - retval += " --mtu=%s" % self.mtu - if self.nameserver != "": - retval += " --nameserver=%s" % self.nameserver - if self.netmask != "": - retval += " --netmask=%s" % self.netmask - if self.nodns: - retval += " --nodns" - if not self.onboot: - retval += " --onboot=off" - if self.wepkey != "": - retval += " --wepkey=%s" % self.wepkey - - return retval - - def __str__(self): - retval = BaseData.__str__(self) - retval += "network %s\n" % self._getArgsAsStr() - return retval - -class FC4_NetworkData(FC3_NetworkData): - removedKeywords = FC3_NetworkData.removedKeywords - removedAttrs = FC3_NetworkData.removedAttrs - - def __init__(self, *args, **kwargs): - FC3_NetworkData.__init__(self, *args, **kwargs) - self.notksdevice = kwargs.get("notksdevice", False) - - def _getArgsAsStr(self): - retval = FC3_NetworkData._getArgsAsStr(self) - - if self.notksdevice: - retval += " --notksdevice" - - return retval - -class FC6_NetworkData(FC4_NetworkData): - removedKeywords = FC4_NetworkData.removedKeywords - removedAttrs = FC4_NetworkData.removedAttrs - - def __init__(self, *args, **kwargs): - FC4_NetworkData.__init__(self, *args, **kwargs) - self.noipv4 = kwargs.get("noipv4", False) - self.noipv6 = kwargs.get("noipv6", False) - - def _getArgsAsStr(self): - retval = FC4_NetworkData._getArgsAsStr(self) - - if self.noipv4: - retval += " --noipv4" - if self.noipv6: - retval += " --noipv6" - - return retval - -class F8_NetworkData(FC6_NetworkData): - removedKeywords = FC6_NetworkData.removedKeywords - removedAttrs = FC6_NetworkData.removedAttrs - - def __init__(self, *args, **kwargs): - FC6_NetworkData.__init__(self, *args, **kwargs) - self.ipv6 = kwargs.get("ipv6", "") - - def _getArgsAsStr(self): - retval = FC6_NetworkData._getArgsAsStr(self) - - if self.ipv6 != "": - retval += " --ipv6" % self.ipv6 - - return retval - -class F16_NetworkData(F8_NetworkData): - removedKeywords = F8_NetworkData.removedKeywords - removedAttrs = F8_NetworkData.removedAttrs - - def __init__(self, *args, **kwargs): - F8_NetworkData.__init__(self, *args, **kwargs) - self.activate = kwargs.get("activate", False) - self.nodefroute = kwargs.get("nodefroute", False) - self.wpakey = kwargs.get("wpakey", "") - - def _getArgsAsStr(self): - retval = F8_NetworkData._getArgsAsStr(self) - - if self.activate: - retval += " --activate" - if self.nodefroute: - retval += " --nodefroute" - if self.wpakey != "": - retval += "--wpakey=%s" % self.wpakey - - return retval - -class RHEL4_NetworkData(FC3_NetworkData): - removedKeywords = FC3_NetworkData.removedKeywords - removedAttrs = FC3_NetworkData.removedAttrs - - def __init__(self, *args, **kwargs): - FC3_NetworkData.__init__(self, *args, **kwargs) - self.notksdevice = kwargs.get("notksdevice", False) - - def _getArgsAsStr(self): - retval = FC3_NetworkData._getArgsAsStr(self) - - if self.notksdevice: - retval += " --notksdevice" - - return retval - -class RHEL6_NetworkData(F8_NetworkData): - removedKeywords = F8_NetworkData.removedKeywords - removedAttrs = F8_NetworkData.removedAttrs - - def __init__(self, *args, **kwargs): - F8_NetworkData.__init__(self, *args, **kwargs) - self.activate = kwargs.get("activate", False) - self.nodefroute = kwargs.get("nodefroute", False) - - def _getArgsAsStr(self): - retval = F8_NetworkData._getArgsAsStr(self) - - if self.activate: - retval += " --activate" - if self.nodefroute: - retval += " --nodefroute" - - return retval - -class FC3_Network(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.bootprotoList = [BOOTPROTO_DHCP, BOOTPROTO_BOOTP, - BOOTPROTO_STATIC] - - self.op = self._getParser() - - self.network = kwargs.get("network", []) - - def __str__(self): - retval = "" - - for nic in self.network: - retval += nic.__str__() - - if retval != "": - return "# Network information\n" + retval - else: - return "" - - def _getParser(self): - op = KSOptionParser() - op.add_option("--bootproto", dest="bootProto", - default=BOOTPROTO_DHCP, - choices=self.bootprotoList) - op.add_option("--dhcpclass", dest="dhcpclass") - op.add_option("--device", dest="device") - op.add_option("--essid", dest="essid") - op.add_option("--ethtool", dest="ethtool") - op.add_option("--gateway", dest="gateway") - op.add_option("--hostname", dest="hostname") - op.add_option("--ip", dest="ip") - op.add_option("--mtu", dest="mtu") - op.add_option("--nameserver", dest="nameserver") - op.add_option("--netmask", dest="netmask") - op.add_option("--nodns", dest="nodns", action="store_true", - default=False) - op.add_option("--onboot", dest="onboot", action="store", - type="ksboolean") - op.add_option("--wepkey", dest="wepkey") - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - nd = self.handler.NetworkData() - self._setToObj(self.op, opts, nd) - nd.lineno = self.lineno - - # Check for duplicates in the data list. - if nd in self.dataList(): - warnings.warn(_("A network device with the name %s has already been defined.") % nd.device) - - return nd - - def dataList(self): - return self.network - -class FC4_Network(FC3_Network): - removedKeywords = FC3_Network.removedKeywords - removedAttrs = FC3_Network.removedAttrs - - def _getParser(self): - op = FC3_Network._getParser(self) - op.add_option("--notksdevice", dest="notksdevice", action="store_true", - default=False) - return op - -class FC6_Network(FC4_Network): - removedKeywords = FC4_Network.removedKeywords - removedAttrs = FC4_Network.removedAttrs - - def _getParser(self): - op = FC4_Network._getParser(self) - op.add_option("--noipv4", dest="noipv4", action="store_true", - default=False) - op.add_option("--noipv6", dest="noipv6", action="store_true", - default=False) - return op - -class F8_Network(FC6_Network): - removedKeywords = FC6_Network.removedKeywords - removedAttrs = FC6_Network.removedAttrs - - def _getParser(self): - op = FC6_Network._getParser(self) - op.add_option("--ipv6", dest="ipv6") - return op - -class F9_Network(F8_Network): - removedKeywords = F8_Network.removedKeywords - removedAttrs = F8_Network.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - F8_Network.__init__(self, writePriority, *args, **kwargs) - self.bootprotoList.append(BOOTPROTO_QUERY) - - def _getParser(self): - op = F8_Network._getParser(self) - op.add_option("--bootproto", dest="bootProto", - default=BOOTPROTO_DHCP, - choices=self.bootprotoList) - return op - -class F16_Network(F9_Network): - removedKeywords = F9_Network.removedKeywords - removedAttrs = F9_Network.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - F9_Network.__init__(self, writePriority, *args, **kwargs) - self.bootprotoList.append(BOOTPROTO_IBFT) - - def _getParser(self): - op = F9_Network._getParser(self) - op.add_option("--activate", dest="activate", action="store_true", - default=False) - op.add_option("--nodefroute", dest="nodefroute", action="store_true", - default=False) - op.add_option("--wpakey", dest="wpakey", action="store", default="") - return op - -class RHEL4_Network(FC3_Network): - removedKeywords = FC3_Network.removedKeywords - removedAttrs = FC3_Network.removedAttrs - - def _getParser(self): - op = FC3_Network._getParser(self) - op.add_option("--notksdevice", dest="notksdevice", action="store_true", - default=False) - return op - -class RHEL5_Network(FC6_Network): - removedKeywords = FC6_Network.removedKeywords - removedAttrs = FC6_Network.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - FC6_Network.__init__(self, writePriority, *args, **kwargs) - self.bootprotoList.append(BOOTPROTO_QUERY) - - def _getParser(self): - op = FC6_Network._getParser(self) - op.add_option("--bootproto", dest="bootProto", - default=BOOTPROTO_DHCP, - choices=self.bootprotoList) - return op - -class RHEL6_Network(F9_Network): - removedKeywords = F9_Network.removedKeywords - removedAttrs = F9_Network.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - F9_Network.__init__(self, writePriority, *args, **kwargs) - self.bootprotoList.append(BOOTPROTO_IBFT) - - def _getParser(self): - op = F9_Network._getParser(self) - op.add_option("--activate", dest="activate", action="store_true", - default=False) - op.add_option("--nodefroute", dest="nodefroute", action="store_true", - default=False) - return op diff --git a/mic/kickstart/pykickstart/commands/partition.py b/mic/kickstart/pykickstart/commands/partition.py deleted file mode 100644 index 34e5b7a..0000000 --- a/mic/kickstart/pykickstart/commands/partition.py +++ /dev/null @@ -1,348 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007, 2008 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -import warnings -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC3_PartData(BaseData): - removedKeywords = BaseData.removedKeywords - removedAttrs = BaseData.removedAttrs - - def __init__(self, *args, **kwargs): - BaseData.__init__(self, *args, **kwargs) - self.active = kwargs.get("active", False) - self.primOnly = kwargs.get("primOnly", False) - self.end = kwargs.get("end", 0) - self.fstype = kwargs.get("fstype", "") - self.grow = kwargs.get("grow", False) - self.maxSizeMB = kwargs.get("maxSizeMB", 0) - self.format = kwargs.get("format", True) - self.onbiosdisk = kwargs.get("onbiosdisk", "") - self.disk = kwargs.get("disk", "") - self.onPart = kwargs.get("onPart", "") - self.recommended = kwargs.get("recommended", False) - self.size = kwargs.get("size", None) - self.start = kwargs.get("start", 0) - self.mountpoint = kwargs.get("mountpoint", "") - - def __eq__(self, y): - return self.mountpoint == y.mountpoint - - def _getArgsAsStr(self): - retval = "" - - if self.active: - retval += " --active" - if self.primOnly: - retval += " --asprimary" - if hasattr(self, "end") and self.end != 0: - retval += " --end=%s" % self.end - if self.fstype != "": - retval += " --fstype=\"%s\"" % self.fstype - if self.grow: - retval += " --grow" - if self.maxSizeMB > 0: - retval += " --maxsize=%d" % self.maxSizeMB - if not self.format: - retval += " --noformat" - if self.onbiosdisk != "": - retval += " --onbiosdisk=%s" % self.onbiosdisk - if self.disk != "": - retval += " --ondisk=%s" % self.disk - if self.onPart != "": - retval += " --onpart=%s" % self.onPart - if self.recommended: - retval += " --recommended" - if self.size and self.size != 0: - retval += " --size=%s" % self.size - if hasattr(self, "start") and self.start != 0: - retval += " --start=%s" % self.start - - return retval - - def __str__(self): - retval = BaseData.__str__(self) - retval += "part %s%s\n" % (self.mountpoint, self._getArgsAsStr()) - return retval - -class FC4_PartData(FC3_PartData): - removedKeywords = FC3_PartData.removedKeywords - removedAttrs = FC3_PartData.removedAttrs - - def __init__(self, *args, **kwargs): - FC3_PartData.__init__(self, *args, **kwargs) - self.bytesPerInode = kwargs.get("bytesPerInode", 4096) - self.fsopts = kwargs.get("fsopts", "") - self.label = kwargs.get("label", "") - - def _getArgsAsStr(self): - retval = FC3_PartData._getArgsAsStr(self) - - if hasattr(self, "bytesPerInode") and self.bytesPerInode != 0: - retval += " --bytes-per-inode=%d" % self.bytesPerInode - if self.fsopts != "": - retval += " --fsoptions=\"%s\"" % self.fsopts - if self.label != "": - retval += " --label=%s" % self.label - - return retval - -class RHEL5_PartData(FC4_PartData): - removedKeywords = FC4_PartData.removedKeywords - removedAttrs = FC4_PartData.removedAttrs - - def __init__(self, *args, **kwargs): - FC4_PartData.__init__(self, *args, **kwargs) - self.encrypted = kwargs.get("encrypted", False) - self.passphrase = kwargs.get("passphrase", "") - - def _getArgsAsStr(self): - retval = FC4_PartData._getArgsAsStr(self) - - if self.encrypted: - retval += " --encrypted" - - if self.passphrase != "": - retval += " --passphrase=\"%s\"" % self.passphrase - - return retval - -class F9_PartData(FC4_PartData): - removedKeywords = FC4_PartData.removedKeywords + ["bytesPerInode"] - removedAttrs = FC4_PartData.removedAttrs + ["bytesPerInode"] - - def __init__(self, *args, **kwargs): - FC4_PartData.__init__(self, *args, **kwargs) - self.deleteRemovedAttrs() - - self.fsopts = kwargs.get("fsopts", "") - self.label = kwargs.get("label", "") - self.fsprofile = kwargs.get("fsprofile", "") - self.encrypted = kwargs.get("encrypted", False) - self.passphrase = kwargs.get("passphrase", "") - - def _getArgsAsStr(self): - retval = FC4_PartData._getArgsAsStr(self) - - if self.fsprofile != "": - retval += " --fsprofile=\"%s\"" % self.fsprofile - if self.encrypted: - retval += " --encrypted" - - if self.passphrase != "": - retval += " --passphrase=\"%s\"" % self.passphrase - - return retval - -class F11_PartData(F9_PartData): - removedKeywords = F9_PartData.removedKeywords + ["start", "end"] - removedAttrs = F9_PartData.removedAttrs + ["start", "end"] - -class F12_PartData(F11_PartData): - removedKeywords = F11_PartData.removedKeywords - removedAttrs = F11_PartData.removedAttrs - - def __init__(self, *args, **kwargs): - F11_PartData.__init__(self, *args, **kwargs) - - self.escrowcert = kwargs.get("escrowcert", "") - self.backuppassphrase = kwargs.get("backuppassphrase", False) - - def _getArgsAsStr(self): - retval = F11_PartData._getArgsAsStr(self) - - if self.encrypted and self.escrowcert != "": - retval += " --escrowcert=\"%s\"" % self.escrowcert - - if self.backuppassphrase: - retval += " --backuppassphrase" - - return retval - -F14_PartData = F12_PartData - -class FC3_Partition(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=130, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.partitions = kwargs.get("partitions", []) - - def __str__(self): - retval = "" - - for part in self.partitions: - retval += part.__str__() - - if retval != "": - return "# Disk partitioning information\n" + retval - else: - return "" - - def _getParser(self): - def part_cb (option, opt_str, value, parser): - if value.startswith("/dev/"): - parser.values.ensure_value(option.dest, value[5:]) - else: - parser.values.ensure_value(option.dest, value) - - op = KSOptionParser() - op.add_option("--active", dest="active", action="store_true", - default=False) - op.add_option("--asprimary", dest="primOnly", action="store_true", - default=False) - op.add_option("--end", dest="end", action="store", type="int", - nargs=1) - op.add_option("--fstype", "--type", dest="fstype") - op.add_option("--grow", dest="grow", action="store_true", default=False) - op.add_option("--maxsize", dest="maxSizeMB", action="store", type="int", - nargs=1) - op.add_option("--noformat", dest="format", action="store_false", - default=True) - op.add_option("--onbiosdisk", dest="onbiosdisk") - 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) - op.add_option("--size", dest="size", action="store", type="int", - nargs=1) - op.add_option("--start", dest="start", action="store", type="int", - nargs=1) - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - - if len(extra) != 1: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Mount point required for %s") % "partition") - - pd = self.handler.PartData() - self._setToObj(self.op, opts, pd) - pd.lineno = self.lineno - pd.mountpoint=extra[0] - - # Check for duplicates in the data list. - if pd in self.dataList(): - warnings.warn(_("A partition with the mountpoint %s has already been defined.") % pd.mountpoint) - - return pd - - def dataList(self): - return self.partitions - -class FC4_Partition(FC3_Partition): - removedKeywords = FC3_Partition.removedKeywords - removedAttrs = FC3_Partition.removedAttrs - - def __init__(self, writePriority=130, *args, **kwargs): - FC3_Partition.__init__(self, writePriority, *args, **kwargs) - - def part_cb (option, opt_str, value, parser): - if value.startswith("/dev/"): - parser.values.ensure_value(option.dest, value[5:]) - else: - parser.values.ensure_value(option.dest, value) - - def _getParser(self): - op = FC3_Partition._getParser(self) - op.add_option("--bytes-per-inode", dest="bytesPerInode", action="store", - type="int", nargs=1) - op.add_option("--fsoptions", dest="fsopts") - op.add_option("--label", dest="label") - return op - -class RHEL5_Partition(FC4_Partition): - removedKeywords = FC4_Partition.removedKeywords - removedAttrs = FC4_Partition.removedAttrs - - def __init__(self, writePriority=130, *args, **kwargs): - FC4_Partition.__init__(self, writePriority, *args, **kwargs) - - def part_cb (option, opt_str, value, parser): - if value.startswith("/dev/"): - parser.values.ensure_value(option.dest, value[5:]) - else: - parser.values.ensure_value(option.dest, value) - - def _getParser(self): - op = FC4_Partition._getParser(self) - op.add_option("--encrypted", action="store_true", default=False) - op.add_option("--passphrase") - return op - -class F9_Partition(FC4_Partition): - removedKeywords = FC4_Partition.removedKeywords - removedAttrs = FC4_Partition.removedAttrs - - def __init__(self, writePriority=130, *args, **kwargs): - FC4_Partition.__init__(self, writePriority, *args, **kwargs) - - def part_cb (option, opt_str, value, parser): - if value.startswith("/dev/"): - parser.values.ensure_value(option.dest, value[5:]) - else: - parser.values.ensure_value(option.dest, value) - - def _getParser(self): - op = FC4_Partition._getParser(self) - op.add_option("--bytes-per-inode", deprecated=1) - op.add_option("--fsprofile") - op.add_option("--encrypted", action="store_true", default=False) - op.add_option("--passphrase") - return op - -class F11_Partition(F9_Partition): - removedKeywords = F9_Partition.removedKeywords - removedAttrs = F9_Partition.removedAttrs - - def _getParser(self): - op = F9_Partition._getParser(self) - op.add_option("--start", deprecated=1) - op.add_option("--end", deprecated=1) - return op - -class F12_Partition(F11_Partition): - removedKeywords = F11_Partition.removedKeywords - removedAttrs = F11_Partition.removedAttrs - - def _getParser(self): - op = F11_Partition._getParser(self) - op.add_option("--escrowcert") - op.add_option("--backuppassphrase", action="store_true", default=False) - return op - -class F14_Partition(F12_Partition): - removedKeywords = F12_Partition.removedKeywords - removedAttrs = F12_Partition.removedAttrs - - def _getParser(self): - op = F12_Partition._getParser(self) - op.remove_option("--bytes-per-inode") - op.remove_option("--start") - op.remove_option("--end") - return op diff --git a/mic/kickstart/pykickstart/commands/raid.py b/mic/kickstart/pykickstart/commands/raid.py deleted file mode 100644 index 0f4c92a..0000000 --- a/mic/kickstart/pykickstart/commands/raid.py +++ /dev/null @@ -1,365 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007, 2008, 2011 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -import warnings -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC3_RaidData(BaseData): - removedKeywords = BaseData.removedKeywords - removedAttrs = BaseData.removedAttrs - - def __init__(self, *args, **kwargs): - BaseData.__init__(self, *args, **kwargs) - self.device = kwargs.get("device", None) - self.fstype = kwargs.get("fstype", "") - self.level = kwargs.get("level", "") - self.format = kwargs.get("format", True) - self.spares = kwargs.get("spares", 0) - self.preexist = kwargs.get("preexist", False) - self.mountpoint = kwargs.get("mountpoint", "") - self.members = kwargs.get("members", []) - - def __eq__(self, y): - return self.device == y.device - - def _getArgsAsStr(self): - retval = "" - - if self.device != "": - retval += " --device=%s" % self.device - if self.fstype != "": - retval += " --fstype=\"%s\"" % self.fstype - if self.level != "": - retval += " --level=%s" % self.level - if not self.format: - retval += " --noformat" - if self.spares != 0: - retval += " --spares=%d" % self.spares - if self.preexist: - retval += " --useexisting" - - return retval - - def __str__(self): - retval = BaseData.__str__(self) - retval += "raid %s%s %s\n" % (self.mountpoint, self._getArgsAsStr(), - " ".join(self.members)) - return retval - -class FC4_RaidData(FC3_RaidData): - removedKeywords = FC3_RaidData.removedKeywords - removedAttrs = FC3_RaidData.removedAttrs - - def __init__(self, *args, **kwargs): - FC3_RaidData.__init__(self, *args, **kwargs) - self.fsopts = kwargs.get("fsopts", "") - - def _getArgsAsStr(self): - retval = FC3_RaidData._getArgsAsStr(self) - - if self.fsopts != "": - retval += " --fsoptions=\"%s\"" % self.fsopts - - return retval - -class FC5_RaidData(FC4_RaidData): - removedKeywords = FC4_RaidData.removedKeywords - removedAttrs = FC4_RaidData.removedAttrs - - def __init__(self, *args, **kwargs): - FC4_RaidData.__init__(self, *args, **kwargs) - self.bytesPerInode = kwargs.get("bytesPerInode", 4096) - - def _getArgsAsStr(self): - retval = FC4_RaidData._getArgsAsStr(self) - - if hasattr(self, "bytesPerInode") and self.bytesPerInode != 0: - retval += " --bytes-per-inode=%d" % self.bytesPerInode - - return retval - -class RHEL5_RaidData(FC5_RaidData): - removedKeywords = FC5_RaidData.removedKeywords - removedAttrs = FC5_RaidData.removedAttrs - - def __init__(self, *args, **kwargs): - FC5_RaidData.__init__(self, *args, **kwargs) - self.encrypted = kwargs.get("encrypted", False) - self.passphrase = kwargs.get("passphrase", "") - - def _getArgsAsStr(self): - retval = FC5_RaidData._getArgsAsStr(self) - - if self.encrypted: - retval += " --encrypted" - - if self.passphrase != "": - retval += " --passphrase=\"%s\"" % self.passphrase - - return retval - -F7_RaidData = FC5_RaidData - -class F9_RaidData(FC5_RaidData): - removedKeywords = FC5_RaidData.removedKeywords + ["bytesPerInode"] - removedAttrs = FC5_RaidData.removedAttrs + ["bytesPerInode"] - - def __init__(self, *args, **kwargs): - FC5_RaidData.__init__(self, *args, **kwargs) - self.deleteRemovedAttrs() - - self.fsprofile = kwargs.get("fsprofile", "") - self.encrypted = kwargs.get("encrypted", False) - self.passphrase = kwargs.get("passphrase", "") - - def _getArgsAsStr(self): - retval = FC5_RaidData._getArgsAsStr(self) - - if self.fsprofile != "": - retval += " --fsprofile=\"%s\"" % self.fsprofile - if self.encrypted: - retval += " --encrypted" - - if self.passphrase != "": - retval += " --passphrase=\"%s\"" % self.passphrase - - return retval - -class F12_RaidData(F9_RaidData): - removedKeywords = F9_RaidData.removedKeywords - removedAttrs = F9_RaidData.removedAttrs - - def __init__(self, *args, **kwargs): - F9_RaidData.__init__(self, *args, **kwargs) - self.deleteRemovedAttrs() - - self.escrowcert = kwargs.get("escrowcert", "") - self.backuppassphrase = kwargs.get("backuppassphrase", False) - - def _getArgsAsStr(self): - retval = F9_RaidData._getArgsAsStr(self) - - if self.encrypted and self.escrowcert != "": - retval += " --escrowcert=\"%s\"" % self.escrowcert - - if self.backuppassphrase: - retval += " --backuppassphrase" - return retval - -F13_RaidData = F12_RaidData - -F14_RaidData = F13_RaidData - -class F15_RaidData(F14_RaidData): - removedKeywords = F14_RaidData.removedKeywords - removedAttrs = F14_RaidData.removedAttrs - - def __init__(self, *args, **kwargs): - F14_RaidData.__init__(self, *args, **kwargs) - self.deleteRemovedAttrs() - - self.label = kwargs.get("label", "") - - def _getArgsAsStr(self): - retval = F14_RaidData._getArgsAsStr(self) - - if self.label != "": - retval += " --label=%s" % self.label - - return retval - -class FC3_Raid(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=131, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - # A dict of all the RAID levels we support. This means that if we - # support more levels in the future, subclasses don't have to - # duplicate too much. - self.levelMap = { "RAID0": "RAID0", "0": "RAID0", - "RAID1": "RAID1", "1": "RAID1", - "RAID5": "RAID5", "5": "RAID5", - "RAID6": "RAID6", "6": "RAID6" } - - self.raidList = kwargs.get("raidList", []) - - def __str__(self): - retval = "" - - for raid in self.raidList: - retval += raid.__str__() - - return retval - - def _getParser(self): - def raid_cb (option, opt_str, value, parser): - parser.values.format = False - parser.values.preexist = True - - def device_cb (option, opt_str, value, parser): - if value[0:2] == "md": - parser.values.ensure_value(option.dest, value[2:]) - else: - parser.values.ensure_value(option.dest, value) - - def level_cb (option, opt_str, value, parser): - if self.levelMap.has_key(value): - parser.values.ensure_value(option.dest, self.levelMap[value]) - - op = KSOptionParser() - op.add_option("--device", action="callback", callback=device_cb, - dest="device", type="string", nargs=1, required=1) - op.add_option("--fstype", dest="fstype") - op.add_option("--level", dest="level", action="callback", - callback=level_cb, type="string", nargs=1) - op.add_option("--noformat", action="callback", callback=raid_cb, - dest="format", default=True, nargs=0) - op.add_option("--spares", dest="spares", action="store", type="int", - nargs=1, default=0) - op.add_option("--useexisting", dest="preexist", action="store_true", - default=False) - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - - if len(extra) == 0: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Mount point required for %s") % "raid") - if len(extra) == 1: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Partitions required for %s") % "raid") - - rd = self.handler.RaidData() - self._setToObj(self.op, opts, rd) - rd.lineno = self.lineno - - # --device can't just take an int in the callback above, because it - # could be specificed as "mdX", which causes optparse to error when - # it runs int(). - rd.device = int(rd.device) - rd.mountpoint = extra[0] - rd.members = extra[1:] - - # Check for duplicates in the data list. - if rd in self.dataList(): - warnings.warn(_("A RAID device with the name %s has already been defined.") % rd.device) - - return rd - - def dataList(self): - return self.raidList - -class FC4_Raid(FC3_Raid): - removedKeywords = FC3_Raid.removedKeywords - removedAttrs = FC3_Raid.removedAttrs - - def _getParser(self): - op = FC3_Raid._getParser(self) - op.add_option("--fsoptions", dest="fsopts") - return op - -class FC5_Raid(FC4_Raid): - removedKeywords = FC4_Raid.removedKeywords - removedAttrs = FC4_Raid.removedAttrs - - def _getParser(self): - op = FC4_Raid._getParser(self) - op.add_option("--bytes-per-inode", dest="bytesPerInode", action="store", - type="int", nargs=1) - return op - -class RHEL5_Raid(FC5_Raid): - removedKeywords = FC5_Raid.removedKeywords - removedAttrs = FC5_Raid.removedAttrs - - def __init__(self, writePriority=131, *args, **kwargs): - FC5_Raid.__init__(self, writePriority, *args, **kwargs) - - self.levelMap.update({"RAID10": "RAID10", "10": "RAID10"}) - - def _getParser(self): - op = FC5_Raid._getParser(self) - op.add_option("--encrypted", action="store_true", default=False) - op.add_option("--passphrase") - return op - -class F7_Raid(FC5_Raid): - removedKeywords = FC5_Raid.removedKeywords - removedAttrs = FC5_Raid.removedAttrs - - def __init__(self, writePriority=131, *args, **kwargs): - FC5_Raid.__init__(self, writePriority, *args, **kwargs) - - self.levelMap.update({"RAID10": "RAID10", "10": "RAID10"}) - -class F9_Raid(F7_Raid): - removedKeywords = F7_Raid.removedKeywords - removedAttrs = F7_Raid.removedAttrs - - def _getParser(self): - op = F7_Raid._getParser(self) - op.add_option("--bytes-per-inode", deprecated=1) - op.add_option("--fsprofile") - op.add_option("--encrypted", action="store_true", default=False) - op.add_option("--passphrase") - return op - -class F12_Raid(F9_Raid): - removedKeywords = F9_Raid.removedKeywords - removedAttrs = F9_Raid.removedAttrs - - def _getParser(self): - op = F9_Raid._getParser(self) - op.add_option("--escrowcert") - op.add_option("--backuppassphrase", action="store_true", default=False) - return op - -class F13_Raid(F12_Raid): - removedKeywords = F12_Raid.removedKeywords - removedAttrs = F12_Raid.removedAttrs - - def __init__(self, writePriority=131, *args, **kwargs): - F12_Raid.__init__(self, writePriority, *args, **kwargs) - - self.levelMap.update({"RAID4": "RAID4", "4": "RAID4"}) - -class F14_Raid(F13_Raid): - removedKeywords = F13_Raid.removedKeywords - removedAttrs = F13_Raid.removedAttrs - - def _getParser(self): - op = F13_Raid._getParser(self) - op.remove_option("--bytes-per-inode") - return op - -class F15_Raid(F14_Raid): - removedKeywords = F14_Raid.removedKeywords - removedAttrs = F14_Raid.removedAttrs - - def _getParser(self): - op = F14_Raid._getParser(self) - op.add_option("--label") - return op diff --git a/mic/kickstart/pykickstart/commands/reboot.py b/mic/kickstart/pykickstart/commands/reboot.py deleted file mode 100644 index 391af14..0000000 --- a/mic/kickstart/pykickstart/commands/reboot.py +++ /dev/null @@ -1,79 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.constants import * -from pykickstart.errors import * -from pykickstart.options import * - -class FC3_Reboot(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.action = kwargs.get("action", None) - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.action == KS_REBOOT: - retval += "# Reboot after installation\nreboot\n" - elif self.action == KS_SHUTDOWN: - retval += "# Shutdown after installation\nshutdown\n" - - return retval - - def parse(self, args): - if self.currentCmd == "reboot": - self.action = KS_REBOOT - else: - self.action = KS_SHUTDOWN - - return self - -class FC6_Reboot(FC3_Reboot): - removedKeywords = FC3_Reboot.removedKeywords - removedAttrs = FC3_Reboot.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - FC3_Reboot.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.eject = kwargs.get("eject", False) - - def __str__(self): - retval = FC3_Reboot.__str__(self).rstrip() - - if self.eject: - retval += " --eject" - - return retval + "\n" - - def _getParser(self): - op = KSOptionParser() - op.add_option("--eject", dest="eject", action="store_true", - default=False) - return op - - def parse(self, args): - FC3_Reboot.parse(self, args) - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - self._setToSelf(self.op, opts) - return self diff --git a/mic/kickstart/pykickstart/commands/repo.py b/mic/kickstart/pykickstart/commands/repo.py deleted file mode 100644 index 543ef94..0000000 --- a/mic/kickstart/pykickstart/commands/repo.py +++ /dev/null @@ -1,249 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2007, 2008, 2009 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.constants import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -import warnings -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC6_RepoData(BaseData): - removedKeywords = BaseData.removedKeywords - removedAttrs = BaseData.removedAttrs - - def __init__(self, *args, **kwargs): - BaseData.__init__(self, *args, **kwargs) - self.baseurl = kwargs.get("baseurl", "") - self.mirrorlist = kwargs.get("mirrorlist", None) - self.name = kwargs.get("name", "") - - def __eq__(self, y): - return self.name == y.name - - def _getArgsAsStr(self): - retval = "" - - if self.baseurl: - retval += "--baseurl=%s" % self.baseurl - elif self.mirrorlist: - retval += "--mirrorlist=%s" % self.mirrorlist - - return retval - - def __str__(self): - retval = BaseData.__str__(self) - retval += "repo --name=\"%s\" %s\n" % (self.name, self._getArgsAsStr()) - return retval - -class F8_RepoData(FC6_RepoData): - removedKeywords = FC6_RepoData.removedKeywords - removedAttrs = FC6_RepoData.removedAttrs - - def __init__(self, *args, **kwargs): - FC6_RepoData.__init__(self, *args, **kwargs) - self.cost = kwargs.get("cost", None) - self.includepkgs = kwargs.get("includepkgs", []) - self.excludepkgs = kwargs.get("excludepkgs", []) - - def _getArgsAsStr(self): - retval = FC6_RepoData._getArgsAsStr(self) - - if self.cost: - retval += " --cost=%s" % self.cost - if self.includepkgs: - retval += " --includepkgs=\"%s\"" % ",".join(self.includepkgs) - if self.excludepkgs: - retval += " --excludepkgs=\"%s\"" % ",".join(self.excludepkgs) - - return retval - -class F11_RepoData(F8_RepoData): - removedKeywords = F8_RepoData.removedKeywords - removedAttrs = F8_RepoData.removedAttrs - - def __init__(self, *args, **kwargs): - F8_RepoData.__init__(self, *args, **kwargs) - self.ignoregroups = kwargs.get("ignoregroups", None) - - def _getArgsAsStr(self): - retval = F8_RepoData._getArgsAsStr(self) - - if self.ignoregroups: - retval += " --ignoregroups=true" - return retval - -class F13_RepoData(F11_RepoData): - removedKeywords = F11_RepoData.removedKeywords - removedAttrs = F11_RepoData.removedAttrs - - def __init__(self, *args, **kwargs): - F11_RepoData.__init__(self, *args, **kwargs) - self.proxy = kwargs.get("proxy", "") - - def _getArgsAsStr(self): - retval = F11_RepoData._getArgsAsStr(self) - - if self.proxy: - retval += " --proxy=\"%s\"" % self.proxy - - return retval - -class F14_RepoData(F13_RepoData): - removedKeywords = F13_RepoData.removedKeywords - removedAttrs = F13_RepoData.removedAttrs - - def __init__(self, *args, **kwargs): - F13_RepoData.__init__(self, *args, **kwargs) - self.noverifyssl = kwargs.get("noverifyssl", False) - - def _getArgsAsStr(self): - retval = F13_RepoData._getArgsAsStr(self) - - if self.noverifyssl: - retval += " --noverifyssl" - - return retval - -RHEL6_RepoData = F14_RepoData - -F15_RepoData = F14_RepoData - -class FC6_Repo(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - urlRequired = True - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.repoList = kwargs.get("repoList", []) - - def __str__(self): - retval = "" - for repo in self.repoList: - retval += repo.__str__() - - return retval - - def _getParser(self): - op = KSOptionParser() - op.add_option("--name", dest="name", required=1) - op.add_option("--baseurl") - op.add_option("--mirrorlist") - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - - if len(extra) != 0: - mapping = {"command": "repo", "options": extra} - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Unexpected arguments to %(command)s command: %(options)s") % mapping) - - # This is lame, but I can't think of a better way to make sure only - # one of these two is specified. - if opts.baseurl and opts.mirrorlist: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Only one of --baseurl and --mirrorlist may be specified for repo command.")) - - if self.urlRequired and not opts.baseurl and not opts.mirrorlist: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("One of --baseurl or --mirrorlist must be specified for repo command.")) - - rd = self.handler.RepoData() - self._setToObj(self.op, opts, rd) - rd.lineno = self.lineno - - # Check for duplicates in the data list. - if rd in self.dataList(): - warnings.warn(_("A repo with the name %s has already been defined.") % rd.name) - - return rd - - def dataList(self): - return self.repoList - -class F8_Repo(FC6_Repo): - removedKeywords = FC6_Repo.removedKeywords - removedAttrs = FC6_Repo.removedAttrs - - def __str__(self): - retval = "" - for repo in self.repoList: - retval += repo.__str__() - - return retval - - def _getParser(self): - def list_cb (option, opt_str, value, parser): - for d in value.split(','): - parser.values.ensure_value(option.dest, []).append(d) - - op = FC6_Repo._getParser(self) - op.add_option("--cost", action="store", type="int") - op.add_option("--excludepkgs", action="callback", callback=list_cb, - nargs=1, type="string") - op.add_option("--includepkgs", action="callback", callback=list_cb, - nargs=1, type="string") - return op - - def methodToRepo(self): - if not self.handler.method.url: - raise KickstartError, formatErrorMsg(self.handler.method.lineno, msg=_("Method must be a url to be added to the repo list.")) - reponame = "ks-method-url" - repourl = self.handler.method.url - rd = self.handler.RepoData(name=reponame, baseurl=repourl) - return rd - -class F11_Repo(F8_Repo): - removedKeywords = F8_Repo.removedKeywords - removedAttrs = F8_Repo.removedAttrs - - def _getParser(self): - op = F8_Repo._getParser(self) - op.add_option("--ignoregroups", action="store", type="ksboolean") - return op - -class F13_Repo(F11_Repo): - removedKeywords = F11_Repo.removedKeywords - removedAttrs = F11_Repo.removedAttrs - - def _getParser(self): - op = F11_Repo._getParser(self) - op.add_option("--proxy") - return op - -class F14_Repo(F13_Repo): - removedKeywords = F13_Repo.removedKeywords - removedAttrs = F13_Repo.removedAttrs - - def _getParser(self): - op = F13_Repo._getParser(self) - op.add_option("--noverifyssl", action="store_true", default=False) - return op - -RHEL6_Repo = F14_Repo - -class F15_Repo(F14_Repo): - removedKeywords = F14_Repo.removedKeywords - removedAttrs = F14_Repo.removedAttrs - - urlRequired = False diff --git a/mic/kickstart/pykickstart/commands/rescue.py b/mic/kickstart/pykickstart/commands/rescue.py deleted file mode 100644 index 1893d4e..0000000 --- a/mic/kickstart/pykickstart/commands/rescue.py +++ /dev/null @@ -1,68 +0,0 @@ -# -# Alexander Todorov -# -# Copyright 2008 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class F10_Rescue(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.rescue = False - self.nomount = kwargs.get("nomount", False) - self.romount = kwargs.get("romount", False) - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.rescue: - retval += "rescue" - - if self.nomount: - retval += " --nomount" - if self.romount: - retval += " --romount" - - retval = "# Start rescue mode\n%s\n" % retval - - return retval - - def _getParser(self): - op = KSOptionParser() - op.add_option("--nomount", dest="nomount", action="store_true", default=False) - op.add_option("--romount", dest="romount", action="store_true", default=False) - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - - if opts.nomount and opts.romount: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Only one of --nomount and --romount may be specified for rescue command.")) - - self._setToSelf(self.op, opts) - self.rescue = True - return self diff --git a/mic/kickstart/pykickstart/commands/rootpw.py b/mic/kickstart/pykickstart/commands/rootpw.py deleted file mode 100644 index e038b45..0000000 --- a/mic/kickstart/pykickstart/commands/rootpw.py +++ /dev/null @@ -1,93 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC3_RootPw(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.isCrypted = kwargs.get("isCrypted", False) - self.password = kwargs.get("password", "") - - def _getArgsAsStr(self): - retval = "" - - if self.isCrypted: - retval += " --iscrypted" - - return retval - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.password != "": - retval += "# Root password\nrootpw%s %s\n" % (self._getArgsAsStr(), self.password) - - return retval - - def _getParser(self): - op = KSOptionParser() - op.add_option("--iscrypted", dest="isCrypted", action="store_true", - default=False) - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - self._setToSelf(self.op, opts) - - if len(extra) != 1: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("A single argument is expected for the %s command") % "rootpw") - - self.password = extra[0] - return self - -class F8_RootPw(FC3_RootPw): - removedKeywords = FC3_RootPw.removedKeywords - removedAttrs = FC3_RootPw.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - FC3_RootPw.__init__(self, writePriority, *args, **kwargs) - self.lock = kwargs.get("lock", False) - - def _getArgsAsStr(self): - retval = FC3_RootPw._getArgsAsStr(self) - - if self.lock: - retval += " --lock" - - if not self.isCrypted: - retval += " --plaintext" - - return retval - - def _getParser(self): - op = FC3_RootPw._getParser(self) - op.add_option("--lock", dest="lock", action="store_true", default=False) - op.add_option("--plaintext", dest="isCrypted", action="store_false") - return op diff --git a/mic/kickstart/pykickstart/commands/selinux.py b/mic/kickstart/pykickstart/commands/selinux.py deleted file mode 100644 index 9f8059c..0000000 --- a/mic/kickstart/pykickstart/commands/selinux.py +++ /dev/null @@ -1,64 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.constants import * -from pykickstart.options import * - -class FC3_SELinux(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.selinux = kwargs.get("selinux", None) - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if not retval and self.selinux is None: - return "" - - retval += "# SELinux configuration\n" - - if self.selinux == SELINUX_DISABLED: - retval += "selinux --disabled\n" - elif self.selinux == SELINUX_ENFORCING: - retval += "selinux --enforcing\n" - elif self.selinux == SELINUX_PERMISSIVE: - retval += "selinux --permissive\n" - - return retval - - def _getParser(self): - op = KSOptionParser() - op.add_option("--disabled", dest="selinux", action="store_const", - const=SELINUX_DISABLED) - op.add_option("--enforcing", dest="selinux", action="store_const", - const=SELINUX_ENFORCING) - op.add_option("--permissive", dest="selinux", action="store_const", - const=SELINUX_PERMISSIVE) - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - self._setToSelf(self.op, opts) - return self diff --git a/mic/kickstart/pykickstart/commands/services.py b/mic/kickstart/pykickstart/commands/services.py deleted file mode 100644 index 2e0eab8..0000000 --- a/mic/kickstart/pykickstart/commands/services.py +++ /dev/null @@ -1,71 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC6_Services(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.disabled = kwargs.get("disabled", []) - self.enabled = kwargs.get("enabled", []) - - def __str__(self): - retval = KickstartCommand.__str__(self) - args = "" - - if len(self.disabled) > 0: - args += " --disabled=\"%s\"" % ",".join(self.disabled) - if len(self.enabled) > 0: - args += " --enabled=\"%s\"" % ",".join(self.enabled) - - if args != "": - retval += "# System services\nservices%s\n" % args - - return retval - - def _getParser(self): - def services_cb (option, opt_str, value, parser): - for d in value.split(','): - parser.values.ensure_value(option.dest, []).append(d.strip()) - - op = KSOptionParser() - op.add_option("--disabled", dest="disabled", action="callback", - callback=services_cb, nargs=1, type="string") - op.add_option("--enabled", dest="enabled", action="callback", - callback=services_cb, nargs=1, type="string") - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - self._setToSelf(self.op, opts) - - if len(self.disabled) == 0 and len(self.enabled) == 0: - raise KickstartParseError, formatErrorMsg(self.lineno, msg=_("One of --disabled or --enabled must be provided.")) - - return self diff --git a/mic/kickstart/pykickstart/commands/skipx.py b/mic/kickstart/pykickstart/commands/skipx.py deleted file mode 100644 index 36d1a8d..0000000 --- a/mic/kickstart/pykickstart/commands/skipx.py +++ /dev/null @@ -1,54 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC3_SkipX(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - self.skipx = kwargs.get("skipx", False) - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.skipx: - retval += "# Do not configure the X Window System\nskipx\n" - - return retval - - def _getParser(self): - op = KSOptionParser() - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - if len(extra) > 0: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s does not take any arguments") % "skipx") - - self.skipx = True - return self diff --git a/mic/kickstart/pykickstart/commands/sshpw.py b/mic/kickstart/pykickstart/commands/sshpw.py deleted file mode 100644 index e7867eb..0000000 --- a/mic/kickstart/pykickstart/commands/sshpw.py +++ /dev/null @@ -1,105 +0,0 @@ -# -# Peter Jones -# -# Copyright 2009 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class F13_SshPwData(BaseData): - removedKeywords = BaseData.removedKeywords - removedAttrs = BaseData.removedAttrs - - def __init__(self, *args, **kwargs): - BaseData.__init__(self, *args, **kwargs) - self.username = kwargs.get("username", None) - self.isCrypted = kwargs.get("isCrypted", False) - self.password = kwargs.get("password", "") - self.lock = kwargs.get("lock", False) - - def __eq__(self, y): - return self.username == y.username - - def __str__(self): - retval = BaseData.__str__(self) - - retval += "sshpw" - retval += self._getArgsAsStr() + '\n' - - return retval - - def _getArgsAsStr(self): - retval = "" - - retval += " --username=%s" % self.username - if self.lock: - retval += " --lock" - if self.isCrypted: - retval += " --iscrypted" - else: - retval += " --plaintext" - - retval += " %s" % self.password - return retval - -class F13_SshPw(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.sshUserList = kwargs.get("sshUserList", []) - - def __str__(self): - retval = "" - for user in self.sshUserList: - retval += user.__str__() - - return retval - - def _getParser(self): - op = KSOptionParser() - op.add_option("--username", dest="username", required=True) - op.add_option("--iscrypted", dest="isCrypted", action="store_true", - default=False) - op.add_option("--plaintext", dest="isCrypted", action="store_false") - op.add_option("--lock", dest="lock", action="store_true", default=False) - return op - - def parse(self, args): - ud = self.handler.SshPwData() - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - self._setToObj(self.op, opts, ud) - ud.lineno = self.lineno - - if len(extra) != 1: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("A single argument is expected for the %s command") % "sshpw") - ud.password = extra[0] - - if ud in self.dataList(): - warnings.warn(_("An ssh user with the name %s has already been defined.") % ud.name) - - return ud - - def dataList(self): - return self.sshUserList diff --git a/mic/kickstart/pykickstart/commands/timezone.py b/mic/kickstart/pykickstart/commands/timezone.py deleted file mode 100644 index f5441de..0000000 --- a/mic/kickstart/pykickstart/commands/timezone.py +++ /dev/null @@ -1,86 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC3_Timezone(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.isUtc = kwargs.get("isUtc", False) - self.timezone = kwargs.get("timezone", "") - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.timezone != "": - if self.isUtc: - utc = "--utc" - else: - utc = "" - - retval += "# System timezone\ntimezone %s %s\n" %(utc, self.timezone) - - return retval - - def _getParser(self): - op = KSOptionParser() - op.add_option("--utc", dest="isUtc", action="store_true", default=False) - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - self._setToSelf(self.op, opts) - - if len(extra) != 1: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("A single argument is expected for the %s command") % "timezone") - - self.timezone = extra[0] - return self - -class FC6_Timezone(FC3_Timezone): - removedKeywords = FC3_Timezone.removedKeywords - removedAttrs = FC3_Timezone.removedAttrs - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.timezone != "": - if self.isUtc: - utc = "--isUtc" - else: - utc = "" - - retval += "# System timezone\ntimezone %s %s\n" %(utc, self.timezone) - - return retval - - def _getParser(self): - op = FC3_Timezone._getParser(self) - op.add_option("--utc", "--isUtc", dest="isUtc", action="store_true", default=False) - return op diff --git a/mic/kickstart/pykickstart/commands/updates.py b/mic/kickstart/pykickstart/commands/updates.py deleted file mode 100644 index 53ec49f..0000000 --- a/mic/kickstart/pykickstart/commands/updates.py +++ /dev/null @@ -1,60 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class F7_Updates(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - self.url = kwargs.get("url", "") - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.url == "floppy": - retval += "updates\n" - elif self.url != "": - retval += "updates %s\n" % self.url - - return retval - - def _getParser(self): - op = KSOptionParser() - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - - if len(extra) > 1: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s only takes one argument") % "updates") - elif len(extra) == 0: - self.url = "floppy" - else: - self.url = extra[0] - - return self diff --git a/mic/kickstart/pykickstart/commands/upgrade.py b/mic/kickstart/pykickstart/commands/upgrade.py deleted file mode 100644 index a68a82d..0000000 --- a/mic/kickstart/pykickstart/commands/upgrade.py +++ /dev/null @@ -1,106 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC3_Upgrade(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.upgrade = kwargs.get("upgrade", None) - self.op = self._getParser() - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.upgrade is None: - return retval - - if self.upgrade: - retval += "# Upgrade existing installation\nupgrade\n" - else: - retval += "# Install OS instead of upgrade\ninstall\n" - - return retval - - def _getParser(self): - op = KSOptionParser() - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - - if len(extra) > 0: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s does not take any arguments") % "upgrade") - - if self.currentCmd == "upgrade": - self.upgrade = True - else: - self.upgrade = False - - return self - -class F11_Upgrade(FC3_Upgrade): - removedKeywords = FC3_Upgrade.removedKeywords - removedAttrs = FC3_Upgrade.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - FC3_Upgrade.__init__(self, writePriority, *args, **kwargs) - - self.op = self._getParser() - self.root_device = kwargs.get("root_device", None) - - def __str__(self): - if self.upgrade and (self.root_device is not None): - retval = KickstartCommand.__str__(self) - retval += "# Upgrade existing installation\nupgrade --root-device=%s\n" % self.root_device - else: - retval = FC3_Upgrade.__str__(self) - - return retval - - def _getParser(self): - op = KSOptionParser() - op.add_option("--root-device", dest="root_device") - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - - if len(extra) > 0: - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s does not take any arguments") % "upgrade") - - 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 - else: - self.upgrade = False - - return self diff --git a/mic/kickstart/pykickstart/commands/user.py b/mic/kickstart/pykickstart/commands/user.py deleted file mode 100644 index 189dc75..0000000 --- a/mic/kickstart/pykickstart/commands/user.py +++ /dev/null @@ -1,173 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.constants import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -import warnings -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC6_UserData(BaseData): - removedKeywords = BaseData.removedKeywords - removedAttrs = BaseData.removedAttrs - - def __init__(self, *args, **kwargs): - BaseData.__init__(self, *args, **kwargs) - self.groups = kwargs.get("groups", []) - self.homedir = kwargs.get("homedir", "") - self.isCrypted = kwargs.get("isCrypted", False) - self.name = kwargs.get("name", "") - self.password = kwargs.get("password", "") - self.shell = kwargs.get("shell", "") - self.uid = kwargs.get("uid", None) - - def __eq__(self, y): - return self.name == y.name - - def __str__(self): - retval = BaseData.__str__(self) - - if self.uid != "": - retval += "user" - retval += self._getArgsAsStr() + "\n" - - return retval - - def _getArgsAsStr(self): - retval = "" - - if len(self.groups) > 0: - retval += " --groups=%s" % ",".join(self.groups) - if self.homedir: - retval += " --homedir=%s" % self.homedir - if self.name: - retval += " --name=%s" % self.name - if self.password: - retval += " --password=%s" % self.password - if self.isCrypted: - retval += " --iscrypted" - if self.shell: - retval += " --shell=%s" % self.shell - if self.uid: - retval += " --uid=%s" % self.uid - - return retval - -class F8_UserData(FC6_UserData): - removedKeywords = FC6_UserData.removedKeywords - removedAttrs = FC6_UserData.removedAttrs - - def __init__(self, *args, **kwargs): - FC6_UserData.__init__(self, *args, **kwargs) - self.lock = kwargs.get("lock", False) - - def _getArgsAsStr(self): - retval = FC6_UserData._getArgsAsStr(self) - - if self.lock: - retval += " --lock" - - return retval - -class F12_UserData(F8_UserData): - removedKeywords = F8_UserData.removedKeywords - removedAttrs = F8_UserData.removedAttrs - - def __init__(self, *args, **kwargs): - F8_UserData.__init__(self, *args, **kwargs) - self.gecos = kwargs.get("gecos", "") - - def _getArgsAsStr(self): - retval = F8_UserData._getArgsAsStr(self) - - if self.gecos: - retval += " --gecos=\"%s\"" % (self.gecos,) - - return retval - -class FC6_User(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.userList = kwargs.get("userList", []) - - def __str__(self): - retval = "" - for user in self.userList: - retval += user.__str__() - - return retval - - def _getParser(self): - def groups_cb (option, opt_str, value, parser): - for d in value.split(','): - parser.values.ensure_value(option.dest, []).append(d) - - op = KSOptionParser() - op.add_option("--groups", dest="groups", action="callback", - callback=groups_cb, nargs=1, type="string") - op.add_option("--homedir") - op.add_option("--iscrypted", dest="isCrypted", action="store_true", - default=False) - op.add_option("--name", required=1) - op.add_option("--password") - op.add_option("--shell") - op.add_option("--uid", type="int") - return op - - def parse(self, args): - ud = self.handler.UserData() - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - self._setToObj(self.op, opts, ud) - ud.lineno = self.lineno - - # Check for duplicates in the data list. - if ud in self.dataList(): - warnings.warn(_("A user with the name %s has already been defined.") % ud.name) - - return ud - - def dataList(self): - return self.userList - -class F8_User(FC6_User): - removedKeywords = FC6_User.removedKeywords - removedAttrs = FC6_User.removedAttrs - - def _getParser(self): - op = FC6_User._getParser(self) - op.add_option("--lock", action="store_true", default=False) - op.add_option("--plaintext", dest="isCrypted", action="store_false") - return op - -class F12_User(F8_User): - removedKeywords = F8_User.removedKeywords - removedAttrs = F8_User.removedAttrs - - def _getParser(self): - op = F8_User._getParser(self) - op.add_option("--gecos", type="string") - return op diff --git a/mic/kickstart/pykickstart/commands/vnc.py b/mic/kickstart/pykickstart/commands/vnc.py deleted file mode 100644 index 200ccfb..0000000 --- a/mic/kickstart/pykickstart/commands/vnc.py +++ /dev/null @@ -1,114 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.errors import * -from pykickstart.options import * - -class FC3_Vnc(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.enabled = kwargs.get("enabled", False) - self.password = kwargs.get("password", "") - self.connect = kwargs.get("connect", "") - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if not self.enabled: - return retval - - retval += "vnc" - - if self.connect != "": - retval += " --connect=%s" % self.connect - if self.password != "": - retval += " --password=%s" % self.password - - return retval + "\n" - - def _getParser(self): - op = KSOptionParser() - op.add_option("--connect") - op.add_option("--password", dest="password") - return op - - def parse(self, args): - self.enabled = True - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - self._setToSelf(self.op, opts) - return self - -class FC6_Vnc(FC3_Vnc): - removedKeywords = FC3_Vnc.removedKeywords + ["connect"] - removedAttrs = FC3_Vnc.removedAttrs + ["connect"] - - def __init__(self, writePriority=0, host="", port="", *args, **kwargs): - FC3_Vnc.__init__(self, writePriority, *args, **kwargs) - self.deleteRemovedAttrs() - - self.host = kwargs.get("host", "") - self.port = kwargs.get("port", "") - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if not self.enabled: - return retval - - retval += "vnc" - - if self.host != "": - retval += " --host=%s" % self.host - - if self.port != "": - retval += " --port=%s" % self.port - if self.password != "": - retval += " --password=%s" % self.password - - return retval + "\n" - - def _getParser(self): - def connect_cb (option, opt_str, value, parser): - cargs = value.split(":") - parser.values.ensure_value("host", cargs[0]) - - if len(cargs) > 1: - parser.values.ensure_value("port", cargs[1]) - - op = FC3_Vnc._getParser(self) - op.add_option("--connect", action="callback", callback=connect_cb, - nargs=1, type="string") - op.add_option("--host", dest="host") - op.add_option("--port", dest="port") - return op - -class F9_Vnc(FC6_Vnc): - removedKeywords = FC6_Vnc.removedKeywords - removedAttrs = FC6_Vnc.removedAttrs - - def _getParser(self): - op = FC6_Vnc._getParser(self) - op.remove_option("--connect") - return op diff --git a/mic/kickstart/pykickstart/commands/volgroup.py b/mic/kickstart/pykickstart/commands/volgroup.py deleted file mode 100644 index 255c47f..0000000 --- a/mic/kickstart/pykickstart/commands/volgroup.py +++ /dev/null @@ -1,102 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.options import * - -import gettext -import warnings -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC3_VolGroupData(BaseData): - removedKeywords = BaseData.removedKeywords - removedAttrs = BaseData.removedAttrs - - def __init__(self, *args, **kwargs): - BaseData.__init__(self, *args, **kwargs) - self.format = kwargs.get("format", True) - self.pesize = kwargs.get("pesize", 32768) - self.preexist = kwargs.get("preexist", False) - self.vgname = kwargs.get("vgname", "") - self.physvols = kwargs.get("physvols", []) - - def __eq__(self, y): - return self.vgname == y.vgname - - def __str__(self): - retval = BaseData.__str__(self) - retval += "volgroup %s" % self.vgname - - if not self.format: - retval += " --noformat" - if self.pesize != 0: - retval += " --pesize=%d" % self.pesize - if self.preexist: - retval += " --useexisting" - - return retval + " " + " ".join(self.physvols) + "\n" - -class FC3_VolGroup(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=132, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.vgList = kwargs.get("vgList", []) - - def __str__(self): - retval = "" - for vg in self.vgList: - retval += vg.__str__() - - return retval - - def _getParser(self): - # Have to be a little more complicated to set two values. - def vg_cb (option, opt_str, value, parser): - parser.values.format = False - parser.values.preexist = True - - op = KSOptionParser() - op.add_option("--noformat", action="callback", callback=vg_cb, - dest="format", default=True, nargs=0) - op.add_option("--pesize", dest="pesize", type="int", nargs=1, - default=32768) - op.add_option("--useexisting", dest="preexist", action="store_true", - default=False) - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - vg = self.handler.VolGroupData() - self._setToObj(self.op, opts, vg) - vg.lineno = self.lineno - vg.vgname = extra[0] - vg.physvols = extra[1:] - - # Check for duplicates in the data list. - if vg in self.dataList(): - warnings.warn(_("A volgroup with the name %s has already been defined.") % vg.vgname) - - return vg - - def dataList(self): - return self.vgList diff --git a/mic/kickstart/pykickstart/commands/xconfig.py b/mic/kickstart/pykickstart/commands/xconfig.py deleted file mode 100644 index 644ee86..0000000 --- a/mic/kickstart/pykickstart/commands/xconfig.py +++ /dev/null @@ -1,184 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007, 2008 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.errors import * -from pykickstart.options import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC3_XConfig(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=0, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.card = kwargs.get("card", "") - self.defaultdesktop = kwargs.get("defaultdesktop", "") - self.depth = kwargs.get("depth", 0) - self.hsync = kwargs.get("hsync", "") - self.monitor = kwargs.get("monitor", "") - self.noProbe = kwargs.get("noProbe", False) - self.resolution = kwargs.get("resolution", "") - self.server = kwargs.get("server", "") - self.startX = kwargs.get("startX", False) - self.videoRam = kwargs.get("videoRam", "") - self.vsync = kwargs.get("vsync", "") - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.card != "": - retval += " --card=%s" % self.card - if self.defaultdesktop != "": - retval += " --defaultdesktop=%s" % self.defaultdesktop - if self.depth != 0: - retval += " --depth=%d" % self.depth - if self.hsync != "": - retval += " --hsync=%s" % self.hsync - if self.monitor != "": - retval += " --monitor=%s" % self.monitor - if self.noProbe: - retval += " --noprobe" - if self.resolution != "": - retval += " --resolution=%s" % self.resolution - if self.server != "": - retval += " --server=%s" % self.server - if self.startX: - retval += " --startxonboot" - if self.videoRam != "": - retval += " --videoram=%s" % self.videoRam - if self.vsync != "": - retval += " --vsync=%s" % self.vsync - - if retval != "": - retval = "# X Window System configuration information\nxconfig %s\n" % retval - - return retval - - def _getParser(self): - op = KSOptionParser() - op.add_option("--card") - op.add_option("--defaultdesktop") - op.add_option("--depth", action="store", type="int", nargs=1) - op.add_option("--hsync") - op.add_option("--monitor") - op.add_option("--noprobe", dest="noProbe", action="store_true", - default=False) - op.add_option("--resolution") - op.add_option("--server") - op.add_option("--startxonboot", dest="startX", action="store_true", - default=False) - op.add_option("--videoram", dest="videoRam") - op.add_option("--vsync") - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - if extra: - mapping = {"command": "xconfig", "options": extra} - raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Unexpected arguments to %(command)s command: %(options)s") % mapping) - - self._setToSelf(self.op, opts) - return self - -class FC6_XConfig(FC3_XConfig): - removedKeywords = FC3_XConfig.removedKeywords + ["card", "hsync", "monitor", "noProbe", "vsync"] - removedAttrs = FC3_XConfig.removedAttrs + ["card", "hsync", "monitor", "noProbe", "vsync"] - - def __init__(self, writePriority=0, *args, **kwargs): - FC3_XConfig.__init__(self, writePriority, *args, **kwargs) - self.deleteRemovedAttrs() - - self.driver = kwargs.get("driver", "") - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if hasattr(self, "driver") and self.driver != "": - retval += " --driver=%s" % self.driver - if self.defaultdesktop != "": - retval += " --defaultdesktop=%s" % self.defaultdesktop - if self.depth != 0: - retval += " --depth=%d" % self.depth - if hasattr(self, "resolution") and self.resolution != "": - retval += " --resolution=%s" % self.resolution - if self.startX: - retval += " --startxonboot" - if hasattr(self, "videoRam") and self.videoRam != "": - retval += " --videoram=%s" % self.videoRam - - if retval != "": - retval = "# X Window System configuration information\nxconfig %s\n" % retval - - return retval - - def _getParser(self): - op = FC3_XConfig._getParser(self) - op.add_option("--card", deprecated=1) - op.add_option("--driver", dest="driver") - op.add_option("--hsync", deprecated=1) - op.add_option("--monitor", deprecated=1) - op.add_option("--noprobe", deprecated=1) - op.add_option("--vsync", deprecated=1) - return op - -class F9_XConfig(FC6_XConfig): - removedKeywords = FC6_XConfig.removedKeywords - removedAttrs = FC6_XConfig.removedAttrs - - def _getParser(self): - op = FC6_XConfig._getParser(self) - op.remove_option("--card") - op.remove_option("--hsync") - op.remove_option("--monitor") - op.remove_option("--noprobe") - op.remove_option("--vsync") - return op - -class F10_XConfig(F9_XConfig): - removedKeywords = F9_XConfig.removedKeywords + ["driver", "resolution", "videoRam"] - removedAttrs = F9_XConfig.removedAttrs + ["driver", "resolution", "videoRam"] - - def __init__(self, writePriority=0, *args, **kwargs): - F9_XConfig.__init__(self, writePriority, *args, **kwargs) - self.deleteRemovedAttrs() - - def _getParser(self): - op = F9_XConfig._getParser(self) - op.add_option("--driver", deprecated=1) - op.add_option("--depth", deprecated=1) - op.add_option("--resolution", deprecated=1) - op.add_option("--videoram", deprecated=1) - return op - -class F14_XConfig(F10_XConfig): - removedKeywords = F10_XConfig.removedKeywords - removedAttrs = F10_XConfig.removedAttrs - - def _getParser(self): - op = F10_XConfig._getParser(self) - op.remove_option("--driver") - op.remove_option("--depth") - op.remove_option("--resolution") - op.remove_option("--videoram") - return op diff --git a/mic/kickstart/pykickstart/commands/zerombr.py b/mic/kickstart/pykickstart/commands/zerombr.py deleted file mode 100644 index 79555a9..0000000 --- a/mic/kickstart/pykickstart/commands/zerombr.py +++ /dev/null @@ -1,69 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -import warnings - -from pykickstart.base import * -from pykickstart.options import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC3_ZeroMbr(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=110, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - self.zerombr = kwargs.get("zerombr", False) - - def __str__(self): - retval = KickstartCommand.__str__(self) - - if self.zerombr: - retval += "# Clear the Master Boot Record\nzerombr\n" - - return retval - - def _getParser(self): - op = KSOptionParser() - return op - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - - if len(extra) > 0: - warnings.warn(_("Ignoring deprecated option on line %s: The zerombr command no longer takes any options. In future releases, this will result in a fatal error from kickstart. Please modify your kickstart file to remove any options.") % self.lineno, DeprecationWarning) - - self.zerombr = True - return self - -class F9_ZeroMbr(FC3_ZeroMbr): - removedKeywords = FC3_ZeroMbr.removedKeywords - removedAttrs = FC3_ZeroMbr.removedAttrs - - def parse(self, args): - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - - if len(extra) > 0: - raise KickstartParseError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s does not take any arguments") % "zerombr") - - self.zerombr = True - return self diff --git a/mic/kickstart/pykickstart/commands/zfcp.py b/mic/kickstart/pykickstart/commands/zfcp.py deleted file mode 100644 index 1ed2694..0000000 --- a/mic/kickstart/pykickstart/commands/zfcp.py +++ /dev/null @@ -1,134 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.options import * - -import gettext -import warnings -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class FC3_ZFCPData(BaseData): - removedKeywords = BaseData.removedKeywords - removedAttrs = BaseData.removedAttrs - - def __init__(self, *args, **kwargs): - BaseData.__init__(self, *args, **kwargs) - self.devnum = kwargs.get("devnum", "") - self.wwpn = kwargs.get("wwpn", "") - self.fcplun = kwargs.get("fcplun", "") - self.scsiid = kwargs.get("scsiid", "") - self.scsilun = kwargs.get("scsilun", "") - - def __eq__(self, y): - return self.devnum == y.devnum and self.wwpn == y.wwpn and \ - self.fcplun == y.fcplun and self.scsiid == y.scsiid and \ - self.scsilun == y.scsilun - - def __str__(self): - retval = BaseData.__str__(self) - retval += "zfcp" - - if self.devnum != "": - retval += " --devnum=%s" % self.devnum - if self.wwpn != "": - retval += " --wwpn=%s" % self.wwpn - if self.fcplun != "": - retval += " --fcplun=%s" % self.fcplun - if hasattr(self, "scsiid") and self.scsiid != "": - retval += " --scsiid=%s" % self.scsiid - if hasattr(self, "scsilun") and self.scsilun != "": - retval += " --scsilun=%s" % self.scsilun - - return retval + "\n" - -class F12_ZFCPData(FC3_ZFCPData): - removedKeywords = FC3_ZFCPData.removedKeywords + ["scsiid", "scsilun"] - removedAttrs = FC3_ZFCPData.removedAttrs + ["scsiid", "scsilun"] - - def __init__(self, *args, **kwargs): - FC3_ZFCPData.__init__(self, *args, **kwargs) - self.deleteRemovedAttrs() - -F14_ZFCPData = F12_ZFCPData - -class FC3_ZFCP(KickstartCommand): - removedKeywords = KickstartCommand.removedKeywords - removedAttrs = KickstartCommand.removedAttrs - - def __init__(self, writePriority=71, *args, **kwargs): - KickstartCommand.__init__(self, writePriority, *args, **kwargs) - self.op = self._getParser() - - self.zfcp = kwargs.get("zfcp", []) - - def __str__(self): - retval = "" - for zfcp in self.zfcp: - retval += zfcp.__str__() - - return retval - - def _getParser(self): - op = KSOptionParser() - op.add_option("--devnum", dest="devnum", required=1) - op.add_option("--fcplun", dest="fcplun", required=1) - op.add_option("--scsiid", dest="scsiid", required=1) - op.add_option("--scsilun", dest="scsilun", required=1) - op.add_option("--wwpn", dest="wwpn", required=1) - return op - - def parse(self, args): - zd = self.handler.ZFCPData() - (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) - self._setToObj(self.op, opts, zd) - zd.lineno = self.lineno - - # Check for duplicates in the data list. - if zd in self.dataList(): - warnings.warn(_("A zfcp with this information has already been defined.")) - - return zd - - def dataList(self): - return self.zfcp - -class F12_ZFCP(FC3_ZFCP): - removedKeywords = FC3_ZFCP.removedKeywords - removedAttrs = FC3_ZFCP.removedAttrs + ["scsiid", "scsilun"] - - def __init__(self, *args, **kwargs): - FC3_ZFCP.__init__(self, *args, **kwargs) - self.deleteRemovedAttrs() - - def _getParser(self): - op = FC3_ZFCP._getParser(self) - op.add_option("--scsiid", deprecated=1) - op.add_option("--scsilun", deprecated=1) - return op - -class F14_ZFCP(F12_ZFCP): - removedKeywords = F12_ZFCP.removedKeywords - removedAttrs = F12_ZFCP.removedAttrs - - def _getParser(self): - op = F12_ZFCP._getParser(self) - op.remove_option("--scsiid") - op.remove_option("--scsilun") - return op diff --git a/mic/kickstart/pykickstart/constants.py b/mic/kickstart/pykickstart/constants.py deleted file mode 100644 index 5e12fc8..0000000 --- a/mic/kickstart/pykickstart/constants.py +++ /dev/null @@ -1,57 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005-2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -CLEARPART_TYPE_LINUX = 0 -CLEARPART_TYPE_ALL = 1 -CLEARPART_TYPE_NONE = 2 - -DISPLAY_MODE_CMDLINE = 0 -DISPLAY_MODE_GRAPHICAL = 1 -DISPLAY_MODE_TEXT = 2 - -FIRSTBOOT_DEFAULT = 0 -FIRSTBOOT_SKIP = 1 -FIRSTBOOT_RECONFIG = 2 - -KS_MISSING_PROMPT = 0 -KS_MISSING_IGNORE = 1 - -SELINUX_DISABLED = 0 -SELINUX_ENFORCING = 1 -SELINUX_PERMISSIVE = 2 - -KS_SCRIPT_PRE = 0 -KS_SCRIPT_POST = 1 -KS_SCRIPT_TRACEBACK = 2 - -KS_WAIT = 0 -KS_REBOOT = 1 -KS_SHUTDOWN = 2 - -KS_INSTKEY_SKIP = -99 - -BOOTPROTO_DHCP = "dhcp" -BOOTPROTO_BOOTP = "bootp" -BOOTPROTO_STATIC = "static" -BOOTPROTO_QUERY = "query" -BOOTPROTO_IBFT = "ibft" - -GROUP_REQUIRED = 0 -GROUP_DEFAULT = 1 -GROUP_ALL = 2 diff --git a/mic/kickstart/pykickstart/errors.py b/mic/kickstart/pykickstart/errors.py deleted file mode 100644 index a234d99..0000000 --- a/mic/kickstart/pykickstart/errors.py +++ /dev/null @@ -1,103 +0,0 @@ -# -# errors.py: Kickstart error handling. -# -# Chris Lumens -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -""" -Error handling classes and functions. - -This module exports a single function: - - formatErrorMsg - Properly formats an error message. - -It also exports several exception classes: - - KickstartError - A generic exception class. - - KickstartParseError - An exception for errors relating to parsing. - - KickstartValueError - An exception for errors relating to option - processing. - - KickstartVersionError - An exception for errors relating to unsupported - syntax versions. -""" -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -def formatErrorMsg(lineno, msg=""): - """Properly format the error message msg for inclusion in an exception.""" - if msg != "": - mapping = {"lineno": lineno, "msg": msg} - return _("The following problem occurred on line %(lineno)s of the kickstart file:\n\n%(msg)s\n") % mapping - else: - return _("There was a problem reading from line %s of the kickstart file") % lineno - -class KickstartError(Exception): - """A generic exception class for unspecific error conditions.""" - def __init__(self, val = ""): - """Create a new KickstartError exception instance with the descriptive - message val. val should be the return value of formatErrorMsg. - """ - Exception.__init__(self) - self.value = val - - def __str__ (self): - return self.value - -class KickstartParseError(KickstartError): - """An exception class for errors when processing the input file, such as - unknown options, commands, or sections. - """ - def __init__(self, msg): - """Create a new KickstartParseError exception instance with the - descriptive message val. val should be the return value of - formatErrorMsg. - """ - KickstartError.__init__(self, msg) - - def __str__(self): - return self.value - -class KickstartValueError(KickstartError): - """An exception class for errors when processing arguments to commands, - such as too many arguments, too few arguments, or missing required - arguments. - """ - def __init__(self, msg): - """Create a new KickstartValueError exception instance with the - descriptive message val. val should be the return value of - formatErrorMsg. - """ - KickstartError.__init__(self, msg) - - def __str__ (self): - return self.value - -class KickstartVersionError(KickstartError): - """An exception class for errors related to using an incorrect version of - kickstart syntax. - """ - def __init__(self, msg): - """Create a new KickstartVersionError exception instance with the - descriptive message val. val should be the return value of - formatErrorMsg. - """ - KickstartError.__init__(self, msg) - - def __str__ (self): - return self.value diff --git a/mic/kickstart/pykickstart/handlers/__init__.py b/mic/kickstart/pykickstart/handlers/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/mic/kickstart/pykickstart/handlers/control.py b/mic/kickstart/pykickstart/handlers/control.py deleted file mode 100644 index d8c8f2b..0000000 --- a/mic/kickstart/pykickstart/handlers/control.py +++ /dev/null @@ -1,1307 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2007, 2008, 2009, 2010 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.version import * -from pykickstart.commands import * - -# This map is keyed on kickstart syntax version as provided by -# pykickstart.version. Within each sub-dict is a mapping from command name -# to the class that handles it. This is an onto mapping - that is, multiple -# command names can map to the same class. However, the Handler will ensure -# that only one instance of each class ever exists. -commandMap = { - FC3: { - "auth": authconfig.FC3_Authconfig, - "authconfig": authconfig.FC3_Authconfig, - "autopart": autopart.FC3_AutoPart, - "autostep": autostep.FC3_AutoStep, - "bootloader": bootloader.FC3_Bootloader, - "cdrom": method.FC3_Method, - "clearpart": clearpart.FC3_ClearPart, - "cmdline": displaymode.FC3_DisplayMode, - "device": device.FC3_Device, - "deviceprobe": deviceprobe.FC3_DeviceProbe, - "driverdisk": driverdisk.FC3_DriverDisk, - "firewall": firewall.FC3_Firewall, - "firstboot": firstboot.FC3_Firstboot, - "graphical": displaymode.FC3_DisplayMode, - "halt": reboot.FC3_Reboot, - "harddrive": method.FC3_Method, - "ignoredisk": ignoredisk.FC3_IgnoreDisk, - "install": upgrade.FC3_Upgrade, - "interactive": interactive.FC3_Interactive, - "keyboard": keyboard.FC3_Keyboard, - "lang": lang.FC3_Lang, - "langsupport": langsupport.FC3_LangSupport, - "lilo": bootloader.FC3_Bootloader, - "lilocheck": lilocheck.FC3_LiloCheck, - "logvol": logvol.FC3_LogVol, - "monitor": monitor.FC3_Monitor, - "mouse": mouse.FC3_Mouse, - "network": network.FC3_Network, - "nfs": method.FC3_Method, - "part": partition.FC3_Partition, - "partition": partition.FC3_Partition, - "poweroff": reboot.FC3_Reboot, - "raid": raid.FC3_Raid, - "reboot": reboot.FC3_Reboot, - "rootpw": rootpw.FC3_RootPw, - "selinux": selinux.FC3_SELinux, - "shutdown": reboot.FC3_Reboot, - "skipx": skipx.FC3_SkipX, - "text": displaymode.FC3_DisplayMode, - "timezone": timezone.FC3_Timezone, - "upgrade": upgrade.FC3_Upgrade, - "url": method.FC3_Method, - "vnc": vnc.FC3_Vnc, - "volgroup": volgroup.FC3_VolGroup, - "xconfig": xconfig.FC3_XConfig, - "zerombr": zerombr.FC3_ZeroMbr, - "zfcp": zfcp.FC3_ZFCP, - }, - - # based on fc3 - FC4: { - "auth": authconfig.FC3_Authconfig, - "authconfig": authconfig.FC3_Authconfig, - "autopart": autopart.FC3_AutoPart, - "autostep": autostep.FC3_AutoStep, - "bootloader": bootloader.FC4_Bootloader, - "cdrom": method.FC3_Method, - "clearpart": clearpart.FC3_ClearPart, - "cmdline": displaymode.FC3_DisplayMode, - "device": device.FC3_Device, - "deviceprobe": deviceprobe.FC3_DeviceProbe, - "driverdisk": driverdisk.FC4_DriverDisk, - "firewall": firewall.FC3_Firewall, - "firstboot": firstboot.FC3_Firstboot, - "graphical": displaymode.FC3_DisplayMode, - "halt": reboot.FC3_Reboot, - "harddrive": method.FC3_Method, - "ignoredisk": ignoredisk.FC3_IgnoreDisk, - "install": upgrade.FC3_Upgrade, - "interactive": interactive.FC3_Interactive, - "keyboard": keyboard.FC3_Keyboard, - "lang": lang.FC3_Lang, - "langsupport": langsupport.FC3_LangSupport, - "logvol": logvol.FC4_LogVol, - "mediacheck": mediacheck.FC4_MediaCheck, - "monitor": monitor.FC3_Monitor, - "mouse": mouse.FC3_Mouse, - "network": network.FC4_Network, - "nfs": method.FC3_Method, - "part": partition.FC4_Partition, - "partition": partition.FC4_Partition, - "poweroff": reboot.FC3_Reboot, - "raid": raid.FC4_Raid, - "reboot": reboot.FC3_Reboot, - "rootpw": rootpw.FC3_RootPw, - "selinux": selinux.FC3_SELinux, - "shutdown": reboot.FC3_Reboot, - "skipx": skipx.FC3_SkipX, - "text": displaymode.FC3_DisplayMode, - "timezone": timezone.FC3_Timezone, - "upgrade": upgrade.FC3_Upgrade, - "url": method.FC3_Method, - "vnc": vnc.FC3_Vnc, - "volgroup": volgroup.FC3_VolGroup, - "xconfig": xconfig.FC3_XConfig, - "zerombr": zerombr.FC3_ZeroMbr, - "zfcp": zfcp.FC3_ZFCP, - }, - - # based on fc4 - FC5: { - "auth": authconfig.FC3_Authconfig, - "authconfig": authconfig.FC3_Authconfig, - "autopart": autopart.FC3_AutoPart, - "autostep": autostep.FC3_AutoStep, - "bootloader": bootloader.FC4_Bootloader, - "cdrom": method.FC3_Method, - "clearpart": clearpart.FC3_ClearPart, - "cmdline": displaymode.FC3_DisplayMode, - "device": device.FC3_Device, - "deviceprobe": deviceprobe.FC3_DeviceProbe, - "driverdisk": driverdisk.FC4_DriverDisk, - "firewall": firewall.FC3_Firewall, - "firstboot": firstboot.FC3_Firstboot, - "graphical": displaymode.FC3_DisplayMode, - "halt": reboot.FC3_Reboot, - "harddrive": method.FC3_Method, - "ignoredisk": ignoredisk.FC3_IgnoreDisk, - "install": upgrade.FC3_Upgrade, - "interactive": interactive.FC3_Interactive, - "keyboard": keyboard.FC3_Keyboard, - "lang": lang.FC3_Lang, - "langsupport": langsupport.FC5_LangSupport, - "logvol": logvol.FC4_LogVol, - "mediacheck": mediacheck.FC4_MediaCheck, - "monitor": monitor.FC3_Monitor, - "mouse": mouse.FC3_Mouse, - "network": network.FC4_Network, - "nfs": method.FC3_Method, - "part": partition.FC4_Partition, - "partition": partition.FC4_Partition, - "poweroff": reboot.FC3_Reboot, - "raid": raid.FC5_Raid, - "reboot": reboot.FC3_Reboot, - "rootpw": rootpw.FC3_RootPw, - "selinux": selinux.FC3_SELinux, - "shutdown": reboot.FC3_Reboot, - "skipx": skipx.FC3_SkipX, - "text": displaymode.FC3_DisplayMode, - "timezone": timezone.FC3_Timezone, - "upgrade": upgrade.FC3_Upgrade, - "url": method.FC3_Method, - "vnc": vnc.FC3_Vnc, - "volgroup": volgroup.FC3_VolGroup, - "xconfig": xconfig.FC3_XConfig, - "zerombr": zerombr.FC3_ZeroMbr, - "zfcp": zfcp.FC3_ZFCP, - }, - - # based on fc5 - FC6: { - "auth": authconfig.FC3_Authconfig, - "authconfig": authconfig.FC3_Authconfig, - "autopart": autopart.FC3_AutoPart, - "autostep": autostep.FC3_AutoStep, - "bootloader": bootloader.FC4_Bootloader, - "cdrom": method.FC6_Method, - "clearpart": clearpart.FC3_ClearPart, - "cmdline": displaymode.FC3_DisplayMode, - "device": device.FC3_Device, - "deviceprobe": deviceprobe.FC3_DeviceProbe, - "dmraid": dmraid.FC6_DmRaid, - "driverdisk": driverdisk.FC4_DriverDisk, - "firewall": firewall.FC3_Firewall, - "firstboot": firstboot.FC3_Firstboot, - "graphical": displaymode.FC3_DisplayMode, - "halt": reboot.FC6_Reboot, - "harddrive": method.FC6_Method, - "ignoredisk": ignoredisk.FC3_IgnoreDisk, - "install": upgrade.FC3_Upgrade, - "interactive": interactive.FC3_Interactive, - "iscsi": iscsi.FC6_Iscsi, - "iscsiname": iscsiname.FC6_IscsiName, - "keyboard": keyboard.FC3_Keyboard, - "lang": lang.FC3_Lang, - "langsupport": langsupport.FC5_LangSupport, - "logging": logging.FC6_Logging, - "logvol": logvol.FC4_LogVol, - "mediacheck": mediacheck.FC4_MediaCheck, - "monitor": monitor.FC6_Monitor, - "mouse": mouse.FC3_Mouse, - "multipath": multipath.FC6_MultiPath, - "network": network.FC6_Network, - "nfs": method.FC6_Method, - "part": partition.FC4_Partition, - "partition": partition.FC4_Partition, - "poweroff": reboot.FC6_Reboot, - "raid": raid.FC5_Raid, - "reboot": reboot.FC6_Reboot, - "repo": repo.FC6_Repo, - "rootpw": rootpw.FC3_RootPw, - "selinux": selinux.FC3_SELinux, - "services": services.FC6_Services, - "shutdown": reboot.FC6_Reboot, - "skipx": skipx.FC3_SkipX, - "text": displaymode.FC3_DisplayMode, - "timezone": timezone.FC6_Timezone, - "upgrade": upgrade.FC3_Upgrade, - "user": user.FC6_User, - "url": method.FC6_Method, - "vnc": vnc.FC6_Vnc, - "volgroup": volgroup.FC3_VolGroup, - "xconfig": xconfig.FC6_XConfig, - "zerombr": zerombr.FC3_ZeroMbr, - "zfcp": zfcp.FC3_ZFCP, - }, - - # based on fc6 - F7: { - "auth": authconfig.FC3_Authconfig, - "authconfig": authconfig.FC3_Authconfig, - "autopart": autopart.FC3_AutoPart, - "autostep": autostep.FC3_AutoStep, - "bootloader": bootloader.FC4_Bootloader, - "cdrom": method.FC6_Method, - "clearpart": clearpart.FC3_ClearPart, - "cmdline": displaymode.FC3_DisplayMode, - "device": device.FC3_Device, - "deviceprobe": deviceprobe.FC3_DeviceProbe, - "dmraid": dmraid.FC6_DmRaid, - "driverdisk": driverdisk.FC4_DriverDisk, - "firewall": firewall.FC3_Firewall, - "firstboot": firstboot.FC3_Firstboot, - "graphical": displaymode.FC3_DisplayMode, - "halt": reboot.FC6_Reboot, - "harddrive": method.FC6_Method, - "ignoredisk": ignoredisk.FC3_IgnoreDisk, - "install": upgrade.FC3_Upgrade, - "interactive": interactive.FC3_Interactive, - "iscsi": iscsi.FC6_Iscsi, - "iscsiname": iscsiname.FC6_IscsiName, - "keyboard": keyboard.FC3_Keyboard, - "lang": lang.FC3_Lang, - "logging": logging.FC6_Logging, - "logvol": logvol.FC4_LogVol, - "mediacheck": mediacheck.FC4_MediaCheck, - "monitor": monitor.FC6_Monitor, - "multipath": multipath.FC6_MultiPath, - "network": network.FC6_Network, - "nfs": method.FC6_Method, - "part": partition.FC4_Partition, - "partition": partition.FC4_Partition, - "poweroff": reboot.FC6_Reboot, - "raid": raid.F7_Raid, - "reboot": reboot.FC6_Reboot, - "repo": repo.FC6_Repo, - "rootpw": rootpw.FC3_RootPw, - "selinux": selinux.FC3_SELinux, - "services": services.FC6_Services, - "shutdown": reboot.FC6_Reboot, - "skipx": skipx.FC3_SkipX, - "text": displaymode.FC3_DisplayMode, - "timezone": timezone.FC6_Timezone, - "updates": updates.F7_Updates, - "upgrade": upgrade.FC3_Upgrade, - "url": method.FC6_Method, - "user": user.FC6_User, - "vnc": vnc.FC6_Vnc, - "volgroup": volgroup.FC3_VolGroup, - "xconfig": xconfig.FC6_XConfig, - "zerombr": zerombr.FC3_ZeroMbr, - "zfcp": zfcp.FC3_ZFCP, - }, - - # based on f7 - F8: { - "auth": authconfig.FC3_Authconfig, - "authconfig": authconfig.FC3_Authconfig, - "autopart": autopart.FC3_AutoPart, - "autostep": autostep.FC3_AutoStep, - "bootloader": bootloader.F8_Bootloader, - "cdrom": method.FC6_Method, - "clearpart": clearpart.FC3_ClearPart, - "cmdline": displaymode.FC3_DisplayMode, - "device": device.F8_Device, - "deviceprobe": deviceprobe.FC3_DeviceProbe, - "dmraid": dmraid.FC6_DmRaid, - "driverdisk": driverdisk.FC4_DriverDisk, - "firewall": firewall.FC3_Firewall, - "firstboot": firstboot.FC3_Firstboot, - "graphical": displaymode.FC3_DisplayMode, - "halt": reboot.FC6_Reboot, - "harddrive": method.FC6_Method, - "ignoredisk": ignoredisk.F8_IgnoreDisk, - "install": upgrade.FC3_Upgrade, - "interactive": interactive.FC3_Interactive, - "iscsi": iscsi.FC6_Iscsi, - "iscsiname": iscsiname.FC6_IscsiName, - "keyboard": keyboard.FC3_Keyboard, - "lang": lang.FC3_Lang, - "logging": logging.FC6_Logging, - "logvol": logvol.FC4_LogVol, - "mediacheck": mediacheck.FC4_MediaCheck, - "monitor": monitor.FC6_Monitor, - "multipath": multipath.FC6_MultiPath, - "network": network.F8_Network, - "nfs": method.FC6_Method, - "part": partition.FC4_Partition, - "partition": partition.FC4_Partition, - "poweroff": reboot.FC6_Reboot, - "raid": raid.F7_Raid, - "reboot": reboot.FC6_Reboot, - "repo": repo.F8_Repo, - "rootpw": rootpw.F8_RootPw, - "selinux": selinux.FC3_SELinux, - "services": services.FC6_Services, - "shutdown": reboot.FC6_Reboot, - "skipx": skipx.FC3_SkipX, - "text": displaymode.FC3_DisplayMode, - "timezone": timezone.FC6_Timezone, - "updates": updates.F7_Updates, - "upgrade": upgrade.FC3_Upgrade, - "url": method.FC6_Method, - "user": user.F8_User, - "vnc": vnc.FC6_Vnc, - "volgroup": volgroup.FC3_VolGroup, - "xconfig": xconfig.FC6_XConfig, - "zerombr": zerombr.FC3_ZeroMbr, - "zfcp": zfcp.FC3_ZFCP, - }, - - # based on f8 - F9: { - "auth": authconfig.FC3_Authconfig, - "authconfig": authconfig.FC3_Authconfig, - "autopart": autopart.F9_AutoPart, - "autostep": autostep.FC3_AutoStep, - "bootloader": bootloader.F8_Bootloader, - "cdrom": method.FC6_Method, - "clearpart": clearpart.FC3_ClearPart, - "cmdline": displaymode.FC3_DisplayMode, - "device": device.F8_Device, - "deviceprobe": deviceprobe.FC3_DeviceProbe, - "dmraid": dmraid.FC6_DmRaid, - "driverdisk": driverdisk.FC4_DriverDisk, - "firewall": firewall.F9_Firewall, - "firstboot": firstboot.FC3_Firstboot, - "graphical": displaymode.FC3_DisplayMode, - "halt": reboot.FC6_Reboot, - "harddrive": method.FC6_Method, - "ignoredisk": ignoredisk.F8_IgnoreDisk, - "install": upgrade.FC3_Upgrade, - "interactive": interactive.FC3_Interactive, - "iscsi": iscsi.FC6_Iscsi, - "iscsiname": iscsiname.FC6_IscsiName, - "keyboard": keyboard.FC3_Keyboard, - "lang": lang.FC3_Lang, - "logging": logging.FC6_Logging, - "logvol": logvol.F9_LogVol, - "mediacheck": mediacheck.FC4_MediaCheck, - "monitor": monitor.FC6_Monitor, - "multipath": multipath.FC6_MultiPath, - "network": network.F9_Network, - "nfs": method.FC6_Method, - "part": partition.F9_Partition, - "partition": partition.F9_Partition, - "poweroff": reboot.FC6_Reboot, - "raid": raid.F9_Raid, - "reboot": reboot.FC6_Reboot, - "repo": repo.F8_Repo, - "rootpw": rootpw.F8_RootPw, - "selinux": selinux.FC3_SELinux, - "services": services.FC6_Services, - "shutdown": reboot.FC6_Reboot, - "skipx": skipx.FC3_SkipX, - "text": displaymode.FC3_DisplayMode, - "timezone": timezone.FC6_Timezone, - "updates": updates.F7_Updates, - "upgrade": upgrade.FC3_Upgrade, - "url": method.FC6_Method, - "user": user.F8_User, - "vnc": vnc.F9_Vnc, - "volgroup": volgroup.FC3_VolGroup, - "xconfig": xconfig.F9_XConfig, - "zerombr": zerombr.F9_ZeroMbr, - "zfcp": zfcp.FC3_ZFCP, - }, - - # based on f9 - F10: { - "auth": authconfig.FC3_Authconfig, - "authconfig": authconfig.FC3_Authconfig, - "autopart": autopart.F9_AutoPart, - "autostep": autostep.FC3_AutoStep, - "bootloader": bootloader.F8_Bootloader, - "cdrom": method.FC6_Method, - "clearpart": clearpart.FC3_ClearPart, - "cmdline": displaymode.FC3_DisplayMode, - "device": device.F8_Device, - "deviceprobe": deviceprobe.FC3_DeviceProbe, - "dmraid": dmraid.FC6_DmRaid, - "driverdisk": driverdisk.FC4_DriverDisk, - "firewall": firewall.F10_Firewall, - "firstboot": firstboot.FC3_Firstboot, - "graphical": displaymode.FC3_DisplayMode, - "halt": reboot.FC6_Reboot, - "harddrive": method.FC6_Method, - "ignoredisk": ignoredisk.F8_IgnoreDisk, - "install": upgrade.FC3_Upgrade, - "interactive": interactive.FC3_Interactive, - "iscsi": iscsi.F10_Iscsi, - "iscsiname": iscsiname.FC6_IscsiName, - "keyboard": keyboard.FC3_Keyboard, - "lang": lang.FC3_Lang, - "logging": logging.FC6_Logging, - "logvol": logvol.F9_LogVol, - "mediacheck": mediacheck.FC4_MediaCheck, - "monitor": monitor.F10_Monitor, - "multipath": multipath.FC6_MultiPath, - "network": network.F9_Network, - "nfs": method.FC6_Method, - "part": partition.F9_Partition, - "partition": partition.F9_Partition, - "poweroff": reboot.FC6_Reboot, - "raid": raid.F9_Raid, - "reboot": reboot.FC6_Reboot, - "repo": repo.F8_Repo, - "rescue": rescue.F10_Rescue, - "rootpw": rootpw.F8_RootPw, - "selinux": selinux.FC3_SELinux, - "services": services.FC6_Services, - "shutdown": reboot.FC6_Reboot, - "skipx": skipx.FC3_SkipX, - "text": displaymode.FC3_DisplayMode, - "timezone": timezone.FC6_Timezone, - "updates": updates.F7_Updates, - "upgrade": upgrade.FC3_Upgrade, - "url": method.FC6_Method, - "user": user.F8_User, - "vnc": vnc.F9_Vnc, - "volgroup": volgroup.FC3_VolGroup, - "xconfig": xconfig.F10_XConfig, - "zerombr": zerombr.F9_ZeroMbr, - "zfcp": zfcp.FC3_ZFCP, - }, - - # based on f10 - F11: { - "auth": authconfig.FC3_Authconfig, - "authconfig": authconfig.FC3_Authconfig, - "autopart": autopart.F9_AutoPart, - "autostep": autostep.FC3_AutoStep, - "bootloader": bootloader.F8_Bootloader, - "cdrom": method.FC6_Method, - "clearpart": clearpart.FC3_ClearPart, - "cmdline": displaymode.FC3_DisplayMode, - "device": device.F8_Device, - "deviceprobe": deviceprobe.FC3_DeviceProbe, - "dmraid": dmraid.FC6_DmRaid, - "driverdisk": driverdisk.FC4_DriverDisk, - "firewall": firewall.F10_Firewall, - "firstboot": firstboot.FC3_Firstboot, - "graphical": displaymode.FC3_DisplayMode, - "halt": reboot.FC6_Reboot, - "harddrive": method.FC6_Method, - "ignoredisk": ignoredisk.F8_IgnoreDisk, - "install": upgrade.F11_Upgrade, - "interactive": interactive.FC3_Interactive, - "iscsi": iscsi.F10_Iscsi, - "iscsiname": iscsiname.FC6_IscsiName, - "keyboard": keyboard.FC3_Keyboard, - "lang": lang.FC3_Lang, - "logging": logging.FC6_Logging, - "logvol": logvol.F9_LogVol, - "mediacheck": mediacheck.FC4_MediaCheck, - "monitor": monitor.F10_Monitor, - "multipath": multipath.FC6_MultiPath, - "network": network.F9_Network, - "nfs": method.FC6_Method, - "part": partition.F11_Partition, - "partition": partition.F11_Partition, - "poweroff": reboot.FC6_Reboot, - "raid": raid.F9_Raid, - "reboot": reboot.FC6_Reboot, - "repo": repo.F11_Repo, - "rescue": rescue.F10_Rescue, - "rootpw": rootpw.F8_RootPw, - "selinux": selinux.FC3_SELinux, - "services": services.FC6_Services, - "shutdown": reboot.FC6_Reboot, - "skipx": skipx.FC3_SkipX, - "text": displaymode.FC3_DisplayMode, - "timezone": timezone.FC6_Timezone, - "updates": updates.F7_Updates, - "upgrade": upgrade.F11_Upgrade, - "url": method.FC6_Method, - "user": user.F8_User, - "vnc": vnc.F9_Vnc, - "volgroup": volgroup.FC3_VolGroup, - "xconfig": xconfig.F10_XConfig, - "zerombr": zerombr.F9_ZeroMbr, - "zfcp": zfcp.FC3_ZFCP, - }, - - # based on f11 - F12: { - "auth": authconfig.FC3_Authconfig, - "authconfig": authconfig.FC3_Authconfig, - "autopart": autopart.F12_AutoPart, - "autostep": autostep.FC3_AutoStep, - "bootloader": bootloader.F12_Bootloader, - "cdrom": method.FC6_Method, - "clearpart": clearpart.FC3_ClearPart, - "cmdline": displaymode.FC3_DisplayMode, - "device": device.F8_Device, - "deviceprobe": deviceprobe.FC3_DeviceProbe, - "dmraid": dmraid.FC6_DmRaid, - "driverdisk": driverdisk.F12_DriverDisk, - "fcoe": fcoe.F12_Fcoe, - "firewall": firewall.F10_Firewall, - "firstboot": firstboot.FC3_Firstboot, - "graphical": displaymode.FC3_DisplayMode, - "group": group.F12_Group, - "halt": reboot.FC6_Reboot, - "harddrive": method.FC6_Method, - "ignoredisk": ignoredisk.F8_IgnoreDisk, - "install": upgrade.F11_Upgrade, - "interactive": interactive.FC3_Interactive, - "iscsi": iscsi.F10_Iscsi, - "iscsiname": iscsiname.FC6_IscsiName, - "keyboard": keyboard.FC3_Keyboard, - "lang": lang.FC3_Lang, - "logging": logging.FC6_Logging, - "logvol": logvol.F12_LogVol, - "mediacheck": mediacheck.FC4_MediaCheck, - "monitor": monitor.F10_Monitor, - "multipath": multipath.FC6_MultiPath, - "network": network.F9_Network, - "nfs": method.FC6_Method, - "part": partition.F12_Partition, - "partition": partition.F12_Partition, - "poweroff": reboot.FC6_Reboot, - "raid": raid.F12_Raid, - "reboot": reboot.FC6_Reboot, - "repo": repo.F11_Repo, - "rescue": rescue.F10_Rescue, - "rootpw": rootpw.F8_RootPw, - "selinux": selinux.FC3_SELinux, - "services": services.FC6_Services, - "shutdown": reboot.FC6_Reboot, - "skipx": skipx.FC3_SkipX, - "text": displaymode.FC3_DisplayMode, - "timezone": timezone.FC6_Timezone, - "updates": updates.F7_Updates, - "upgrade": upgrade.F11_Upgrade, - "url": method.FC6_Method, - "user": user.F12_User, - "vnc": vnc.F9_Vnc, - "volgroup": volgroup.FC3_VolGroup, - "xconfig": xconfig.F10_XConfig, - "zerombr": zerombr.F9_ZeroMbr, - "zfcp": zfcp.F12_ZFCP, - }, - - # based on f12 - F13: { - "auth": authconfig.FC3_Authconfig, - "authconfig": authconfig.FC3_Authconfig, - "autopart": autopart.F12_AutoPart, - "autostep": autostep.FC3_AutoStep, - "bootloader": bootloader.F12_Bootloader, - "cdrom": method.F13_Method, - "clearpart": clearpart.FC3_ClearPart, - "cmdline": displaymode.FC3_DisplayMode, - "device": device.F8_Device, - "deviceprobe": deviceprobe.FC3_DeviceProbe, - "dmraid": dmraid.FC6_DmRaid, - "driverdisk": driverdisk.F12_DriverDisk, - "fcoe": fcoe.F13_Fcoe, - "firewall": firewall.F10_Firewall, - "firstboot": firstboot.FC3_Firstboot, - "graphical": displaymode.FC3_DisplayMode, - "group": group.F12_Group, - "halt": reboot.FC6_Reboot, - "harddrive": method.F13_Method, - "ignoredisk": ignoredisk.F8_IgnoreDisk, - "install": upgrade.F11_Upgrade, - "interactive": interactive.FC3_Interactive, - "iscsi": iscsi.F10_Iscsi, - "iscsiname": iscsiname.FC6_IscsiName, - "keyboard": keyboard.FC3_Keyboard, - "lang": lang.FC3_Lang, - "logging": logging.FC6_Logging, - "logvol": logvol.F12_LogVol, - "mediacheck": mediacheck.FC4_MediaCheck, - "monitor": monitor.F10_Monitor, - "multipath": multipath.FC6_MultiPath, - "network": network.F9_Network, - "nfs": method.F13_Method, - "part": partition.F12_Partition, - "partition": partition.F12_Partition, - "poweroff": reboot.FC6_Reboot, - "raid": raid.F13_Raid, - "reboot": reboot.FC6_Reboot, - "repo": repo.F13_Repo, - "rescue": rescue.F10_Rescue, - "rootpw": rootpw.F8_RootPw, - "selinux": selinux.FC3_SELinux, - "services": services.FC6_Services, - "shutdown": reboot.FC6_Reboot, - "skipx": skipx.FC3_SkipX, - "sshpw": sshpw.F13_SshPw, - "text": displaymode.FC3_DisplayMode, - "timezone": timezone.FC6_Timezone, - "updates": updates.F7_Updates, - "upgrade": upgrade.F11_Upgrade, - "url": method.F13_Method, - "user": user.F12_User, - "vnc": vnc.F9_Vnc, - "volgroup": volgroup.FC3_VolGroup, - "xconfig": xconfig.F10_XConfig, - "zerombr": zerombr.F9_ZeroMbr, - "zfcp": zfcp.F12_ZFCP, - }, - - # based on f13 - F14: { - "auth": authconfig.FC3_Authconfig, - "authconfig": authconfig.FC3_Authconfig, - "autopart": autopart.F12_AutoPart, - "autostep": autostep.FC3_AutoStep, - "bootloader": bootloader.F14_Bootloader, - "cdrom": method.F14_Method, - "clearpart": clearpart.FC3_ClearPart, - "cmdline": displaymode.FC3_DisplayMode, - "device": device.F8_Device, - "deviceprobe": deviceprobe.FC3_DeviceProbe, - "dmraid": dmraid.FC6_DmRaid, - "driverdisk": driverdisk.F14_DriverDisk, - "fcoe": fcoe.F13_Fcoe, - "firewall": firewall.F14_Firewall, - "firstboot": firstboot.FC3_Firstboot, - "graphical": displaymode.FC3_DisplayMode, - "group": group.F12_Group, - "halt": reboot.FC6_Reboot, - "harddrive": method.F14_Method, - "ignoredisk": ignoredisk.F14_IgnoreDisk, - "install": upgrade.F11_Upgrade, - "interactive": interactive.F14_Interactive, - "iscsi": iscsi.F10_Iscsi, - "iscsiname": iscsiname.FC6_IscsiName, - "keyboard": keyboard.FC3_Keyboard, - "lang": lang.FC3_Lang, - "logging": logging.FC6_Logging, - "logvol": logvol.F14_LogVol, - "mediacheck": mediacheck.FC4_MediaCheck, - "monitor": monitor.F10_Monitor, - "multipath": multipath.FC6_MultiPath, - "network": network.F9_Network, - "nfs": method.F14_Method, - "part": partition.F14_Partition, - "partition": partition.F14_Partition, - "poweroff": reboot.FC6_Reboot, - "raid": raid.F14_Raid, - "reboot": reboot.FC6_Reboot, - "repo": repo.F14_Repo, - "rescue": rescue.F10_Rescue, - "rootpw": rootpw.F8_RootPw, - "selinux": selinux.FC3_SELinux, - "services": services.FC6_Services, - "shutdown": reboot.FC6_Reboot, - "skipx": skipx.FC3_SkipX, - "sshpw": sshpw.F13_SshPw, - "text": displaymode.FC3_DisplayMode, - "timezone": timezone.FC6_Timezone, - "updates": updates.F7_Updates, - "upgrade": upgrade.F11_Upgrade, - "url": method.F14_Method, - "user": user.F12_User, - "vnc": vnc.F9_Vnc, - "volgroup": volgroup.FC3_VolGroup, - "xconfig": xconfig.F14_XConfig, - "zerombr": zerombr.F9_ZeroMbr, - "zfcp": zfcp.F14_ZFCP, - }, - - # based on f14 - F15: { - "auth": authconfig.FC3_Authconfig, - "authconfig": authconfig.FC3_Authconfig, - "autopart": autopart.F12_AutoPart, - "autostep": autostep.FC3_AutoStep, - "bootloader": bootloader.F15_Bootloader, - "cdrom": method.F14_Method, - "clearpart": clearpart.FC3_ClearPart, - "cmdline": displaymode.FC3_DisplayMode, - "device": device.F8_Device, - "deviceprobe": deviceprobe.FC3_DeviceProbe, - "dmraid": dmraid.FC6_DmRaid, - "driverdisk": driverdisk.F14_DriverDisk, - "fcoe": fcoe.F13_Fcoe, - "firewall": firewall.F14_Firewall, - "firstboot": firstboot.FC3_Firstboot, - "graphical": displaymode.FC3_DisplayMode, - "group": group.F12_Group, - "halt": reboot.FC6_Reboot, - "harddrive": method.F14_Method, - "ignoredisk": ignoredisk.F14_IgnoreDisk, - "install": upgrade.F11_Upgrade, - "iscsi": iscsi.F10_Iscsi, - "iscsiname": iscsiname.FC6_IscsiName, - "keyboard": keyboard.FC3_Keyboard, - "lang": lang.FC3_Lang, - "logging": logging.FC6_Logging, - "logvol": logvol.F15_LogVol, - "mediacheck": mediacheck.FC4_MediaCheck, - "monitor": monitor.F10_Monitor, - "multipath": multipath.FC6_MultiPath, - "network": network.F9_Network, - "nfs": method.F14_Method, - "part": partition.F14_Partition, - "partition": partition.F14_Partition, - "poweroff": reboot.FC6_Reboot, - "raid": raid.F15_Raid, - "reboot": reboot.FC6_Reboot, - "repo": repo.F15_Repo, - "rescue": rescue.F10_Rescue, - "rootpw": rootpw.F8_RootPw, - "selinux": selinux.FC3_SELinux, - "services": services.FC6_Services, - "shutdown": reboot.FC6_Reboot, - "skipx": skipx.FC3_SkipX, - "sshpw": sshpw.F13_SshPw, - "text": displaymode.FC3_DisplayMode, - "timezone": timezone.FC6_Timezone, - "updates": updates.F7_Updates, - "upgrade": upgrade.F11_Upgrade, - "url": method.F14_Method, - "user": user.F12_User, - "vnc": vnc.F9_Vnc, - "volgroup": volgroup.FC3_VolGroup, - "xconfig": xconfig.F14_XConfig, - "zerombr": zerombr.F9_ZeroMbr, - "zfcp": zfcp.F14_ZFCP, - }, - - # based on f15 - F16: { - "auth": authconfig.FC3_Authconfig, - "authconfig": authconfig.FC3_Authconfig, - "autopart": autopart.F12_AutoPart, - "autostep": autostep.FC3_AutoStep, - "bootloader": bootloader.F15_Bootloader, - "cdrom": method.F14_Method, - "clearpart": clearpart.FC3_ClearPart, - "cmdline": displaymode.FC3_DisplayMode, - "device": device.F8_Device, - "deviceprobe": deviceprobe.FC3_DeviceProbe, - "dmraid": dmraid.FC6_DmRaid, - "driverdisk": driverdisk.F14_DriverDisk, - "fcoe": fcoe.F13_Fcoe, - "firewall": firewall.F14_Firewall, - "firstboot": firstboot.FC3_Firstboot, - "graphical": displaymode.FC3_DisplayMode, - "group": group.F12_Group, - "halt": reboot.FC6_Reboot, - "harddrive": method.F14_Method, - "ignoredisk": ignoredisk.F14_IgnoreDisk, - "install": upgrade.F11_Upgrade, - "iscsi": iscsi.F10_Iscsi, - "iscsiname": iscsiname.FC6_IscsiName, - "keyboard": keyboard.FC3_Keyboard, - "lang": lang.FC3_Lang, - "logging": logging.FC6_Logging, - "logvol": logvol.F15_LogVol, - "mediacheck": mediacheck.FC4_MediaCheck, - "monitor": monitor.F10_Monitor, - "multipath": multipath.FC6_MultiPath, - "network": network.F16_Network, - "nfs": method.F14_Method, - "part": partition.F14_Partition, - "partition": partition.F14_Partition, - "poweroff": reboot.FC6_Reboot, - "raid": raid.F15_Raid, - "reboot": reboot.FC6_Reboot, - "repo": repo.F15_Repo, - "rescue": rescue.F10_Rescue, - "rootpw": rootpw.F8_RootPw, - "selinux": selinux.FC3_SELinux, - "services": services.FC6_Services, - "shutdown": reboot.FC6_Reboot, - "skipx": skipx.FC3_SkipX, - "sshpw": sshpw.F13_SshPw, - "text": displaymode.FC3_DisplayMode, - "timezone": timezone.FC6_Timezone, - "updates": updates.F7_Updates, - "upgrade": upgrade.F11_Upgrade, - "url": method.F14_Method, - "user": user.F12_User, - "vnc": vnc.F9_Vnc, - "volgroup": volgroup.FC3_VolGroup, - "xconfig": xconfig.F14_XConfig, - "zerombr": zerombr.F9_ZeroMbr, - "zfcp": zfcp.F14_ZFCP, - }, - - # based on fc1 - RHEL3: { - "auth": authconfig.FC3_Authconfig, - "authconfig": authconfig.FC3_Authconfig, - "autopart": autopart.FC3_AutoPart, - "autostep": autostep.FC3_AutoStep, - "bootloader": bootloader.FC3_Bootloader, - "cdrom": method.FC3_Method, - "clearpart": clearpart.FC3_ClearPart, - "cmdline": displaymode.FC3_DisplayMode, - "device": device.FC3_Device, - "deviceprobe": deviceprobe.FC3_DeviceProbe, - "driverdisk": driverdisk.FC3_DriverDisk, - "firewall": firewall.FC3_Firewall, - "firstboot": firstboot.FC3_Firstboot, - "graphical": displaymode.FC3_DisplayMode, - "halt": reboot.FC3_Reboot, - "harddrive": method.FC3_Method, - "ignoredisk": ignoredisk.FC3_IgnoreDisk, - "install": upgrade.FC3_Upgrade, - "interactive": interactive.FC3_Interactive, - "keyboard": keyboard.FC3_Keyboard, - "lang": lang.FC3_Lang, - "langsupport": langsupport.FC3_LangSupport, - "lilo": bootloader.FC3_Bootloader, - "lilocheck": lilocheck.FC3_LiloCheck, - "logvol": logvol.FC3_LogVol, - "monitor": monitor.FC3_Monitor, - "mouse": mouse.RHEL3_Mouse, - "network": network.FC3_Network, - "nfs": method.FC3_Method, - "part": partition.FC3_Partition, - "partition": partition.FC3_Partition, - "poweroff": reboot.FC3_Reboot, - "raid": raid.FC3_Raid, - "reboot": reboot.FC3_Reboot, - "rootpw": rootpw.FC3_RootPw, - "shutdown": reboot.FC3_Reboot, - "skipx": skipx.FC3_SkipX, - "text": displaymode.FC3_DisplayMode, - "timezone": timezone.FC3_Timezone, - "upgrade": upgrade.FC3_Upgrade, - "url": method.FC3_Method, - "vnc": vnc.FC3_Vnc, - "volgroup": volgroup.FC3_VolGroup, - "xconfig": xconfig.FC3_XConfig, - "zerombr": zerombr.FC3_ZeroMbr, - }, - - # based on fc3 - RHEL4: { - "auth": authconfig.FC3_Authconfig, - "authconfig": authconfig.FC3_Authconfig, - "autopart": autopart.FC3_AutoPart, - "autostep": autostep.FC3_AutoStep, - "bootloader": bootloader.FC3_Bootloader, - "cdrom": method.FC3_Method, - "clearpart": clearpart.FC3_ClearPart, - "cmdline": displaymode.FC3_DisplayMode, - "device": device.FC3_Device, - "deviceprobe": deviceprobe.FC3_DeviceProbe, - "driverdisk": driverdisk.FC4_DriverDisk, - "firewall": firewall.FC3_Firewall, - "firstboot": firstboot.FC3_Firstboot, - "graphical": displaymode.FC3_DisplayMode, - "halt": reboot.FC3_Reboot, - "harddrive": method.FC3_Method, - "ignoredisk": ignoredisk.F8_IgnoreDisk, - "install": upgrade.FC3_Upgrade, - "interactive": interactive.FC3_Interactive, - "keyboard": keyboard.FC3_Keyboard, - "lang": lang.FC3_Lang, - "langsupport": langsupport.FC3_LangSupport, - "lilo": bootloader.FC3_Bootloader, - "lilocheck": lilocheck.FC3_LiloCheck, - "logvol": logvol.FC3_LogVol, - "monitor": monitor.FC3_Monitor, - "mouse": mouse.FC3_Mouse, - "network": network.RHEL4_Network, - "nfs": method.FC3_Method, - "part": partition.FC3_Partition, - "partition": partition.FC3_Partition, - "poweroff": reboot.FC3_Reboot, - "raid": raid.FC3_Raid, - "reboot": reboot.FC3_Reboot, - "rootpw": rootpw.FC3_RootPw, - "selinux": selinux.FC3_SELinux, - "shutdown": reboot.FC3_Reboot, - "skipx": skipx.FC3_SkipX, - "text": displaymode.FC3_DisplayMode, - "timezone": timezone.FC3_Timezone, - "upgrade": upgrade.FC3_Upgrade, - "url": method.FC3_Method, - "vnc": vnc.FC3_Vnc, - "volgroup": volgroup.FC3_VolGroup, - "xconfig": xconfig.FC3_XConfig, - "zerombr": zerombr.FC3_ZeroMbr, - "zfcp": zfcp.FC3_ZFCP, - }, - - # based on fc6 - RHEL5: { - "auth": authconfig.FC3_Authconfig, - "authconfig": authconfig.FC3_Authconfig, - "autopart": autopart.F9_AutoPart, - "autostep": autostep.FC3_AutoStep, - "bootloader": bootloader.RHEL5_Bootloader, - "cdrom": method.FC6_Method, - "clearpart": clearpart.FC3_ClearPart, - "cmdline": displaymode.FC3_DisplayMode, - "device": device.FC3_Device, - "deviceprobe": deviceprobe.FC3_DeviceProbe, - "dmraid": dmraid.FC6_DmRaid, - "driverdisk": driverdisk.F12_DriverDisk, - "firewall": firewall.FC3_Firewall, - "firstboot": firstboot.FC3_Firstboot, - "graphical": displaymode.FC3_DisplayMode, - "halt": reboot.FC6_Reboot, - "harddrive": method.FC6_Method, - "ignoredisk": ignoredisk.F8_IgnoreDisk, - "install": upgrade.FC3_Upgrade, - "interactive": interactive.FC3_Interactive, - "iscsi": iscsi.FC6_Iscsi, - "iscsiname": iscsiname.FC6_IscsiName, - "key": key.RHEL5_Key, - "keyboard": keyboard.FC3_Keyboard, - "lang": lang.FC3_Lang, - "langsupport": langsupport.FC5_LangSupport, - "logging": logging.FC6_Logging, - "logvol": logvol.RHEL5_LogVol, - "mediacheck": mediacheck.FC4_MediaCheck, - "monitor": monitor.FC6_Monitor, - "mouse": mouse.FC3_Mouse, - "multipath": multipath.FC6_MultiPath, - "network": network.RHEL5_Network, - "nfs": method.FC6_Method, - "part": partition.RHEL5_Partition, - "partition": partition.RHEL5_Partition, - "poweroff": reboot.FC6_Reboot, - "raid": raid.RHEL5_Raid, - "reboot": reboot.FC6_Reboot, - "repo": repo.FC6_Repo, - "rootpw": rootpw.FC3_RootPw, - "services": services.FC6_Services, - "selinux": selinux.FC3_SELinux, - "shutdown": reboot.FC6_Reboot, - "skipx": skipx.FC3_SkipX, - "text": displaymode.FC3_DisplayMode, - "timezone": timezone.FC6_Timezone, - "upgrade": upgrade.FC3_Upgrade, - "user": user.FC6_User, - "url": method.FC6_Method, - "vnc": vnc.FC6_Vnc, - "volgroup": volgroup.FC3_VolGroup, - "xconfig": xconfig.FC6_XConfig, - "zerombr": zerombr.FC3_ZeroMbr, - "zfcp": zfcp.FC3_ZFCP, - }, - - # based on f13ish - RHEL6: { - "auth": authconfig.FC3_Authconfig, - "authconfig": authconfig.FC3_Authconfig, - "autopart": autopart.F12_AutoPart, - "autostep": autostep.FC3_AutoStep, - "bootloader": bootloader.RHEL6_Bootloader, - "cdrom": method.RHEL6_Method, - "clearpart": clearpart.FC3_ClearPart, - "cmdline": displaymode.FC3_DisplayMode, - "device": device.F8_Device, - "deviceprobe": deviceprobe.FC3_DeviceProbe, - "dmraid": dmraid.FC6_DmRaid, - "driverdisk": driverdisk.F12_DriverDisk, - "fcoe": fcoe.F13_Fcoe, - "firewall": firewall.F10_Firewall, - "firstboot": firstboot.FC3_Firstboot, - "graphical": displaymode.FC3_DisplayMode, - "group": group.F12_Group, - "halt": reboot.FC6_Reboot, - "harddrive": method.RHEL6_Method, - "ignoredisk": ignoredisk.RHEL6_IgnoreDisk, - "install": upgrade.F11_Upgrade, - "interactive": interactive.FC3_Interactive, - "iscsi": iscsi.F10_Iscsi, - "iscsiname": iscsiname.FC6_IscsiName, - "keyboard": keyboard.FC3_Keyboard, - "lang": lang.FC3_Lang, - "logging": logging.FC6_Logging, - "logvol": logvol.F12_LogVol, - "mediacheck": mediacheck.FC4_MediaCheck, - "monitor": monitor.F10_Monitor, - "multipath": multipath.FC6_MultiPath, - "network": network.RHEL6_Network, - "nfs": method.RHEL6_Method, - "part": partition.F12_Partition, - "partition": partition.F12_Partition, - "poweroff": reboot.FC6_Reboot, - "raid": raid.F13_Raid, - "reboot": reboot.FC6_Reboot, - "repo": repo.RHEL6_Repo, - "rescue": rescue.F10_Rescue, - "rootpw": rootpw.F8_RootPw, - "selinux": selinux.FC3_SELinux, - "services": services.FC6_Services, - "shutdown": reboot.FC6_Reboot, - "skipx": skipx.FC3_SkipX, - "sshpw": sshpw.F13_SshPw, - "text": displaymode.FC3_DisplayMode, - "timezone": timezone.FC6_Timezone, - "updates": updates.F7_Updates, - "upgrade": upgrade.F11_Upgrade, - "url": method.RHEL6_Method, - "user": user.F12_User, - "vnc": vnc.F9_Vnc, - "volgroup": volgroup.FC3_VolGroup, - "xconfig": xconfig.F10_XConfig, - "zerombr": zerombr.F9_ZeroMbr, - "zfcp": zfcp.F12_ZFCP, - } -} - -# This map is keyed on kickstart syntax version as provided by -# pykickstart.version. Within each sub-dict is a mapping from a data object -# name to the class that provides it. This is a bijective mapping - that is, -# each name maps to exactly one data class and all data classes have a name. -# More than one instance of each class is allowed to exist, however. -dataMap = { - FC3: { - "DriverDiskData": driverdisk.FC3_DriverDiskData, - "LogVolData": logvol.FC3_LogVolData, - "NetworkData": network.FC3_NetworkData, - "PartData": partition.FC3_PartData, - "RaidData": raid.FC3_RaidData, - "VolGroupData": volgroup.FC3_VolGroupData, - "ZFCPData": zfcp.FC3_ZFCPData, - }, - FC4: { - "DriverDiskData": driverdisk.FC4_DriverDiskData, - "LogVolData": logvol.FC4_LogVolData, - "NetworkData": network.FC4_NetworkData, - "PartData": partition.FC4_PartData, - "RaidData": raid.FC4_RaidData, - "VolGroupData": volgroup.FC3_VolGroupData, - "ZFCPData": zfcp.FC3_ZFCPData, - }, - FC5: { - "DriverDiskData": driverdisk.FC4_DriverDiskData, - "LogVolData": logvol.FC4_LogVolData, - "NetworkData": network.FC4_NetworkData, - "PartData": partition.FC4_PartData, - "RaidData": raid.FC5_RaidData, - "VolGroupData": volgroup.FC3_VolGroupData, - "ZFCPData": zfcp.FC3_ZFCPData, - }, - FC6: { - "DriverDiskData": driverdisk.FC4_DriverDiskData, - "DmRaidData": dmraid.FC6_DmRaidData, - "IscsiData": iscsi.FC6_IscsiData, - "LogVolData": logvol.FC4_LogVolData, - "MultiPathData": multipath.FC6_MultiPathData, - "NetworkData": network.FC6_NetworkData, - "PartData": partition.FC4_PartData, - "RaidData": raid.FC5_RaidData, - "RepoData": repo.FC6_RepoData, - "UserData": user.FC6_UserData, - "VolGroupData": volgroup.FC3_VolGroupData, - "ZFCPData": zfcp.FC3_ZFCPData, - }, - F7: { - "DriverDiskData": driverdisk.FC4_DriverDiskData, - "DmRaidData": dmraid.FC6_DmRaidData, - "IscsiData": iscsi.FC6_IscsiData, - "LogVolData": logvol.FC4_LogVolData, - "MultiPathData": multipath.FC6_MultiPathData, - "NetworkData": network.FC6_NetworkData, - "PartData": partition.FC4_PartData, - "RaidData": raid.F7_RaidData, - "RepoData": repo.FC6_RepoData, - "UserData": user.FC6_UserData, - "VolGroupData": volgroup.FC3_VolGroupData, - "ZFCPData": zfcp.FC3_ZFCPData, - }, - F8: { - "DriverDiskData": driverdisk.FC4_DriverDiskData, - "DeviceData": device.F8_DeviceData, - "DmRaidData": dmraid.FC6_DmRaidData, - "IscsiData": iscsi.FC6_IscsiData, - "LogVolData": logvol.FC4_LogVolData, - "MultiPathData": multipath.FC6_MultiPathData, - "NetworkData": network.F8_NetworkData, - "PartData": partition.FC4_PartData, - "RaidData": raid.F7_RaidData, - "RepoData": repo.F8_RepoData, - "UserData": user.F8_UserData, - "VolGroupData": volgroup.FC3_VolGroupData, - "ZFCPData": zfcp.FC3_ZFCPData, - }, - F9: { - "DriverDiskData": driverdisk.FC4_DriverDiskData, - "DeviceData": device.F8_DeviceData, - "DmRaidData": dmraid.FC6_DmRaidData, - "IscsiData": iscsi.FC6_IscsiData, - "LogVolData": logvol.F9_LogVolData, - "MultiPathData": multipath.FC6_MultiPathData, - "NetworkData": network.F8_NetworkData, - "PartData": partition.F9_PartData, - "RaidData": raid.F9_RaidData, - "RepoData": repo.F8_RepoData, - "UserData": user.F8_UserData, - "VolGroupData": volgroup.FC3_VolGroupData, - "ZFCPData": zfcp.FC3_ZFCPData, - }, - F10: { - "DriverDiskData": driverdisk.FC4_DriverDiskData, - "DeviceData": device.F8_DeviceData, - "DmRaidData": dmraid.FC6_DmRaidData, - "IscsiData": iscsi.F10_IscsiData, - "LogVolData": logvol.F9_LogVolData, - "MultiPathData": multipath.FC6_MultiPathData, - "NetworkData": network.F8_NetworkData, - "PartData": partition.F9_PartData, - "RaidData": raid.F9_RaidData, - "RepoData": repo.F8_RepoData, - "UserData": user.F8_UserData, - "VolGroupData": volgroup.FC3_VolGroupData, - "ZFCPData": zfcp.FC3_ZFCPData, - }, - F11: { - "DriverDiskData": driverdisk.FC4_DriverDiskData, - "DeviceData": device.F8_DeviceData, - "DmRaidData": dmraid.FC6_DmRaidData, - "IscsiData": iscsi.F10_IscsiData, - "LogVolData": logvol.F9_LogVolData, - "MultiPathData": multipath.FC6_MultiPathData, - "NetworkData": network.F8_NetworkData, - "PartData": partition.F11_PartData, - "RaidData": raid.F9_RaidData, - "RepoData": repo.F11_RepoData, - "UserData": user.F8_UserData, - "VolGroupData": volgroup.FC3_VolGroupData, - "ZFCPData": zfcp.FC3_ZFCPData, - }, - F12: { - "DriverDiskData": driverdisk.F12_DriverDiskData, - "DeviceData": device.F8_DeviceData, - "DmRaidData": dmraid.FC6_DmRaidData, - "FcoeData": fcoe.F12_FcoeData, - "GroupData": group.F12_GroupData, - "IscsiData": iscsi.F10_IscsiData, - "LogVolData": logvol.F12_LogVolData, - "MultiPathData": multipath.FC6_MultiPathData, - "NetworkData": network.F8_NetworkData, - "PartData": partition.F12_PartData, - "RaidData": raid.F12_RaidData, - "RepoData": repo.F11_RepoData, - "UserData": user.F12_UserData, - "VolGroupData": volgroup.FC3_VolGroupData, - "ZFCPData": zfcp.F12_ZFCPData, - }, - F13: { - "DriverDiskData": driverdisk.F12_DriverDiskData, - "DeviceData": device.F8_DeviceData, - "DmRaidData": dmraid.FC6_DmRaidData, - "FcoeData": fcoe.F13_FcoeData, - "GroupData": group.F12_GroupData, - "IscsiData": iscsi.F10_IscsiData, - "LogVolData": logvol.F12_LogVolData, - "MultiPathData": multipath.FC6_MultiPathData, - "NetworkData": network.F8_NetworkData, - "PartData": partition.F12_PartData, - "RaidData": raid.F13_RaidData, - "RepoData": repo.F13_RepoData, - "SshPwData": sshpw.F13_SshPwData, - "UserData": user.F12_UserData, - "VolGroupData": volgroup.FC3_VolGroupData, - "ZFCPData": zfcp.F12_ZFCPData, - }, - F14: { - "DriverDiskData": driverdisk.F14_DriverDiskData, - "DeviceData": device.F8_DeviceData, - "DmRaidData": dmraid.FC6_DmRaidData, - "FcoeData": fcoe.F13_FcoeData, - "GroupData": group.F12_GroupData, - "IscsiData": iscsi.F10_IscsiData, - "LogVolData": logvol.F14_LogVolData, - "MultiPathData": multipath.FC6_MultiPathData, - "NetworkData": network.F8_NetworkData, - "PartData": partition.F14_PartData, - "RaidData": raid.F14_RaidData, - "RepoData": repo.F14_RepoData, - "SshPwData": sshpw.F13_SshPwData, - "UserData": user.F12_UserData, - "VolGroupData": volgroup.FC3_VolGroupData, - "ZFCPData": zfcp.F14_ZFCPData, - }, - F15: { - "DriverDiskData": driverdisk.F14_DriverDiskData, - "DeviceData": device.F8_DeviceData, - "DmRaidData": dmraid.FC6_DmRaidData, - "FcoeData": fcoe.F13_FcoeData, - "GroupData": group.F12_GroupData, - "IscsiData": iscsi.F10_IscsiData, - "LogVolData": logvol.F15_LogVolData, - "MultiPathData": multipath.FC6_MultiPathData, - "NetworkData": network.F8_NetworkData, - "PartData": partition.F14_PartData, - "RaidData": raid.F15_RaidData, - "RepoData": repo.F15_RepoData, - "SshPwData": sshpw.F13_SshPwData, - "UserData": user.F12_UserData, - "VolGroupData": volgroup.FC3_VolGroupData, - "ZFCPData": zfcp.F14_ZFCPData, - }, - F16: { - "DriverDiskData": driverdisk.F14_DriverDiskData, - "DeviceData": device.F8_DeviceData, - "DmRaidData": dmraid.FC6_DmRaidData, - "FcoeData": fcoe.F13_FcoeData, - "GroupData": group.F12_GroupData, - "IscsiData": iscsi.F10_IscsiData, - "LogVolData": logvol.F15_LogVolData, - "MultiPathData": multipath.FC6_MultiPathData, - "NetworkData": network.F16_NetworkData, - "PartData": partition.F14_PartData, - "RaidData": raid.F15_RaidData, - "RepoData": repo.F15_RepoData, - "SshPwData": sshpw.F13_SshPwData, - "UserData": user.F12_UserData, - "VolGroupData": volgroup.FC3_VolGroupData, - "ZFCPData": zfcp.F14_ZFCPData, - }, - RHEL3: { - "DriverDiskData": driverdisk.FC3_DriverDiskData, - "LogVolData": logvol.FC3_LogVolData, - "NetworkData": network.RHEL4_NetworkData, - "PartData": partition.FC3_PartData, - "RaidData": raid.FC3_RaidData, - "VolGroupData": volgroup.FC3_VolGroupData, - "ZFCPData": zfcp.FC3_ZFCPData, - }, - RHEL4: { - "DriverDiskData": driverdisk.FC4_DriverDiskData, - "LogVolData": logvol.FC3_LogVolData, - "NetworkData": network.RHEL4_NetworkData, - "PartData": partition.FC3_PartData, - "RaidData": raid.FC3_RaidData, - "VolGroupData": volgroup.FC3_VolGroupData, - "ZFCPData": zfcp.FC3_ZFCPData, - }, - RHEL5: { - "DriverDiskData": driverdisk.F12_DriverDiskData, - "DmRaidData": dmraid.FC6_DmRaidData, - "IscsiData": iscsi.FC6_IscsiData, - "LogVolData": logvol.RHEL5_LogVolData, - "MultiPathData": multipath.FC6_MultiPathData, - "NetworkData": network.FC6_NetworkData, - "PartData": partition.RHEL5_PartData, - "RaidData": raid.RHEL5_RaidData, - "RepoData": repo.FC6_RepoData, - "UserData": user.FC6_UserData, - "VolGroupData": volgroup.FC3_VolGroupData, - "ZFCPData": zfcp.FC3_ZFCPData, - }, - RHEL6: { - "DriverDiskData": driverdisk.F12_DriverDiskData, - "DeviceData": device.F8_DeviceData, - "DmRaidData": dmraid.FC6_DmRaidData, - "FcoeData": fcoe.F13_FcoeData, - "GroupData": group.F12_GroupData, - "IscsiData": iscsi.F10_IscsiData, - "LogVolData": logvol.F12_LogVolData, - "MultiPathData": multipath.FC6_MultiPathData, - "NetworkData": network.RHEL6_NetworkData, - "PartData": partition.F12_PartData, - "RaidData": raid.F13_RaidData, - "RepoData": repo.RHEL6_RepoData, - "SshPwData": sshpw.F13_SshPwData, - "UserData": user.F12_UserData, - "VolGroupData": volgroup.FC3_VolGroupData, - "ZFCPData": zfcp.F12_ZFCPData, - } -} diff --git a/mic/kickstart/pykickstart/handlers/f10.py b/mic/kickstart/pykickstart/handlers/f10.py deleted file mode 100644 index 17c8211..0000000 --- a/mic/kickstart/pykickstart/handlers/f10.py +++ /dev/null @@ -1,24 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2008 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.version import * - -class F10Handler(BaseHandler): - version = F10 diff --git a/mic/kickstart/pykickstart/handlers/f11.py b/mic/kickstart/pykickstart/handlers/f11.py deleted file mode 100644 index d21aee3..0000000 --- a/mic/kickstart/pykickstart/handlers/f11.py +++ /dev/null @@ -1,24 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2008 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.version import * - -class F11Handler(BaseHandler): - version = F11 diff --git a/mic/kickstart/pykickstart/handlers/f12.py b/mic/kickstart/pykickstart/handlers/f12.py deleted file mode 100644 index cea3ece..0000000 --- a/mic/kickstart/pykickstart/handlers/f12.py +++ /dev/null @@ -1,24 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2009 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.version import * - -class F12Handler(BaseHandler): - version = F12 diff --git a/mic/kickstart/pykickstart/handlers/f13.py b/mic/kickstart/pykickstart/handlers/f13.py deleted file mode 100644 index b94c738..0000000 --- a/mic/kickstart/pykickstart/handlers/f13.py +++ /dev/null @@ -1,24 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2009 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.version import * - -class F13Handler(BaseHandler): - version = F13 diff --git a/mic/kickstart/pykickstart/handlers/f14.py b/mic/kickstart/pykickstart/handlers/f14.py deleted file mode 100644 index 478f75d..0000000 --- a/mic/kickstart/pykickstart/handlers/f14.py +++ /dev/null @@ -1,24 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2010 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.version import * - -class F14Handler(BaseHandler): - version = F14 diff --git a/mic/kickstart/pykickstart/handlers/f15.py b/mic/kickstart/pykickstart/handlers/f15.py deleted file mode 100644 index 12aecb4..0000000 --- a/mic/kickstart/pykickstart/handlers/f15.py +++ /dev/null @@ -1,24 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2010 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.version import * - -class F15Handler(BaseHandler): - version = F15 diff --git a/mic/kickstart/pykickstart/handlers/f16.py b/mic/kickstart/pykickstart/handlers/f16.py deleted file mode 100644 index 3c52f8d..0000000 --- a/mic/kickstart/pykickstart/handlers/f16.py +++ /dev/null @@ -1,24 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2011 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.version import * - -class F16Handler(BaseHandler): - version = F16 diff --git a/mic/kickstart/pykickstart/handlers/f7.py b/mic/kickstart/pykickstart/handlers/f7.py deleted file mode 100644 index 5e856ea..0000000 --- a/mic/kickstart/pykickstart/handlers/f7.py +++ /dev/null @@ -1,24 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.version import * - -class F7Handler(BaseHandler): - version = F7 diff --git a/mic/kickstart/pykickstart/handlers/f8.py b/mic/kickstart/pykickstart/handlers/f8.py deleted file mode 100644 index 1a97881..0000000 --- a/mic/kickstart/pykickstart/handlers/f8.py +++ /dev/null @@ -1,24 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.version import * - -class F8Handler(BaseHandler): - version = F8 diff --git a/mic/kickstart/pykickstart/handlers/f9.py b/mic/kickstart/pykickstart/handlers/f9.py deleted file mode 100644 index 116f1b5..0000000 --- a/mic/kickstart/pykickstart/handlers/f9.py +++ /dev/null @@ -1,24 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.version import * - -class F9Handler(BaseHandler): - version = F9 diff --git a/mic/kickstart/pykickstart/handlers/fc3.py b/mic/kickstart/pykickstart/handlers/fc3.py deleted file mode 100644 index a115dc2..0000000 --- a/mic/kickstart/pykickstart/handlers/fc3.py +++ /dev/null @@ -1,24 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.version import * - -class FC3Handler(BaseHandler): - version = FC3 diff --git a/mic/kickstart/pykickstart/handlers/fc4.py b/mic/kickstart/pykickstart/handlers/fc4.py deleted file mode 100644 index fd47b73..0000000 --- a/mic/kickstart/pykickstart/handlers/fc4.py +++ /dev/null @@ -1,24 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.version import * - -class FC4Handler(BaseHandler): - version = FC4 diff --git a/mic/kickstart/pykickstart/handlers/fc5.py b/mic/kickstart/pykickstart/handlers/fc5.py deleted file mode 100644 index bcdc29d..0000000 --- a/mic/kickstart/pykickstart/handlers/fc5.py +++ /dev/null @@ -1,24 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.version import * - -class FC5Handler(BaseHandler): - version = FC5 diff --git a/mic/kickstart/pykickstart/handlers/fc6.py b/mic/kickstart/pykickstart/handlers/fc6.py deleted file mode 100644 index c83a929..0000000 --- a/mic/kickstart/pykickstart/handlers/fc6.py +++ /dev/null @@ -1,24 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.version import * - -class FC6Handler(BaseHandler): - version = FC6 diff --git a/mic/kickstart/pykickstart/handlers/rhel3.py b/mic/kickstart/pykickstart/handlers/rhel3.py deleted file mode 100644 index 131763c..0000000 --- a/mic/kickstart/pykickstart/handlers/rhel3.py +++ /dev/null @@ -1,24 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.version import * - -class RHEL3Handler(BaseHandler): - version = RHEL3 diff --git a/mic/kickstart/pykickstart/handlers/rhel4.py b/mic/kickstart/pykickstart/handlers/rhel4.py deleted file mode 100644 index 3496c43..0000000 --- a/mic/kickstart/pykickstart/handlers/rhel4.py +++ /dev/null @@ -1,24 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.version import * - -class RHEL4Handler(BaseHandler): - version = RHEL4 diff --git a/mic/kickstart/pykickstart/handlers/rhel5.py b/mic/kickstart/pykickstart/handlers/rhel5.py deleted file mode 100644 index abb7a8d..0000000 --- a/mic/kickstart/pykickstart/handlers/rhel5.py +++ /dev/null @@ -1,24 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.version import * - -class RHEL5Handler(BaseHandler): - version = RHEL5 diff --git a/mic/kickstart/pykickstart/handlers/rhel6.py b/mic/kickstart/pykickstart/handlers/rhel6.py deleted file mode 100644 index 7202419..0000000 --- a/mic/kickstart/pykickstart/handlers/rhel6.py +++ /dev/null @@ -1,24 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2010 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -from pykickstart.base import * -from pykickstart.version import * - -class RHEL6Handler(BaseHandler): - version = RHEL6 diff --git a/mic/kickstart/pykickstart/ko.py b/mic/kickstart/pykickstart/ko.py deleted file mode 100644 index 1350d19..0000000 --- a/mic/kickstart/pykickstart/ko.py +++ /dev/null @@ -1,37 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2009 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -""" -Base classes for internal pykickstart use. - -The module exports the following important classes: - - KickstartObject - The base class for all classes in pykickstart -""" - -class KickstartObject(object): - """The base class for all other classes in pykickstart.""" - def __init__(self, *args, **kwargs): - """Create a new KickstartObject instance. All other classes in - pykickstart should be derived from this one. Instance attributes: - """ - pass - - def __str__(self): - return "" diff --git a/mic/kickstart/pykickstart/options.py b/mic/kickstart/pykickstart/options.py deleted file mode 100644 index 341c5d7..0000000 --- a/mic/kickstart/pykickstart/options.py +++ /dev/null @@ -1,204 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -""" -Specialized option handling. - -This module exports two classes: - - KSOptionParser - A specialized subclass of OptionParser to be used - in BaseHandler subclasses. - - KSOption - A specialized subclass of Option. -""" -import warnings -from copy import copy -from optparse import * - -from constants import * -from errors import * -from version import * - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -class KSOptionParser(OptionParser): - """A specialized subclass of optparse.OptionParser to handle extra option - attribute checking, work error reporting into the KickstartParseError - framework, and to turn off the default help. - """ - def exit(self, status=0, msg=None): - pass - - def error(self, msg): - if self.lineno != None: - raise KickstartParseError, formatErrorMsg(self.lineno, msg=msg) - else: - raise KickstartParseError, msg - - def keys(self): - retval = [] - - for opt in self.option_list: - if opt not in retval: - retval.append(opt.dest) - - return retval - - def _init_parsing_state (self): - OptionParser._init_parsing_state(self) - self.option_seen = {} - - def check_values (self, values, args): - def seen(self, option): - return self.option_seen.has_key(option) - - def usedTooNew(self, option): - return option.introduced and option.introduced > self.version - - def usedDeprecated(self, option): - return option.deprecated - - def usedRemoved(self, option): - return option.removed and option.removed <= self.version - - for option in filter(lambda o: isinstance(o, Option), self.option_list): - if option.required and not seen(self, option): - raise KickstartValueError, formatErrorMsg(self.lineno, _("Option %s is required") % option) - elif seen(self, option) and usedTooNew(self, option): - mapping = {"option": option, "intro": versionToString(option.introduced), - "version": versionToString(self.version)} - self.error(_("The %(option)s option was introduced in version %(intro)s, but you are using kickstart syntax version %(version)s.") % mapping) - elif seen(self, option) and usedRemoved(self, option): - mapping = {"option": option, "removed": versionToString(option.removed), - "version": versionToString(self.version)} - - if option.removed == self.version: - self.error(_("The %(option)s option is no longer supported.") % mapping) - else: - self.error(_("The %(option)s option was removed in version %(removed)s, but you are using kickstart syntax version %(version)s.") % mapping) - elif seen(self, option) and usedDeprecated(self, option): - mapping = {"lineno": self.lineno, "option": option} - warnings.warn(_("Ignoring deprecated option on line %(lineno)s: The %(option)s option has been deprecated and no longer has any effect. It may be removed from future releases, which will result in a fatal error from kickstart. Please modify your kickstart file to remove this option.") % mapping, DeprecationWarning) - - return (values, args) - - def parse_args(self, *args, **kwargs): - if kwargs.has_key("lineno"): - self.lineno = kwargs.pop("lineno") - - return OptionParser.parse_args(self, **kwargs) - - def __init__(self, mapping=None, version=None): - """Create a new KSOptionParser instance. Each KickstartCommand - subclass should create one instance of KSOptionParser, providing - at least the lineno attribute. mapping and version are not required. - Instance attributes: - - mapping -- A mapping from option strings to different values. - version -- The version of the kickstart syntax we are checking - against. - """ - OptionParser.__init__(self, option_class=KSOption, - add_help_option=False, - conflict_handler="resolve") - if mapping is None: - self.map = {} - else: - self.map = mapping - - self.lineno = None - self.option_seen = {} - self.version = version - -def _check_ksboolean(option, opt, value): - if value.lower() in ("on", "yes", "true", "1"): - return True - elif value.lower() in ("off", "no", "false", "0"): - return False - else: - mapping = {"opt": opt, "value": value} - raise OptionValueError(_("Option %(opt)s: invalid boolean value: %(value)r") % mapping) - -def _check_string(option, opt, value): - if len(value) > 2 and value.startswith("--"): - mapping = {"opt": opt, "value": value} - raise OptionValueError(_("Option %(opt)s: invalid string value: %(value)r") % mapping) - else: - return value - -# Creates a new Option class that supports several new attributes: -# - required: any option with this attribute must be supplied or an exception -# is thrown -# - introduced: the kickstart syntax version that this option first appeared -# in - an exception will be raised if the option is used and -# the specified syntax version is less than the value of this -# attribute -# - deprecated: the kickstart syntax version that this option was deprecated -# in - a DeprecationWarning will be thrown if the option is -# used and the specified syntax version is greater than the -# value of this attribute -# - removed: the kickstart syntax version that this option was removed in - an -# exception will be raised if the option is used and the specified -# syntax version is greated than the value of this attribute -# Also creates a new type: -# - ksboolean: support various kinds of boolean values on an option -# And two new actions: -# - map : allows you to define an opt -> val mapping such that dest gets val -# when opt is seen -# - map_extend: allows you to define an opt -> [val1, ... valn] mapping such -# that dest gets a list of vals built up when opt is seen -class KSOption (Option): - ATTRS = Option.ATTRS + ['introduced', 'deprecated', 'removed', 'required'] - ACTIONS = Option.ACTIONS + ("map", "map_extend",) - STORE_ACTIONS = Option.STORE_ACTIONS + ("map", "map_extend",) - - TYPES = Option.TYPES + ("ksboolean", "string") - TYPE_CHECKER = copy(Option.TYPE_CHECKER) - TYPE_CHECKER["ksboolean"] = _check_ksboolean - TYPE_CHECKER["string"] = _check_string - - def _check_required(self): - if self.required and not self.takes_value(): - raise OptionError(_("Required flag set for option that doesn't take a value"), self) - - # Make sure _check_required() is called from the constructor! - CHECK_METHODS = Option.CHECK_METHODS + [_check_required] - - def process (self, opt, value, values, parser): - Option.process(self, opt, value, values, parser) - parser.option_seen[self] = 1 - - # Override default take_action method to handle our custom actions. - def take_action(self, action, dest, opt, value, values, parser): - if action == "map": - values.ensure_value(dest, parser.map[opt.lstrip('-')]) - elif action == "map_extend": - values.ensure_value(dest, []).extend(parser.map[opt.lstrip('-')]) - else: - Option.take_action(self, action, dest, opt, value, values, parser) - - def takes_value(self): - # Deprecated options don't take a value. - return Option.takes_value(self) and not self.deprecated - - def __init__(self, *args, **kwargs): - self.deprecated = False - self.required = False - Option.__init__(self, *args, **kwargs) diff --git a/mic/kickstart/pykickstart/parser.py b/mic/kickstart/pykickstart/parser.py deleted file mode 100644 index 771ca1e..0000000 --- a/mic/kickstart/pykickstart/parser.py +++ /dev/null @@ -1,702 +0,0 @@ -# -# parser.py: Kickstart file parser. -# -# Chris Lumens -# -# Copyright 2005, 2006, 2007, 2008, 2011 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -""" -Main kickstart file processing module. - -This module exports several important classes: - - Script - Representation of a single %pre, %post, or %traceback script. - - Packages - Representation of the %packages section. - - KickstartParser - The kickstart file parser state machine. -""" - -from collections import Iterator -import os -import shlex -import sys -import tempfile -from copy import copy -from optparse import * -from urlgrabber import urlread -import urlgrabber.grabber as grabber - -import constants -from errors import KickstartError, KickstartParseError, KickstartValueError, formatErrorMsg -from ko import KickstartObject -from sections import * -import version - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -STATE_END = "end" -STATE_COMMANDS = "commands" - -ver = version.DEVEL - -def _preprocessStateMachine (lineIter): - l = None - lineno = 0 - - # Now open an output kickstart file that we are going to write to one - # line at a time. - (outF, outName) = tempfile.mkstemp("-ks.cfg", "", "/tmp") - - while True: - try: - l = lineIter.next() - except StopIteration: - break - - # At the end of the file? - if l == "": - break - - lineno += 1 - url = None - - ll = l.strip() - if not ll.startswith("%ksappend"): - os.write(outF, l) - continue - - # Try to pull down the remote file. - try: - ksurl = ll.split(' ')[1] - except: - raise KickstartParseError, formatErrorMsg(lineno, msg=_("Illegal url for %%ksappend: %s") % ll) - - try: - url = grabber.urlopen(ksurl) - except grabber.URLGrabError, e: - raise KickstartError, formatErrorMsg(lineno, msg=_("Unable to open %%ksappend file: %s") % e.strerror) - else: - # Sanity check result. Sometimes FTP doesn't catch a file - # is missing. - try: - if url.size < 1: - raise KickstartError, formatErrorMsg(lineno, msg=_("Unable to open %%ksappend file")) - except: - raise KickstartError, formatErrorMsg(lineno, msg=_("Unable to open %%ksappend file")) - - # If that worked, write the remote file to the output kickstart - # file in one burst. Then close everything up to get ready to - # read ahead in the input file. This allows multiple %ksappend - # lines to exist. - if url is not None: - os.write(outF, url.read()) - url.close() - - # All done - close the temp file and return its location. - os.close(outF) - return outName - -def preprocessFromString (s): - """Preprocess the kickstart file, provided as the string str. This - method is currently only useful for handling %ksappend lines, - which need to be fetched before the real kickstart parser can be - run. Returns the location of the complete kickstart file. - """ - i = iter(s.splitlines(True) + [""]) - rc = _preprocessStateMachine (i.next) - return rc - -def preprocessKickstart (f): - """Preprocess the kickstart file, given by the filename file. This - method is currently only useful for handling %ksappend lines, - which need to be fetched before the real kickstart parser can be - run. Returns the location of the complete kickstart file. - """ - try: - fh = urlopen(f) - except grabber.URLGrabError, e: - raise KickstartError, formatErrorMsg(0, msg=_("Unable to open input kickstart file: %s") % e.strerror) - - rc = _preprocessStateMachine (iter(fh.readlines())) - fh.close() - return rc - -class PutBackIterator(Iterator): - def __init__(self, iterable): - self._iterable = iter(iterable) - self._buf = None - - def __iter__(self): - return self - - def put(self, s): - self._buf = s - - def next(self): - if self._buf: - retval = self._buf - self._buf = None - return retval - else: - return self._iterable.next() - -### -### SCRIPT HANDLING -### -class Script(KickstartObject): - """A class representing a single kickstart script. If functionality beyond - just a data representation is needed (for example, a run method in - anaconda), Script may be subclassed. Although a run method is not - provided, most of the attributes of Script have to do with running the - script. Instances of Script are held in a list by the Version object. - """ - def __init__(self, script, *args , **kwargs): - """Create a new Script instance. Instance attributes: - - errorOnFail -- If execution of the script fails, should anaconda - stop, display an error, and then reboot without - running any other scripts? - inChroot -- Does the script execute in anaconda's chroot - environment or not? - interp -- The program that should be used to interpret this - script. - lineno -- The line number this script starts on. - logfile -- Where all messages from the script should be logged. - script -- A string containing all the lines of the script. - type -- The type of the script, which can be KS_SCRIPT_* from - pykickstart.constants. - """ - KickstartObject.__init__(self, *args, **kwargs) - self.script = "".join(script) - - self.interp = kwargs.get("interp", "/bin/sh") - self.inChroot = kwargs.get("inChroot", False) - self.lineno = kwargs.get("lineno", None) - self.logfile = kwargs.get("logfile", None) - self.errorOnFail = kwargs.get("errorOnFail", False) - self.type = kwargs.get("type", constants.KS_SCRIPT_PRE) - - def __str__(self): - """Return a string formatted for output to a kickstart file.""" - retval = "" - - if self.type == constants.KS_SCRIPT_PRE: - retval += '\n%pre' - elif self.type == constants.KS_SCRIPT_POST: - retval += '\n%post' - elif self.type == constants.KS_SCRIPT_TRACEBACK: - retval += '\n%traceback' - - if self.interp != "/bin/sh" and self.interp != "": - retval += " --interpreter=%s" % self.interp - if self.type == constants.KS_SCRIPT_POST and not self.inChroot: - retval += " --nochroot" - if self.logfile != None: - retval += " --logfile %s" % self.logfile - if self.errorOnFail: - retval += " --erroronfail" - - if self.script.endswith("\n"): - if ver >= version.F8: - return retval + "\n%s%%end\n" % self.script - else: - return retval + "\n%s\n" % self.script - else: - if ver >= version.F8: - return retval + "\n%s\n%%end\n" % self.script - else: - return retval + "\n%s\n" % self.script - - -## -## PACKAGE HANDLING -## -class Group: - """A class representing a single group in the %packages section.""" - def __init__(self, name="", include=constants.GROUP_DEFAULT): - """Create a new Group instance. Instance attributes: - - name -- The group's identifier - include -- The level of how much of the group should be included. - Values can be GROUP_* from pykickstart.constants. - """ - self.name = name - self.include = include - - def __str__(self): - """Return a string formatted for output to a kickstart file.""" - if self.include == constants.GROUP_REQUIRED: - return "@%s --nodefaults" % self.name - elif self.include == constants.GROUP_ALL: - return "@%s --optional" % self.name - else: - return "@%s" % self.name - - def __cmp__(self, other): - if self.name < other.name: - return -1 - elif self.name > other.name: - return 1 - return 0 - -class Packages(KickstartObject): - """A class representing the %packages section of the kickstart file.""" - def __init__(self, *args, **kwargs): - """Create a new Packages instance. Instance attributes: - - addBase -- Should the Base group be installed even if it is - not specified? - default -- Should the default package set be selected? - excludedList -- A list of all the packages marked for exclusion in - the %packages section, without the leading minus - symbol. - excludeDocs -- Should documentation in each package be excluded? - groupList -- A list of Group objects representing all the groups - specified in the %packages section. Names will be - stripped of the leading @ symbol. - excludedGroupList -- A list of Group objects representing all the - groups specified for removal in the %packages - section. Names will be stripped of the leading - -@ symbols. - handleMissing -- If unknown packages are specified in the %packages - section, should it be ignored or not? Values can - be KS_MISSING_* from pykickstart.constants. - packageList -- A list of all the packages specified in the - %packages section. - instLangs -- A list of languages to install. - """ - KickstartObject.__init__(self, *args, **kwargs) - - self.addBase = True - self.default = False - self.excludedList = [] - self.excludedGroupList = [] - self.excludeDocs = False - self.groupList = [] - self.handleMissing = constants.KS_MISSING_PROMPT - self.packageList = [] - self.instLangs = None - - def __str__(self): - """Return a string formatted for output to a kickstart file.""" - pkgs = "" - - if not self.default: - grps = self.groupList - grps.sort() - for grp in grps: - pkgs += "%s\n" % grp.__str__() - - p = self.packageList - p.sort() - for pkg in p: - pkgs += "%s\n" % pkg - - grps = self.excludedGroupList - grps.sort() - for grp in grps: - pkgs += "-%s\n" % grp.__str__() - - p = self.excludedList - p.sort() - for pkg in p: - pkgs += "-%s\n" % pkg - - if pkgs == "": - return "" - - retval = "\n%packages" - - if self.default: - retval += " --default" - if self.excludeDocs: - retval += " --excludedocs" - if not self.addBase: - retval += " --nobase" - if self.handleMissing == constants.KS_MISSING_IGNORE: - retval += " --ignoremissing" - if self.instLangs: - retval += " --instLangs=%s" % self.instLangs - - if ver >= version.F8: - return retval + "\n" + pkgs + "\n%end\n" - else: - return retval + "\n" + pkgs + "\n" - - def _processGroup (self, line): - op = OptionParser() - op.add_option("--nodefaults", action="store_true", default=False) - op.add_option("--optional", action="store_true", default=False) - - (opts, extra) = op.parse_args(args=line.split()) - - if opts.nodefaults and opts.optional: - raise KickstartValueError, _("Group cannot specify both --nodefaults and --optional") - - # If the group name has spaces in it, we have to put it back together - # now. - grp = " ".join(extra) - - if opts.nodefaults: - self.groupList.append(Group(name=grp, include=constants.GROUP_REQUIRED)) - elif opts.optional: - self.groupList.append(Group(name=grp, include=constants.GROUP_ALL)) - else: - self.groupList.append(Group(name=grp, include=constants.GROUP_DEFAULT)) - - def add (self, pkgList): - """Given a list of lines from the input file, strip off any leading - symbols and add the result to the appropriate list. - """ - existingExcludedSet = set(self.excludedList) - existingPackageSet = set(self.packageList) - newExcludedSet = set() - newPackageSet = set() - - excludedGroupList = [] - - for pkg in pkgList: - stripped = pkg.strip() - - if stripped[0] == "@": - self._processGroup(stripped[1:]) - elif stripped[0] == "-": - if stripped[1] == "@": - excludedGroupList.append(Group(name=stripped[2:])) - else: - newExcludedSet.add(stripped[1:]) - else: - newPackageSet.add(stripped) - - # Groups have to be excluded in two different ways (note: can't use - # sets here because we have to store objects): - excludedGroupNames = map(lambda g: g.name, excludedGroupList) - - # First, an excluded group may be cancelling out a previously given - # one. This is often the case when using %include. So there we should - # just remove the group from the list. - self.groupList = filter(lambda g: g.name not in excludedGroupNames, self.groupList) - - # Second, the package list could have included globs which are not - # processed by pykickstart. In that case we need to preserve a list of - # excluded groups so whatever tool doing package/group installation can - # take appropriate action. - self.excludedGroupList.extend(excludedGroupList) - - existingPackageSet = (existingPackageSet - newExcludedSet) | newPackageSet - existingExcludedSet = (existingExcludedSet - existingPackageSet) | newExcludedSet - - self.packageList = list(existingPackageSet) - self.excludedList = list(existingExcludedSet) - - -### -### PARSER -### -class KickstartParser: - """The kickstart file parser class as represented by a basic state - machine. To create a specialized parser, make a subclass and override - any of the methods you care about. Methods that don't need to do - anything may just pass. However, _stateMachine should never be - overridden. - """ - def __init__ (self, handler, followIncludes=True, errorsAreFatal=True, - missingIncludeIsFatal=True): - """Create a new KickstartParser instance. Instance attributes: - - errorsAreFatal -- Should errors cause processing to halt, or - just print a message to the screen? This - is most useful for writing syntax checkers - that may want to continue after an error is - encountered. - followIncludes -- If %include is seen, should the included - file be checked as well or skipped? - handler -- An instance of a BaseHandler subclass. If - None, the input file will still be parsed - but no data will be saved and no commands - will be executed. - missingIncludeIsFatal -- Should missing include files be fatal, even - if errorsAreFatal is False? - """ - self.errorsAreFatal = errorsAreFatal - self.followIncludes = followIncludes - self.handler = handler - self.currentdir = {} - self.missingIncludeIsFatal = missingIncludeIsFatal - - self._state = STATE_COMMANDS - self._includeDepth = 0 - self._line = "" - - self.version = self.handler.version - - global ver - ver = self.version - - self._sections = {} - self.setupSections() - - def _reset(self): - """Reset the internal variables of the state machine for a new kickstart file.""" - self._state = STATE_COMMANDS - self._includeDepth = 0 - - def getSection(self, s): - """Return a reference to the requested section (s must start with '%'s), - or raise KeyError if not found. - """ - return self._sections[s] - - def handleCommand (self, lineno, args): - """Given the list of command and arguments, call the Version's - dispatcher method to handle the command. Returns the command or - data object returned by the dispatcher. This method may be - overridden in a subclass if necessary. - """ - if self.handler: - self.handler.currentCmd = args[0] - self.handler.currentLine = self._line - retval = self.handler.dispatcher(args, lineno) - - return retval - - def registerSection(self, obj): - """Given an instance of a Section subclass, register the new section - with the parser. Calling this method means the parser will - recognize your new section and dispatch into the given object to - handle it. - """ - if not obj.sectionOpen: - raise TypeError, "no sectionOpen given for section %s" % obj - - if not obj.sectionOpen.startswith("%"): - raise TypeError, "section %s tag does not start with a %%" % obj.sectionOpen - - self._sections[obj.sectionOpen] = obj - - def _finalize(self, obj): - """Called at the close of a kickstart section to take any required - actions. Internally, this is used to add scripts once we have the - whole body read. - """ - obj.finalize() - self._state = STATE_COMMANDS - - def _handleSpecialComments(self, line): - """Kickstart recognizes a couple special comments.""" - if self._state != STATE_COMMANDS: - return - - # Save the platform for s-c-kickstart. - if line[:10] == "#platform=": - self.handler.platform = self._line[11:] - - def _readSection(self, lineIter, lineno): - obj = self._sections[self._state] - - while True: - try: - line = lineIter.next() - if line == "": - # This section ends at the end of the file. - if self.version >= version.F8: - raise KickstartParseError, formatErrorMsg(lineno, msg=_("Section does not end with %%end.")) - - self._finalize(obj) - except StopIteration: - break - - lineno += 1 - - # Throw away blank lines and comments, unless the section wants all - # lines. - if self._isBlankOrComment(line) and not obj.allLines: - continue - - if line.startswith("%"): - args = shlex.split(line) - - if args and args[0] == "%end": - # This is a properly terminated section. - self._finalize(obj) - break - elif args and args[0] == "%ksappend": - continue - elif args and (self._validState(args[0]) or args[0] in ["%include", "%ksappend"]): - # This is an unterminated section. - if self.version >= version.F8: - raise KickstartParseError, formatErrorMsg(lineno, msg=_("Section does not end with %%end.")) - - # Finish up. We do not process the header here because - # kicking back out to STATE_COMMANDS will ensure that happens. - lineIter.put(line) - lineno -= 1 - self._finalize(obj) - break - else: - # This is just a line within a section. Pass it off to whatever - # section handles it. - obj.handleLine(line) - - return lineno - - def _validState(self, st): - """Is the given section tag one that has been registered with the parser?""" - return st in self._sections.keys() - - def _tryFunc(self, fn): - """Call the provided function (which doesn't take any arguments) and - do the appropriate error handling. If errorsAreFatal is False, this - function will just print the exception and keep going. - """ - try: - fn() - except Exception as msg: - if self.errorsAreFatal: - raise - else: - print msg - - def _isBlankOrComment(self, line): - return line.isspace() or line == "" or line.lstrip()[0] == '#' - - def _stateMachine(self, lineIter): - # For error reporting. - lineno = 0 - - while True: - # Get the next line out of the file, quitting if this is the last line. - try: - self._line = lineIter.next() - if self._line == "": - break - except StopIteration: - break - - lineno += 1 - - # Eliminate blank lines, whitespace-only lines, and comments. - if self._isBlankOrComment(self._line): - self._handleSpecialComments(self._line) - continue - - # Remove any end-of-line comments. - sanitized = self._line.split("#")[0] - - # Then split the line. - args = shlex.split(sanitized.rstrip()) - - if args[0] == "%include": - # This case comes up primarily in ksvalidator. - if not self.followIncludes: - continue - - if len(args) == 1 or not args[1]: - raise KickstartParseError, formatErrorMsg(lineno) - - self._includeDepth += 1 - - try: - self.readKickstart(args[1], reset=False) - except KickstartError: - # Handle the include file being provided over the - # network in a %pre script. This case comes up in the - # early parsing in anaconda. - if self.missingIncludeIsFatal: - raise - - self._includeDepth -= 1 - continue - - # Now on to the main event. - if self._state == STATE_COMMANDS: - if args[0] == "%ksappend": - # This is handled by the preprocess* functions, so continue. - continue - elif args[0][0] == '%': - # This is the beginning of a new section. Handle its header - # here. - newSection = args[0] - if not self._validState(newSection): - raise KickstartParseError, formatErrorMsg(lineno, msg=_("Unknown kickstart section: %s" % newSection)) - - self._state = newSection - obj = self._sections[self._state] - self._tryFunc(lambda: obj.handleHeader(lineno, args)) - - # This will handle all section processing, kicking us back - # out to STATE_COMMANDS at the end with the current line - # being the next section header, etc. - lineno = self._readSection(lineIter, lineno) - else: - # This is a command in the command section. Dispatch to it. - self._tryFunc(lambda: self.handleCommand(lineno, args)) - elif self._state == STATE_END: - break - - def readKickstartFromString (self, s, reset=True): - """Process a kickstart file, provided as the string str.""" - if reset: - self._reset() - - # Add a "" to the end of the list so the string reader acts like the - # file reader and we only get StopIteration when we're after the final - # line of input. - i = PutBackIterator(s.splitlines(True) + [""]) - self._stateMachine (i) - - def readKickstart(self, f, reset=True): - """Process a kickstart file, given by the filename f.""" - if reset: - self._reset() - - # an %include might not specify a full path. if we don't try to figure - # out what the path should have been, then we're unable to find it - # requiring full path specification, though, sucks. so let's make - # the reading "smart" by keeping track of what the path is at each - # include depth. - if not os.path.exists(f): - if self.currentdir.has_key(self._includeDepth - 1): - if os.path.exists(os.path.join(self.currentdir[self._includeDepth - 1], f)): - f = os.path.join(self.currentdir[self._includeDepth - 1], f) - - cd = os.path.dirname(f) - if not cd.startswith("/"): - cd = os.path.abspath(cd) - self.currentdir[self._includeDepth] = cd - - try: - s = urlread(f) - except grabber.URLGrabError, e: - raise KickstartError, formatErrorMsg(0, msg=_("Unable to open input kickstart file: %s") % e.strerror) - - self.readKickstartFromString(s, reset=False) - - def setupSections(self): - """Install the sections all kickstart files support. You may override - this method in a subclass, but should avoid doing so unless you know - what you're doing. - """ - self._sections = {} - - # Install the sections all kickstart files support. - self.registerSection(PreScriptSection(self.handler, dataObj=Script)) - self.registerSection(PostScriptSection(self.handler, dataObj=Script)) - self.registerSection(TracebackScriptSection(self.handler, dataObj=Script)) - self.registerSection(PackageSection(self.handler)) diff --git a/mic/kickstart/pykickstart/sections.py b/mic/kickstart/pykickstart/sections.py deleted file mode 100644 index 44df856..0000000 --- a/mic/kickstart/pykickstart/sections.py +++ /dev/null @@ -1,244 +0,0 @@ -# -# sections.py: Kickstart file sections. -# -# Chris Lumens -# -# Copyright 2011 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -""" -This module exports the classes that define a section of a kickstart file. A -section is a chunk of the file starting with a %tag and ending with a %end. -Examples of sections include %packages, %pre, and %post. - -You may use this module to define your own custom sections which will be -treated just the same as a predefined one by the kickstart parser. All that -is necessary is to create a new subclass of Section and call -parser.registerSection with an instance of your new class. -""" -from constants import * -from options import KSOptionParser -from version import * - -class Section(object): - """The base class for defining kickstart sections. You are free to - subclass this as appropriate. - - Class attributes: - - allLines -- Does this section require the parser to call handleLine - for every line in the section, even blanks and comments? - sectionOpen -- The string that denotes the start of this section. You - must start your tag with a percent sign. - timesSeen -- This attribute is for informational purposes only. It is - incremented every time handleHeader is called to keep - track of the number of times a section of this type is - seen. - """ - allLines = False - sectionOpen = "" - timesSeen = 0 - - def __init__(self, handler, **kwargs): - """Create a new Script instance. At the least, you must pass in an - instance of a baseHandler subclass. - - Valid kwargs: - - dataObj -- - """ - self.handler = handler - - self.version = self.handler.version - - self.dataObj = kwargs.get("dataObj", None) - - def finalize(self): - """This method is called when the %end tag for a section is seen. It - is not required to be provided. - """ - pass - - def handleLine(self, line): - """This method is called for every line of a section. Take whatever - action is appropriate. While this method is not required to be - provided, not providing it does not make a whole lot of sense. - - Arguments: - - line -- The complete line, with any trailing newline. - """ - pass - - def handleHeader(self, lineno, args): - """This method is called when the opening tag for a section is seen. - Not all sections will need this method, though all provided with - kickstart include one. - - Arguments: - - args -- A list of all strings passed as arguments to the section - opening tag. - """ - self.timesSeen += 1 - -class NullSection(Section): - """This defines a section that pykickstart will recognize but do nothing - with. If the parser runs across a %section that has no object registered, - it will raise an error. Sometimes, you may want to simply ignore those - sections instead. This class is useful for that purpose. - """ - def __init__(self, *args, **kwargs): - """Create a new NullSection instance. You must pass a sectionOpen - parameter (including a leading '%') for the section you wish to - ignore. - """ - Section.__init__(self, *args, **kwargs) - self.sectionOpen = kwargs.get("sectionOpen") - -class ScriptSection(Section): - allLines = True - - def __init__(self, *args, **kwargs): - Section.__init__(self, *args, **kwargs) - self._script = {} - self._resetScript() - - def _getParser(self): - op = KSOptionParser(self.version) - op.add_option("--erroronfail", dest="errorOnFail", action="store_true", - default=False) - op.add_option("--interpreter", dest="interpreter", default="/bin/sh") - op.add_option("--log", "--logfile", dest="log") - return op - - def _resetScript(self): - self._script = {"interp": "/bin/sh", "log": None, "errorOnFail": False, - "lineno": None, "chroot": False, "body": []} - - def handleLine(self, line): - self._script["body"].append(line) - - def finalize(self): - if " ".join(self._script["body"]).strip() == "": - return - - kwargs = {"interp": self._script["interp"], - "inChroot": self._script["chroot"], - "lineno": self._script["lineno"], - "logfile": self._script["log"], - "errorOnFail": self._script["errorOnFail"], - "type": self._script["type"]} - - s = self.dataObj (self._script["body"], **kwargs) - self._resetScript() - - if self.handler: - self.handler.scripts.append(s) - - def handleHeader(self, lineno, args): - """Process the arguments to a %pre/%post/%traceback header for later - setting on a Script instance once the end of the script is found. - This method may be overridden in a subclass if necessary. - """ - Section.handleHeader(self, lineno, args) - op = self._getParser() - - (opts, extra) = op.parse_args(args=args[1:], lineno=lineno) - - self._script["interp"] = opts.interpreter - self._script["lineno"] = lineno - self._script["log"] = opts.log - self._script["errorOnFail"] = opts.errorOnFail - if hasattr(opts, "nochroot"): - self._script["chroot"] = not opts.nochroot - -class PreScriptSection(ScriptSection): - sectionOpen = "%pre" - - def _resetScript(self): - ScriptSection._resetScript(self) - self._script["type"] = KS_SCRIPT_PRE - -class PostScriptSection(ScriptSection): - sectionOpen = "%post" - - def _getParser(self): - op = ScriptSection._getParser(self) - op.add_option("--nochroot", dest="nochroot", action="store_true", - default=False) - return op - - def _resetScript(self): - ScriptSection._resetScript(self) - self._script["chroot"] = True - self._script["type"] = KS_SCRIPT_POST - -class TracebackScriptSection(ScriptSection): - sectionOpen = "%traceback" - - def _resetScript(self): - ScriptSection._resetScript(self) - self._script["type"] = KS_SCRIPT_TRACEBACK - -class PackageSection(Section): - sectionOpen = "%packages" - - def handleLine(self, line): - if not self.handler: - return - - (h, s, t) = line.partition('#') - line = h.rstrip() - - self.handler.packages.add([line]) - - def handleHeader(self, lineno, args): - """Process the arguments to the %packages header and set attributes - on the Version's Packages instance appropriate. This method may be - overridden in a subclass if necessary. - """ - Section.handleHeader(self, lineno, args) - op = KSOptionParser(version=self.version) - op.add_option("--excludedocs", dest="excludedocs", action="store_true", - default=False) - op.add_option("--ignoremissing", dest="ignoremissing", - action="store_true", default=False) - op.add_option("--nobase", dest="nobase", action="store_true", - default=False) - op.add_option("--ignoredeps", dest="resolveDeps", action="store_false", - deprecated=FC4, removed=F9) - op.add_option("--resolvedeps", dest="resolveDeps", action="store_true", - deprecated=FC4, removed=F9) - op.add_option("--default", dest="defaultPackages", action="store_true", - default=False, introduced=F7) - op.add_option("--instLangs", dest="instLangs", type="string", - default="", introduced=F9) - - (opts, extra) = op.parse_args(args=args[1:], lineno=lineno) - - self.handler.packages.excludeDocs = opts.excludedocs - self.handler.packages.addBase = not opts.nobase - if opts.ignoremissing: - self.handler.packages.handleMissing = KS_MISSING_IGNORE - else: - self.handler.packages.handleMissing = KS_MISSING_PROMPT - - if opts.defaultPackages: - self.handler.packages.default = True - - if opts.instLangs: - self.handler.packages.instLangs = opts.instLangs diff --git a/mic/kickstart/pykickstart/version.py b/mic/kickstart/pykickstart/version.py deleted file mode 100644 index 102cc37..0000000 --- a/mic/kickstart/pykickstart/version.py +++ /dev/null @@ -1,197 +0,0 @@ -# -# Chris Lumens -# -# Copyright 2006, 2007, 2008, 2009, 2010 Red Hat, Inc. -# -# This copyrighted material is made available to anyone wishing to use, modify, -# copy, or redistribute it subject to the terms and conditions of the GNU -# General Public License v.2. This program is distributed in the hope that it -# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the -# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat -# trademarks that are incorporated in the source code or documentation are not -# subject to the GNU General Public License and may only be used or replicated -# with the express permission of Red Hat, Inc. -# -""" -Methods for working with kickstart versions. - -This module defines several symbolic constants that specify kickstart syntax -versions. Each version corresponds roughly to one release of Red Hat Linux, -Red Hat Enterprise Linux, or Fedora Core as these are where most syntax -changes take place. - -This module also exports several functions: - - makeVersion - Given a version number, return an instance of the - matching handler class. - - returnClassForVersion - Given a version number, return the matching - handler class. This does not return an - instance of that class, however. - - stringToVersion - Convert a string representation of a version number - into the symbolic constant. - - versionToString - Perform the reverse mapping. - - versionFromFile - Read a kickstart file and determine the version of - syntax it uses. This requires the kickstart file to - have a version= comment in it. -""" -import imputil, re, sys -from urlgrabber import urlopen - -import gettext -_ = lambda x: gettext.ldgettext("pykickstart", x) - -from pykickstart.errors import KickstartVersionError - -# Symbolic names for internal version numbers. -RHEL3 = 900 -FC3 = 1000 -RHEL4 = 1100 -FC4 = 2000 -FC5 = 3000 -FC6 = 4000 -RHEL5 = 4100 -F7 = 5000 -F8 = 6000 -F9 = 7000 -F10 = 8000 -F11 = 9000 -F12 = 10000 -F13 = 11000 -RHEL6 = 11100 -F14 = 12000 -F15 = 13000 -F16 = 14000 - -# This always points at the latest version and is the default. -DEVEL = F16 - -# A one-to-one mapping from string representations to version numbers. -versionMap = { - "DEVEL": DEVEL, - "FC3": FC3, "FC4": FC4, "FC5": FC5, "FC6": FC6, "F7": F7, "F8": F8, - "F9": F9, "F10": F10, "F11": F11, "F12": F12, "F13": F13, - "F14": F14, "F15": F15, "F16": F16, - "RHEL3": RHEL3, "RHEL4": RHEL4, "RHEL5": RHEL5, "RHEL6": RHEL6 -} - -def stringToVersion(s): - """Convert string into one of the provided version constants. Raises - KickstartVersionError if string does not match anything. - """ - # First try these short forms. - try: - return versionMap[s.upper()] - except KeyError: - pass - - # Now try the Fedora versions. - m = re.match("^fedora.* (\d+)$", s, re.I) - - if m and m.group(1): - if versionMap.has_key("FC" + m.group(1)): - return versionMap["FC" + m.group(1)] - elif versionMap.has_key("F" + m.group(1)): - return versionMap["F" + m.group(1)] - else: - raise KickstartVersionError(_("Unsupported version specified: %s") % s) - - # Now try the RHEL versions. - m = re.match("^red hat enterprise linux.* (\d+)([\.\d]*)$", s, re.I) - - if m and m.group(1): - if versionMap.has_key("RHEL" + m.group(1)): - return versionMap["RHEL" + m.group(1)] - else: - raise KickstartVersionError(_("Unsupported version specified: %s") % s) - - # If nothing else worked, we're out of options. - raise KickstartVersionError(_("Unsupported version specified: %s") % s) - -def versionToString(version, skipDevel=False): - """Convert version into a string representation of the version number. - This is the reverse operation of stringToVersion. Raises - KickstartVersionError if version does not match anything. - """ - if not skipDevel and version == versionMap["DEVEL"]: - return "DEVEL" - - for (key, val) in versionMap.iteritems(): - if key == "DEVEL": - continue - elif val == version: - return key - - raise KickstartVersionError(_("Unsupported version specified: %s") % version) - -def versionFromFile(f): - """Given a file or URL, look for a line starting with #version= and - return the version number. If no version is found, return DEVEL. - """ - v = DEVEL - - fh = urlopen(f) - - while True: - try: - l = fh.readline() - except StopIteration: - break - - # At the end of the file? - if l == "": - break - - if l.isspace() or l.strip() == "": - continue - - if l[:9] == "#version=": - v = stringToVersion(l[9:].rstrip()) - break - - fh.close() - return v - -def returnClassForVersion(version=DEVEL): - """Return the class of the syntax handler for version. version can be - either a string or the matching constant. Raises KickstartValueError - if version does not match anything. - """ - try: - version = int(version) - module = "%s" % versionToString(version, skipDevel=True) - except ValueError: - module = "%s" % version - version = stringToVersion(version) - - module = module.lower() - - try: - import pykickstart.handlers - sys.path.extend(pykickstart.handlers.__path__) - found = imputil.imp.find_module(module) - loaded = imputil.imp.load_module(module, found[0], found[1], found[2]) - - for (k, v) in loaded.__dict__.iteritems(): - if k.lower().endswith("%shandler" % module): - return v - except: - raise KickstartVersionError(_("Unsupported version specified: %s") % version) - -def makeVersion(version=DEVEL): - """Return a new instance of the syntax handler for version. version can be - either a string or the matching constant. This function is useful for - standalone programs which just need to handle a specific version of - kickstart syntax (as provided by a command line argument, for example) - and need to instantiate the correct object. - """ - cl = returnClassForVersion(version) - return cl() diff --git a/mic/pykickstart/__init__.py b/mic/pykickstart/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/mic/pykickstart/base.py b/mic/pykickstart/base.py new file mode 100644 index 0000000..e6c8f56 --- /dev/null +++ b/mic/pykickstart/base.py @@ -0,0 +1,466 @@ +# +# Chris Lumens +# +# Copyright 2006, 2007, 2008 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +""" +Base classes for creating commands and syntax version object. + +This module exports several important base classes: + + BaseData - The base abstract class for all data objects. Data objects + are contained within a BaseHandler object. + + BaseHandler - The base abstract class from which versioned kickstart + handler are derived. Subclasses of BaseHandler hold + BaseData and KickstartCommand objects. + + DeprecatedCommand - An abstract subclass of KickstartCommand that should + be further subclassed by users of this module. When + a subclass is used, a warning message will be + printed. + + KickstartCommand - The base abstract class for all kickstart commands. + Command objects are contained within a BaseHandler + object. +""" +import gettext +gettext.textdomain("pykickstart") +_ = lambda x: gettext.ldgettext("pykickstart", x) + +import types +import warnings +from pykickstart.errors import * +from pykickstart.ko import * +from pykickstart.parser import Packages +from pykickstart.version import versionToString + +### +### COMMANDS +### +class KickstartCommand(KickstartObject): + """The base class for all kickstart commands. This is an abstract class.""" + removedKeywords = [] + removedAttrs = [] + + def __init__(self, writePriority=0, *args, **kwargs): + """Create a new KickstartCommand instance. This method must be + provided by all subclasses, but subclasses must call + KickstartCommand.__init__ first. Instance attributes: + + currentCmd -- The name of the command in the input file that + caused this handler to be run. + currentLine -- The current unprocessed line from the input file + that caused this handler to be run. + handler -- A reference to the BaseHandler subclass this + command is contained withing. This is needed to + allow referencing of Data objects. + lineno -- The current line number in the input file. + writePriority -- An integer specifying when this command should be + printed when iterating over all commands' __str__ + methods. The higher the number, the later this + command will be written. All commands with the + same priority will be written alphabetically. + """ + + # We don't want people using this class by itself. + if self.__class__ is KickstartCommand: + raise TypeError, "KickstartCommand is an abstract class." + + KickstartObject.__init__(self, *args, **kwargs) + + self.writePriority = writePriority + + # These will be set by the dispatcher. + self.currentCmd = "" + self.currentLine = "" + self.handler = None + self.lineno = 0 + + # If a subclass provides a removedKeywords list, remove all the + # members from the kwargs list before we start processing it. This + # ensures that subclasses don't continue to recognize arguments that + # were removed. + for arg in filter(kwargs.has_key, self.removedKeywords): + kwargs.pop(arg) + + def __call__(self, *args, **kwargs): + """Set multiple attributes on a subclass of KickstartCommand at once + via keyword arguments. Valid attributes are anything specified in + a subclass, but unknown attributes will be ignored. + """ + for (key, val) in kwargs.items(): + # Ignore setting attributes that were removed in a subclass, as + # if they were unknown attributes. + if key in self.removedAttrs: + continue + + if hasattr(self, key): + setattr(self, key, val) + + def __str__(self): + """Return a string formatted for output to a kickstart file. This + method must be provided by all subclasses. + """ + return KickstartObject.__str__(self) + + def parse(self, args): + """Parse the list of args and set data on the KickstartCommand object. + This method must be provided by all subclasses. + """ + raise TypeError, "parse() not implemented for KickstartCommand" + + def apply(self, instroot="/"): + """Write out the configuration related to the KickstartCommand object. + Subclasses which do not provide this method will not have their + configuration written out. + """ + return + + def dataList(self): + """For commands that can occur multiple times in a single kickstart + file (like network, part, etc.), return the list that we should + append more data objects to. + """ + return None + + def deleteRemovedAttrs(self): + """Remove all attributes from self that are given in the removedAttrs + list. This method should be called from __init__ in a subclass, + but only after the superclass's __init__ method has been called. + """ + for attr in filter(lambda k: hasattr(self, k), self.removedAttrs): + delattr(self, attr) + + # Set the contents of the opts object (an instance of optparse.Values + # returned by parse_args) as attributes on the KickstartCommand object. + # It's useful to call this from KickstartCommand subclasses after parsing + # the arguments. + def _setToSelf(self, optParser, opts): + self._setToObj(optParser, opts, self) + + # Sets the contents of the opts object (an instance of optparse.Values + # returned by parse_args) as attributes on the provided object obj. It's + # useful to call this from KickstartCommand subclasses that handle lists + # of objects (like partitions, network devices, etc.) and need to populate + # a Data object. + def _setToObj(self, optParser, opts, obj): + for key in filter (lambda k: getattr(opts, k) != None, optParser.keys()): + setattr(obj, key, getattr(opts, key)) + +class DeprecatedCommand(KickstartCommand): + """Specify that a command is deprecated and no longer has any function. + Any command that is deprecated should be subclassed from this class, + only specifying an __init__ method that calls the superclass's __init__. + This is an abstract class. + """ + def __init__(self, writePriority=None, *args, **kwargs): + # We don't want people using this class by itself. + if self.__class__ is KickstartCommand: + raise TypeError, "DeprecatedCommand is an abstract class." + + # Create a new DeprecatedCommand instance. + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + + def __str__(self): + """Placeholder since DeprecatedCommands don't work anymore.""" + return "" + + def parse(self, args): + """Print a warning message if the command is seen in the input file.""" + mapping = {"lineno": self.lineno, "cmd": self.currentCmd} + warnings.warn(_("Ignoring deprecated command on line %(lineno)s: The %(cmd)s command has been deprecated and no longer has any effect. It may be removed from future releases, which will result in a fatal error from kickstart. Please modify your kickstart file to remove this command.") % mapping, DeprecationWarning) + + +### +### HANDLERS +### +class BaseHandler(KickstartObject): + """Each version of kickstart syntax is provided by a subclass of this + class. These subclasses are what users will interact with for parsing, + extracting data, and writing out kickstart files. This is an abstract + class. + + version -- The version this syntax handler supports. This is set by + a class attribute of a BaseHandler subclass and is used to + set up the command dict. It is for read-only use. + """ + version = None + + def __init__(self, mapping=None, dataMapping=None, commandUpdates=None, + dataUpdates=None, *args, **kwargs): + """Create a new BaseHandler instance. This method must be provided by + all subclasses, but subclasses must call BaseHandler.__init__ first. + + mapping -- A custom map from command strings to classes, + useful when creating your own handler with + special command objects. It is otherwise unused + and rarely needed. If you give this argument, + the mapping takes the place of the default one + and so must include all commands you want + recognized. + dataMapping -- This is the same as mapping, but for data + objects. All the same comments apply. + commandUpdates -- This is similar to mapping, but does not take + the place of the defaults entirely. Instead, + this mapping is applied after the defaults and + updates it with just the commands you want to + modify. + dataUpdates -- This is the same as commandUpdates, but for + data objects. + + + Instance attributes: + + commands -- A mapping from a string command to a KickstartCommand + subclass object that handles it. Multiple strings can + map to the same object, but only one instance of the + command object should ever exist. Most users should + never have to deal with this directly, as it is + manipulated internally and called through dispatcher. + currentLine -- The current unprocessed line from the input file + that caused this handler to be run. + packages -- An instance of pykickstart.parser.Packages which + describes the packages section of the input file. + platform -- A string describing the hardware platform, which is + needed only by system-config-kickstart. + scripts -- A list of pykickstart.parser.Script instances, which is + populated by KickstartParser.addScript and describes the + %pre/%post/%traceback script section of the input file. + """ + + # We don't want people using this class by itself. + if self.__class__ is BaseHandler: + raise TypeError, "BaseHandler is an abstract class." + + KickstartObject.__init__(self, *args, **kwargs) + + # This isn't really a good place for these, but it's better than + # everything else I can think of. + self.scripts = [] + self.packages = Packages() + self.platform = "" + + # These will be set by the dispatcher. + self.commands = {} + self.currentLine = 0 + + # A dict keyed by an integer priority number, with each value being a + # list of KickstartCommand subclasses. This dict is maintained by + # registerCommand and used in __str__. No one else should be touching + # it. + self._writeOrder = {} + + self._registerCommands(mapping, dataMapping, commandUpdates, dataUpdates) + + def __str__(self): + """Return a string formatted for output to a kickstart file.""" + retval = "" + + if self.platform != "": + retval += "#platform=%s\n" % self.platform + + retval += "#version=%s\n" % versionToString(self.version) + + lst = self._writeOrder.keys() + lst.sort() + + for prio in lst: + for obj in self._writeOrder[prio]: + retval += obj.__str__() + + for script in self.scripts: + retval += script.__str__() + + retval += self.packages.__str__() + + return retval + + def _insertSorted(self, lst, obj): + length = len(lst) + i = 0 + + while i < length: + # If the two classes have the same name, it's because we are + # overriding an existing class with one from a later kickstart + # version, so remove the old one in favor of the new one. + if obj.__class__.__name__ > lst[i].__class__.__name__: + i += 1 + elif obj.__class__.__name__ == lst[i].__class__.__name__: + lst[i] = obj + return + elif obj.__class__.__name__ < lst[i].__class__.__name__: + break + + if i >= length: + lst.append(obj) + else: + lst.insert(i, obj) + + def _setCommand(self, cmdObj): + # Add an attribute on this version object. We need this to provide a + # way for clients to access the command objects. We also need to strip + # off the version part from the front of the name. + if cmdObj.__class__.__name__.find("_") != -1: + name = unicode(cmdObj.__class__.__name__.split("_", 1)[1]) + else: + name = unicode(cmdObj.__class__.__name__).lower() + + setattr(self, name.lower(), cmdObj) + + # Also, add the object into the _writeOrder dict in the right place. + if cmdObj.writePriority is not None: + if self._writeOrder.has_key(cmdObj.writePriority): + self._insertSorted(self._writeOrder[cmdObj.writePriority], cmdObj) + else: + self._writeOrder[cmdObj.writePriority] = [cmdObj] + + def _registerCommands(self, mapping=None, dataMapping=None, commandUpdates=None, + dataUpdates=None): + if mapping == {} or mapping == None: + from pykickstart.handlers.control import commandMap + cMap = commandMap[self.version] + else: + cMap = mapping + + if dataMapping == {} or dataMapping == None: + from pykickstart.handlers.control import dataMap + dMap = dataMap[self.version] + else: + dMap = dataMapping + + if type(commandUpdates) == types.DictType: + cMap.update(commandUpdates) + + if type(dataUpdates) == types.DictType: + dMap.update(dataUpdates) + + for (cmdName, cmdClass) in cMap.iteritems(): + # First make sure we haven't instantiated this command handler + # already. If we have, we just need to make another mapping to + # it in self.commands. + cmdObj = None + + for (key, val) in self.commands.iteritems(): + if val.__class__.__name__ == cmdClass.__name__: + cmdObj = val + break + + # If we didn't find an instance in self.commands, create one now. + if cmdObj == None: + cmdObj = cmdClass() + self._setCommand(cmdObj) + + # Finally, add the mapping to the commands dict. + self.commands[cmdName] = cmdObj + self.commands[cmdName].handler = self + + # We also need to create attributes for the various data objects. + # No checks here because dMap is a bijection. At least, that's what + # the comment says. Hope no one screws that up. + for (dataName, dataClass) in dMap.iteritems(): + setattr(self, dataName, dataClass) + + def dispatcher(self, args, lineno): + """Call the appropriate KickstartCommand handler for the current line + in the kickstart file. A handler for the current command should + be registered, though a handler of None is not an error. Returns + the data object returned by KickstartCommand.parse. + + args -- A list of arguments to the current command + lineno -- The line number in the file, for error reporting + """ + cmd = args[0] + + if not self.commands.has_key(cmd): + raise KickstartParseError, formatErrorMsg(lineno, msg=_("Unknown command: %s" % cmd)) + elif self.commands[cmd] != None: + self.commands[cmd].currentCmd = cmd + self.commands[cmd].currentLine = self.currentLine + self.commands[cmd].lineno = lineno + + # The parser returns the data object that was modified. This could + # be a BaseData subclass that should be put into a list, or it + # could be the command handler object itself. + obj = self.commands[cmd].parse(args[1:]) + lst = self.commands[cmd].dataList() + if lst is not None: + lst.append(obj) + + return obj + + def maskAllExcept(self, lst): + """Set all entries in the commands dict to None, except the ones in + the lst. All other commands will not be processed. + """ + self._writeOrder = {} + + for (key, val) in self.commands.iteritems(): + if not key in lst: + self.commands[key] = None + + def hasCommand(self, cmd): + """Return true if there is a handler for the string cmd.""" + return hasattr(self, cmd) + + +### +### DATA +### +class BaseData(KickstartObject): + """The base class for all data objects. This is an abstract class.""" + removedKeywords = [] + removedAttrs = [] + + def __init__(self, *args, **kwargs): + """Create a new BaseData instance. + + lineno -- Line number in the ks-file where this object was defined + """ + + # We don't want people using this class by itself. + if self.__class__ is BaseData: + raise TypeError, "BaseData is an abstract class." + + KickstartObject.__init__(self, *args, **kwargs) + self.lineno = 0 + + def __str__(self): + """Return a string formatted for output to a kickstart file.""" + return "" + + def __call__(self, *args, **kwargs): + """Set multiple attributes on a subclass of BaseData at once via + keyword arguments. Valid attributes are anything specified in a + subclass, but unknown attributes will be ignored. + """ + for (key, val) in kwargs.items(): + # Ignore setting attributes that were removed in a subclass, as + # if they were unknown attributes. + if key in self.removedAttrs: + continue + + if hasattr(self, key): + setattr(self, key, val) + + def deleteRemovedAttrs(self): + """Remove all attributes from self that are given in the removedAttrs + list. This method should be called from __init__ in a subclass, + but only after the superclass's __init__ method has been called. + """ + for attr in filter(lambda k: hasattr(self, k), self.removedAttrs): + delattr(self, attr) diff --git a/mic/pykickstart/commands/__init__.py b/mic/pykickstart/commands/__init__.py new file mode 100644 index 0000000..da48ff5 --- /dev/null +++ b/mic/pykickstart/commands/__init__.py @@ -0,0 +1,26 @@ +# +# Chris Lumens +# +# Copyright 2009 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +import authconfig, autopart, autostep, bootloader, clearpart, device +import deviceprobe, displaymode, dmraid, driverdisk, fcoe, firewall, firstboot +import group, ignoredisk, interactive, iscsi, iscsiname, key, keyboard, lang +import langsupport, lilocheck, logging, logvol, mediacheck, method, monitor +import mouse, multipath, network, partition, raid, reboot, repo, rescue, rootpw +import selinux, services, skipx, sshpw, timezone, updates, upgrade, user, vnc +import volgroup, xconfig, zerombr, zfcp diff --git a/mic/pykickstart/commands/authconfig.py b/mic/pykickstart/commands/authconfig.py new file mode 100644 index 0000000..9af9c0f --- /dev/null +++ b/mic/pykickstart/commands/authconfig.py @@ -0,0 +1,40 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * + +class FC3_Authconfig(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, *args, **kwargs) + self.authconfig = kwargs.get("authconfig", "") + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.authconfig: + retval += "# System authorization information\nauth %s\n" % self.authconfig + + return retval + + def parse(self, args): + self.authconfig = self.currentLine[len(self.currentCmd):].strip() + return self diff --git a/mic/pykickstart/commands/autopart.py b/mic/pykickstart/commands/autopart.py new file mode 100644 index 0000000..cf28b5c --- /dev/null +++ b/mic/pykickstart/commands/autopart.py @@ -0,0 +1,119 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007, 2008 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC3_AutoPart(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=100, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.autopart = kwargs.get("autopart", False) + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.autopart: + retval += "autopart\n" + + return retval + + def parse(self, args): + if len(args) > 0: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s does not take any arguments") % "autopart") + + self.autopart = True + return self + +class F9_AutoPart(FC3_AutoPart): + removedKeywords = FC3_AutoPart.removedKeywords + removedAttrs = FC3_AutoPart.removedAttrs + + def __init__(self, writePriority=100, *args, **kwargs): + FC3_AutoPart.__init__(self, writePriority=writePriority, *args, **kwargs) + self.encrypted = kwargs.get("encrypted", False) + self.passphrase = kwargs.get("passphrase", "") + + self.op = self._getParser() + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.autopart: + retval += "autopart" + + if self.encrypted: + retval += " --encrypted" + + if self.passphrase != "": + retval += " --passphrase=\"%s\""% self.passphrase + + if retval != "": + retval += "\n" + + return retval + + def _getParser(self): + op = KSOptionParser() + op.add_option("--encrypted", action="store_true", default=False) + op.add_option("--passphrase") + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + self._setToSelf(self.op, opts) + self.autopart = True + return self + +class F12_AutoPart(F9_AutoPart): + removedKeywords = F9_AutoPart.removedKeywords + removedAttrs = F9_AutoPart.removedAttrs + + def __init__(self, writePriority=100, *args, **kwargs): + F9_AutoPart.__init__(self, writePriority=writePriority, *args, **kwargs) + + self.escrowcert = kwargs.get("escrowcert", "") + self.backuppassphrase = kwargs.get("backuppassphrase", False) + + def __str__(self): + retval = F9_AutoPart.__str__(self) + + if self.encrypted and self.escrowcert != "": + retval = retval.strip() + + retval += " --escrowcert=\"%s\"" % self.escrowcert + + if self.backuppassphrase: + retval += " --backuppassphrase" + + retval += "\n" + + return retval + + def _getParser(self): + op = F9_AutoPart._getParser(self) + op.add_option("--escrowcert") + op.add_option("--backuppassphrase", action="store_true", default=False) + return op diff --git a/mic/pykickstart/commands/autostep.py b/mic/pykickstart/commands/autostep.py new file mode 100644 index 0000000..e6ae71c --- /dev/null +++ b/mic/pykickstart/commands/autostep.py @@ -0,0 +1,55 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.options import * + +class FC3_AutoStep(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.autostep = kwargs.get("autostep", False) + self.autoscreenshot = kwargs.get("autoscreenshot", False) + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.autostep: + if self.autoscreenshot: + retval += "autostep --autoscreenshot\n" + else: + retval += "autostep\n" + + return retval + + def _getParser(self): + op = KSOptionParser() + op.add_option("--autoscreenshot", dest="autoscreenshot", + action="store_true", default=False) + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + self._setToSelf(self.op, opts) + self.autostep = True + return self diff --git a/mic/pykickstart/commands/bootloader.py b/mic/pykickstart/commands/bootloader.py new file mode 100644 index 0000000..b227fac --- /dev/null +++ b/mic/pykickstart/commands/bootloader.py @@ -0,0 +1,265 @@ +# +# Chris Lumens +# +# Copyright 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.options import * + +class FC3_Bootloader(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=10, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.driveorder = kwargs.get("driveorder", []) + self.appendLine = kwargs.get("appendLine", "") + self.forceLBA = kwargs.get("forceLBA", False) + self.linear = kwargs.get("linear", True) + self.location = kwargs.get("location", "") + self.md5pass = kwargs.get("md5pass", "") + self.password = kwargs.get("password", "") + self.upgrade = kwargs.get("upgrade", False) + self.useLilo = kwargs.get("useLilo", False) + + self.deleteRemovedAttrs() + + def _getArgsAsStr(self): + retval = "" + + if self.appendLine != "": + retval += " --append=\"%s\"" % self.appendLine + if self.linear: + retval += " --linear" + if self.location: + retval += " --location=%s" % self.location + if hasattr(self, "forceLBA") and self.forceLBA: + retval += " --lba32" + if self.password != "": + retval += " --password=\"%s\"" % self.password + if self.md5pass != "": + retval += " --md5pass=\"%s\"" % self.md5pass + if self.upgrade: + retval += " --upgrade" + if self.useLilo: + retval += " --useLilo" + if len(self.driveorder) > 0: + retval += " --driveorder=\"%s\"" % ",".join(self.driveorder) + + return retval + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.location != "": + retval += "# System bootloader configuration\nbootloader" + retval += self._getArgsAsStr() + "\n" + + return retval + + def _getParser(self): + def driveorder_cb (option, opt_str, value, parser): + for d in value.split(','): + parser.values.ensure_value(option.dest, []).append(d) + + op = KSOptionParser() + op.add_option("--append", dest="appendLine") + op.add_option("--linear", dest="linear", action="store_true", + default=True) + op.add_option("--nolinear", dest="linear", action="store_false") + op.add_option("--location", dest="location", type="choice", + default="mbr", + choices=["mbr", "partition", "none", "boot"]) + op.add_option("--lba32", dest="forceLBA", action="store_true", + default=False) + op.add_option("--password", dest="password", default="") + op.add_option("--md5pass", dest="md5pass", default="") + op.add_option("--upgrade", dest="upgrade", action="store_true", + default=False) + op.add_option("--useLilo", dest="useLilo", action="store_true", + default=False) + op.add_option("--driveorder", dest="driveorder", action="callback", + callback=driveorder_cb, nargs=1, type="string") + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + self._setToSelf(self.op, opts) + + if self.currentCmd == "lilo": + self.useLilo = True + + return self + +class FC4_Bootloader(FC3_Bootloader): + removedKeywords = FC3_Bootloader.removedKeywords + ["linear", "useLilo"] + removedAttrs = FC3_Bootloader.removedAttrs + ["linear", "useLilo"] + + def __init__(self, writePriority=10, *args, **kwargs): + FC3_Bootloader.__init__(self, writePriority, *args, **kwargs) + + def _getArgsAsStr(self): + retval = "" + if self.appendLine != "": + retval += " --append=\"%s\"" % self.appendLine + if self.location: + retval += " --location=%s" % self.location + if hasattr(self, "forceLBA") and self.forceLBA: + retval += " --lba32" + if self.password != "": + retval += " --password=\"%s\"" % self.password + if self.md5pass != "": + retval += " --md5pass=\"%s\"" % self.md5pass + if self.upgrade: + retval += " --upgrade" + if len(self.driveorder) > 0: + retval += " --driveorder=\"%s\"" % ",".join(self.driveorder) + return retval + + def _getParser(self): + op = FC3_Bootloader._getParser(self) + op.remove_option("--linear") + op.remove_option("--nolinear") + op.remove_option("--useLilo") + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + self._setToSelf(self.op, opts) + return self + +class F8_Bootloader(FC4_Bootloader): + removedKeywords = FC4_Bootloader.removedKeywords + removedAttrs = FC4_Bootloader.removedAttrs + + def __init__(self, writePriority=10, *args, **kwargs): + FC4_Bootloader.__init__(self, writePriority, *args, **kwargs) + + self.timeout = kwargs.get("timeout", None) + self.default = kwargs.get("default", "") + + def _getArgsAsStr(self): + ret = FC4_Bootloader._getArgsAsStr(self) + + if self.timeout is not None: + ret += " --timeout=%d" %(self.timeout,) + if self.default: + ret += " --default=%s" %(self.default,) + + return ret + + def _getParser(self): + op = FC4_Bootloader._getParser(self) + op.add_option("--timeout", dest="timeout", type="int") + op.add_option("--default", dest="default") + return op + +class F12_Bootloader(F8_Bootloader): + removedKeywords = F8_Bootloader.removedKeywords + removedAttrs = F8_Bootloader.removedAttrs + + def _getParser(self): + op = F8_Bootloader._getParser(self) + op.add_option("--lba32", dest="forceLBA", deprecated=1, action="store_true") + return op + +class F14_Bootloader(F12_Bootloader): + removedKeywords = F12_Bootloader.removedKeywords + ["forceLBA"] + removedAttrs = F12_Bootloader.removedKeywords + ["forceLBA"] + + def _getParser(self): + op = F12_Bootloader._getParser(self) + op.remove_option("--lba32") + return op + +class F15_Bootloader(F14_Bootloader): + removedKeywords = F14_Bootloader.removedKeywords + removedAttrs = F14_Bootloader.removedAttrs + + def __init__(self, writePriority=10, *args, **kwargs): + F14_Bootloader.__init__(self, writePriority, *args, **kwargs) + + self.isCrypted = kwargs.get("isCrypted", False) + + def _getArgsAsStr(self): + ret = F14_Bootloader._getArgsAsStr(self) + + if self.isCrypted: + ret += " --iscrypted" + + return ret + + def _getParser(self): + def password_cb(option, opt_str, value, parser): + parser.values.isCrypted = True + parser.values.password = value + + op = F14_Bootloader._getParser(self) + op.add_option("--iscrypted", dest="isCrypted", action="store_true", default=False) + op.add_option("--md5pass", action="callback", callback=password_cb, nargs=1, type="string") + return op + +class RHEL5_Bootloader(FC4_Bootloader): + removedKeywords = FC4_Bootloader.removedKeywords + removedAttrs = FC4_Bootloader.removedAttrs + + def __init__(self, writePriority=10, *args, **kwargs): + FC4_Bootloader.__init__(self, writePriority, *args, **kwargs) + + self.hvArgs = kwargs.get("hvArgs", "") + + def _getArgsAsStr(self): + ret = FC4_Bootloader._getArgsAsStr(self) + + if self.hvArgs: + ret += " --hvargs=\"%s\"" %(self.hvArgs,) + + return ret + + def _getParser(self): + op = FC4_Bootloader._getParser(self) + op.add_option("--hvargs", dest="hvArgs", type="string") + return op + +class RHEL6_Bootloader(F12_Bootloader): + removedKeywords = F12_Bootloader.removedKeywords + removedAttrs = F12_Bootloader.removedAttrs + + def __init__(self, writePriority=10, *args, **kwargs): + F12_Bootloader.__init__(self, writePriority, *args, **kwargs) + + self.isCrypted = kwargs.get("isCrypted", False) + + def _getArgsAsStr(self): + ret = F12_Bootloader._getArgsAsStr(self) + + if self.isCrypted: + ret += " --iscrypted" + + return ret + + def _getParser(self): + def password_cb(option, opt_str, value, parser): + parser.values.isCrypted = True + parser.values.password = value + + op = F12_Bootloader._getParser(self) + op.add_option("--iscrypted", dest="isCrypted", action="store_true", default=False) + op.add_option("--md5pass", action="callback", callback=password_cb, nargs=1, type="string") + return op diff --git a/mic/pykickstart/commands/clearpart.py b/mic/pykickstart/commands/clearpart.py new file mode 100644 index 0000000..a8089fc --- /dev/null +++ b/mic/pykickstart/commands/clearpart.py @@ -0,0 +1,86 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.constants import * +from pykickstart.errors import * +from pykickstart.options import * + +class FC3_ClearPart(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=120, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.drives = kwargs.get("drives", []) + self.initAll = kwargs.get("initAll", False) + self.type = kwargs.get("type", None) + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.type is None: + return retval + + if self.type == CLEARPART_TYPE_NONE: + clearstr = "--none" + elif self.type == CLEARPART_TYPE_LINUX: + clearstr = "--linux" + elif self.type == CLEARPART_TYPE_ALL: + clearstr = "--all" + else: + clearstr = "" + + if self.initAll: + initstr = "--initlabel" + else: + initstr = "" + + if len(self.drives) > 0: + drivestr = "--drives=" + ",".join(self.drives) + else: + drivestr = "" + + retval += "# Partition clearing information\nclearpart %s %s %s\n" % (clearstr, initstr, drivestr) + return retval + + def _getParser(self): + def drive_cb (option, opt_str, value, parser): + for d in value.split(','): + parser.values.ensure_value(option.dest, []).append(d) + + op = KSOptionParser() + op.add_option("--all", dest="type", action="store_const", + const=CLEARPART_TYPE_ALL) + 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) + op.add_option("--linux", dest="type", action="store_const", + const=CLEARPART_TYPE_LINUX) + op.add_option("--none", dest="type", action="store_const", + const=CLEARPART_TYPE_NONE) + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + self._setToSelf(self.op, opts) + return self diff --git a/mic/pykickstart/commands/device.py b/mic/pykickstart/commands/device.py new file mode 100644 index 0000000..321410e --- /dev/null +++ b/mic/pykickstart/commands/device.py @@ -0,0 +1,125 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.options import * + +import gettext +import warnings +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class F8_DeviceData(BaseData): + removedKeywords = BaseData.removedKeywords + removedAttrs = BaseData.removedAttrs + + def __init__(self, *args, **kwargs): + BaseData.__init__(self, *args, **kwargs) + self.moduleName = kwargs.get("moduleName", "") + self.moduleOpts = kwargs.get("moduleOpts", "") + + def __eq__(self, y): + return self.moduleName == y.moduleName + + def __str__(self): + retval = BaseData.__str__(self) + + if self.moduleName != "": + retval += "device %s" % self.moduleName + + if self.moduleOpts != "": + retval += " --opts=\"%s\"" % self.moduleOpts + + return retval + "\n" + +class FC3_Device(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.type = kwargs.get("type", "") + self.moduleName = kwargs.get("moduleName", "") + self.moduleOpts = kwargs.get("moduleOpts", "") + + def __eq__(self, y): + return self.moduleName == y.moduleName + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.moduleName != "": + retval += "device %s %s" % (self.type, self.moduleName) + + if self.moduleOpts != "": + retval += " --opts=\"%s\"" % self.moduleOpts + + return retval + "\n" + + def _getParser(self): + op = KSOptionParser() + op.add_option("--opts", dest="moduleOpts", default="") + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + + if len(extra) != 2: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("device command requires two arguments: module type and name")) + + self.moduleOpts = opts.moduleOpts + self.type = extra[0] + self.moduleName = extra[1] + return self + +class F8_Device(FC3_Device): + removedKeywords = FC3_Device.removedKeywords + removedAttrs = FC3_Device.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + FC3_Device.__init__(self, writePriority, *args, **kwargs) + self.deviceList = kwargs.get("deviceList", []) + + def __str__(self): + retval = "" + for device in self.deviceList: + retval += device.__str__() + + return retval + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + + if len(extra) != 1: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("%s command requires a single argument: %s") % ("device", "module name")) + + dd = F8_DeviceData() + self._setToObj(self.op, opts, dd) + dd.lineno = self.lineno + dd.moduleName = extra[0] + + # Check for duplicates in the data list. + if dd in self.dataList(): + warnings.warn(_("A module with the name %s has already been defined.") % dd.moduleName) + + return dd + + def dataList(self): + return self.deviceList diff --git a/mic/pykickstart/commands/deviceprobe.py b/mic/pykickstart/commands/deviceprobe.py new file mode 100644 index 0000000..9f462fd --- /dev/null +++ b/mic/pykickstart/commands/deviceprobe.py @@ -0,0 +1,40 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * + +class FC3_DeviceProbe(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.deviceprobe = kwargs.get("deviceprobe", "") + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.deviceprobe != "": + retval += "deviceprobe %s\n" % self.deviceprobe + + return retval + + def parse(self, args): + self.deviceprobe = " ".join(args) + return self diff --git a/mic/pykickstart/commands/displaymode.py b/mic/pykickstart/commands/displaymode.py new file mode 100644 index 0000000..6a12d58 --- /dev/null +++ b/mic/pykickstart/commands/displaymode.py @@ -0,0 +1,68 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.constants import * +from pykickstart.options import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC3_DisplayMode(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + self.displayMode = kwargs.get("displayMode", None) + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.displayMode is None: + return retval + + if self.displayMode == DISPLAY_MODE_CMDLINE: + retval += "cmdline\n" + elif self.displayMode == DISPLAY_MODE_GRAPHICAL: + retval += "# Use graphical install\ngraphical\n" + elif self.displayMode == DISPLAY_MODE_TEXT: + retval += "# Use text mode install\ntext\n" + + return retval + + def _getParser(self): + op = KSOptionParser() + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + + if len(extra) > 0: + raise KickstartParseError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s does not take any arguments") % self.currentCmd) + + if self.currentCmd == "cmdline": + self.displayMode = DISPLAY_MODE_CMDLINE + elif self.currentCmd == "graphical": + self.displayMode = DISPLAY_MODE_GRAPHICAL + elif self.currentCmd == "text": + self.displayMode = DISPLAY_MODE_TEXT + + return self diff --git a/mic/pykickstart/commands/dmraid.py b/mic/pykickstart/commands/dmraid.py new file mode 100644 index 0000000..993575a --- /dev/null +++ b/mic/pykickstart/commands/dmraid.py @@ -0,0 +1,91 @@ +# +# Chris Lumens +# Peter Jones +# +# Copyright 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +import warnings +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC6_DmRaidData(BaseData): + removedKeywords = BaseData.removedKeywords + removedAttrs = BaseData.removedAttrs + + def __init__(self, *args, **kwargs): + BaseData.__init__(self, *args, **kwargs) + + self.name = kwargs.get("name", "") + self.devices = kwargs.get("devices", []) + self.dmset = kwargs.get("dmset", None) + + def __eq__(self, y): + return self.name == y.name and self.devices == y.devices + + def __str__(self): + retval = BaseData.__str__(self) + retval += "dmraid --name=%s" % self.name + + for dev in self.devices: + retval += " --dev=\"%s\"" % dev + + return retval + "\n" + +class FC6_DmRaid(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=60, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.dmraids = kwargs.get("dmraids", []) + + def __str__(self): + retval = "" + for dm in self.dmraids: + retval += dm.__str__() + + return retval + + def _getParser(self): + op = KSOptionParser() + op.add_option("--name", dest="name", action="store", type="string", + required=1) + op.add_option("--dev", dest="devices", action="append", type="string", + required=1) + return op + + def parse(self, args): + dm = FC6_DmRaidData() + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + dm.name = dm.name.split('/')[-1] + self._setToObj(self.op, opts, dm) + dm.lineno = self.lineno + + # Check for duplicates in the data list. + if dm in self.dataList(): + warnings.warn(_("A DM RAID device with the name %s and devices %s has already been defined.") % (dm.name, dm.devices)) + + return dm + + def dataList(self): + return self.dmraids diff --git a/mic/pykickstart/commands/driverdisk.py b/mic/pykickstart/commands/driverdisk.py new file mode 100644 index 0000000..82a58c0 --- /dev/null +++ b/mic/pykickstart/commands/driverdisk.py @@ -0,0 +1,184 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007, 2008 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.options import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC3_DriverDiskData(BaseData): + removedKeywords = BaseData.removedKeywords + removedAttrs = BaseData.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + BaseData.__init__(self, *args, **kwargs) + + self.partition = kwargs.get("partition", "") + self.source = kwargs.get("source", "") + self.type = kwargs.get("type", "") + + def _getArgsAsStr(self): + retval = "" + + if self.partition: + retval += "%s" % self.partition + + if hasattr(self, "type") and self.type: + retval += " --type=%s" % self.type + elif self.source: + retval += "--source=%s" % self.source + return retval + + def __str__(self): + retval = BaseData.__str__(self) + retval += "driverdisk %s\n" % self._getArgsAsStr() + return retval + +class FC4_DriverDiskData(FC3_DriverDiskData): + removedKeywords = FC3_DriverDiskData.removedKeywords + removedAttrs = FC3_DriverDiskData.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + FC3_DriverDiskData.__init__(self, *args, **kwargs) + self.deleteRemovedAttrs() + + self.biospart = kwargs.get("biospart", "") + + def _getArgsAsStr(self): + retval = "" + + if self.partition: + retval += "%s" % self.partition + + if hasattr(self, "type") and self.type: + retval += " --type=%s" % self.type + elif self.source: + retval += "--source=%s" % self.source + elif self.biospart: + retval += "--biospart=%s" % self.biospart + + return retval + +class F12_DriverDiskData(FC4_DriverDiskData): + removedKeywords = FC4_DriverDiskData.removedKeywords + ["type"] + removedAttrs = FC4_DriverDiskData.removedAttrs + ["type"] + + def __init__(self, *args, **kwargs): + FC4_DriverDiskData.__init__(self, *args, **kwargs) + self.deleteRemovedAttrs() + +F14_DriverDiskData = F12_DriverDiskData + +class FC3_DriverDisk(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.driverdiskList = kwargs.get("driverdiskList", []) + + def __str__(self): + retval = "" + for dd in self.driverdiskList: + retval += dd.__str__() + + return retval + + def _getParser(self): + op = KSOptionParser() + op.add_option("--source") + op.add_option("--type") + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + + if len(extra) > 1: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Only one partition may be specified for driverdisk command.")) + + if len(extra) == 1 and opts.source: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Only one of --source and partition may be specified for driverdisk command.")) + + if not extra and not opts.source: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("One of --source or partition must be specified for driverdisk command.")) + + ddd = self.handler.DriverDiskData() + self._setToObj(self.op, opts, ddd) + ddd.lineno = self.lineno + if len(extra) == 1: + ddd.partition = extra[0] + + return ddd + + def dataList(self): + return self.driverdiskList + +class FC4_DriverDisk(FC3_DriverDisk): + removedKeywords = FC3_DriverDisk.removedKeywords + removedAttrs = FC3_DriverDisk.removedKeywords + + def _getParser(self): + op = FC3_DriverDisk._getParser(self) + op.add_option("--biospart") + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + + if len(extra) > 1: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Only one partition may be specified for driverdisk command.")) + + if len(extra) == 1 and opts.source: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Only one of --source and partition may be specified for driverdisk command.")) + elif len(extra) == 1 and opts.biospart: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Only one of --biospart and partition may be specified for driverdisk command.")) + elif opts.source and opts.biospart: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Only one of --biospart and --source may be specified for driverdisk command.")) + + if not extra and not opts.source and not opts.biospart: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("One of --source, --biospart, or partition must be specified for driverdisk command.")) + + ddd = self.handler.DriverDiskData() + self._setToObj(self.op, opts, ddd) + ddd.lineno = self.lineno + if len(extra) == 1: + ddd.partition = extra[0] + + return ddd + +class F12_DriverDisk(FC4_DriverDisk): + removedKeywords = FC4_DriverDisk.removedKeywords + removedAttrs = FC4_DriverDisk.removedKeywords + + def _getParser(self): + op = FC4_DriverDisk._getParser(self) + op.add_option("--type", deprecated=1) + return op + +class F14_DriverDisk(F12_DriverDisk): + removedKeywords = F12_DriverDisk.removedKeywords + removedAttrs = F12_DriverDisk.removedKeywords + + def _getParser(self): + op = F12_DriverDisk._getParser(self) + op.remove_option("--type") + return op diff --git a/mic/pykickstart/commands/fcoe.py b/mic/pykickstart/commands/fcoe.py new file mode 100644 index 0000000..3320849 --- /dev/null +++ b/mic/pykickstart/commands/fcoe.py @@ -0,0 +1,114 @@ +# +# Hans de Goede +# +# Copyright 2009 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.options import * + +import gettext +import warnings +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class F12_FcoeData(BaseData): + removedKeywords = BaseData.removedKeywords + removedAttrs = BaseData.removedAttrs + + def __init__(self, *args, **kwargs): + BaseData.__init__(self, *args, **kwargs) + self.nic = kwargs.get("nic", None) + + def __eq__(self, y): + return self.nic == y.nic + + def _getArgsAsStr(self): + retval = "" + + if self.nic: + retval += " --nic=%s" % self.nic + + return retval + + def __str__(self): + retval = BaseData.__str__(self) + retval += "fcoe%s\n" % self._getArgsAsStr() + return retval + +class F13_FcoeData(F12_FcoeData): + removedKeywords = F12_FcoeData.removedKeywords + removedAttrs = F12_FcoeData.removedAttrs + + def __init__(self, *args, **kwargs): + F12_FcoeData.__init__(self, *args, **kwargs) + self.dcb = kwargs.get("dcb", False) + + def _getArgsAsStr(self): + retval = F12_FcoeData._getArgsAsStr(self) + + if self.dcb: + retval += " --dcb" + + return retval + +class F12_Fcoe(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=71, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + self.fcoe = kwargs.get("fcoe", []) + + def __str__(self): + retval = "" + for fcoe in self.fcoe: + retval += fcoe.__str__() + + return retval + + def _getParser(self): + op = KSOptionParser() + op.add_option("--nic", dest="nic", required=1) + return op + + def parse(self, args): + zd = self.handler.FcoeData() + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + if len(extra) > 0: + mapping = {"command": "fcoe", "options": extra} + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Unexpected arguments to %(command)s command: %(options)s") % mapping) + + self._setToObj(self.op, opts, zd) + zd.lineno = self.lineno + + # Check for duplicates in the data list. + if zd in self.dataList(): + warnings.warn(_("A FCOE device with the name %s has already been defined.") % zd.nic) + + return zd + + def dataList(self): + return self.fcoe + +class F13_Fcoe(F12_Fcoe): + removedKeywords = F12_Fcoe.removedKeywords + removedAttrs = F12_Fcoe.removedAttrs + + def _getParser(self): + op = F12_Fcoe._getParser(self) + op.add_option("--dcb", dest="dcb", action="store_true", default=False) + return op diff --git a/mic/pykickstart/commands/firewall.py b/mic/pykickstart/commands/firewall.py new file mode 100644 index 0000000..24a01bd --- /dev/null +++ b/mic/pykickstart/commands/firewall.py @@ -0,0 +1,193 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC3_Firewall(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.enabled = kwargs.get("enabled", None) + self.ports = kwargs.get("ports", []) + self.trusts = kwargs.get("trusts", []) + + def __str__(self): + extra = [] + filteredPorts = [] + + retval = KickstartCommand.__str__(self) + + if self.enabled is None: + return retval + + if self.enabled: + # It's possible we have words in the ports list instead of + # port:proto (s-c-kickstart may do this). So, filter those + # out into their own list leaving what we expect. + for port in self.ports: + if port == "ssh": + extra.append(" --ssh") + elif port == "telnet": + extra.append(" --telnet") + elif port == "smtp": + extra.append(" --smtp") + elif port == "http": + extra.append(" --http") + elif port == "ftp": + extra.append(" --ftp") + else: + filteredPorts.append(port) + + # All the port:proto strings go into a comma-separated list. + portstr = ",".join(filteredPorts) + if len(portstr) > 0: + portstr = " --port=" + portstr + else: + portstr = "" + + extrastr = "".join(extra) + truststr = ",".join(self.trusts) + + if len(truststr) > 0: + truststr = " --trust=" + truststr + + # The output port list consists only of port:proto for + # everything that we don't recognize, and special options for + # those that we do. + retval += "# Firewall configuration\nfirewall --enabled%s%s%s\n" % (extrastr, portstr, truststr) + else: + retval += "# Firewall configuration\nfirewall --disabled\n" + + return retval + + def _getParser(self): + def firewall_port_cb (option, opt_str, value, parser): + for p in value.split(","): + p = p.strip() + if p.find(":") == -1: + p = "%s:tcp" % p + parser.values.ensure_value(option.dest, []).append(p) + + op = KSOptionParser(mapping={"ssh":["22:tcp"], "telnet":["23:tcp"], + "smtp":["25:tcp"], "http":["80:tcp", "443:tcp"], + "ftp":["21:tcp"]}) + + op.add_option("--disable", "--disabled", dest="enabled", + action="store_false") + op.add_option("--enable", "--enabled", dest="enabled", + action="store_true", default=True) + op.add_option("--ftp", "--http", "--smtp", "--ssh", "--telnet", + dest="ports", action="map_extend") + op.add_option("--high", deprecated=1) + op.add_option("--medium", deprecated=1) + op.add_option("--port", dest="ports", action="callback", + callback=firewall_port_cb, nargs=1, type="string") + op.add_option("--trust", dest="trusts", action="append") + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + + if len(extra) != 0: + mapping = {"command": "firewall", "options": extra} + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Unexpected arguments to %(command)s command: %(options)s") % mapping) + + self._setToSelf(self.op, opts) + return self + +class F9_Firewall(FC3_Firewall): + removedKeywords = FC3_Firewall.removedKeywords + removedAttrs = FC3_Firewall.removedAttrs + + def _getParser(self): + op = FC3_Firewall._getParser(self) + op.remove_option("--high") + op.remove_option("--medium") + return op + +class F10_Firewall(F9_Firewall): + removedKeywords = F9_Firewall.removedKeywords + removedAttrs = F9_Firewall.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + F9_Firewall.__init__(self, writePriority, *args, **kwargs) + self.services = kwargs.get("services", []) + + def __str__(self): + if self.enabled is None: + return "" + + retval = F9_Firewall.__str__(self) + if self.enabled: + retval = retval.strip() + + svcstr = ",".join(self.services) + if len(svcstr) > 0: + svcstr = " --service=" + svcstr + else: + svcstr = "" + + return retval + "%s\n" % svcstr + else: + return retval + + def _getParser(self): + def service_cb (option, opt_str, value, parser): + # python2.4 does not support action="append_const" that we were + # using for these options. Instead, we have to fake it by + # appending whatever the option string is to the service list. + if not value: + parser.values.ensure_value(option.dest, []).append(opt_str[2:]) + return + + for p in value.split(","): + p = p.strip() + parser.values.ensure_value(option.dest, []).append(p) + + op = F9_Firewall._getParser(self) + op.add_option("--service", dest="services", action="callback", + callback=service_cb, nargs=1, type="string") + op.add_option("--ftp", dest="services", action="callback", + callback=service_cb) + op.add_option("--http", dest="services", action="callback", + callback=service_cb) + op.add_option("--smtp", dest="services", action="callback", + callback=service_cb) + op.add_option("--ssh", dest="services", action="callback", + callback=service_cb) + op.add_option("--telnet", deprecated=1) + return op + +class F14_Firewall(F10_Firewall): + removedKeywords = F10_Firewall.removedKeywords + ["telnet"] + removedAttrs = F10_Firewall.removedAttrs + ["telnet"] + + def _getParser(self): + op = F10_Firewall._getParser(self) + op.remove_option("--telnet") + return op diff --git a/mic/pykickstart/commands/firstboot.py b/mic/pykickstart/commands/firstboot.py new file mode 100644 index 0000000..05c0ac1 --- /dev/null +++ b/mic/pykickstart/commands/firstboot.py @@ -0,0 +1,62 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.constants import * +from pykickstart.options import * + +class FC3_Firstboot(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.firstboot = kwargs.get("firstboot", None) + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.firstboot is None: + return retval + + if self.firstboot == FIRSTBOOT_SKIP: + retval += "firstboot --disable\n" + elif self.firstboot == FIRSTBOOT_DEFAULT: + retval += "# Run the Setup Agent on first boot\nfirstboot --enable\n" + elif self.firstboot == FIRSTBOOT_RECONFIG: + retval += "# Run the Setup Agent on first boot\nfirstboot --reconfig\n" + + return retval + + def _getParser(self): + op = KSOptionParser() + op.add_option("--disable", "--disabled", dest="firstboot", + action="store_const", const=FIRSTBOOT_SKIP) + op.add_option("--enable", "--enabled", dest="firstboot", + action="store_const", const=FIRSTBOOT_DEFAULT) + op.add_option("--reconfig", dest="firstboot", action="store_const", + const=FIRSTBOOT_RECONFIG) + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + self.firstboot = opts.firstboot + return self diff --git a/mic/pykickstart/commands/group.py b/mic/pykickstart/commands/group.py new file mode 100644 index 0000000..80ba5bd --- /dev/null +++ b/mic/pykickstart/commands/group.py @@ -0,0 +1,88 @@ +# +# Chris Lumens +# +# Copyright 2009 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.constants import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +import warnings +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class F12_GroupData(BaseData): + removedKeywords = BaseData.removedKeywords + removedAttrs = BaseData.removedAttrs + + def __init__(self, *args, **kwargs): + BaseData.__init__(self, *args, **kwargs) + self.name = kwargs.get("name", "") + self.gid = kwargs.get("gid", None) + + def __eq__(self, y): + return self.name == y.name + + def __str__(self): + retval = BaseData.__str__(self) + retval += "group" + + if self.name: + retval += " --name=%s" % self.name + if self.gid: + retval += " --gid=%s" % self.gid + + return retval + "\n" + +class F12_Group(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.groupList = kwargs.get("groupList", []) + + def __str__(self): + retval = "" + for user in self.groupList: + retval += user.__str__() + + return retval + + def _getParser(self): + op = KSOptionParser() + op.add_option("--name", required=1) + op.add_option("--gid", type="int") + return op + + def parse(self, args): + gd = self.handler.GroupData() + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + self._setToObj(self.op, opts, gd) + gd.lineno = self.lineno + + # Check for duplicates in the data list. + if gd in self.dataList(): + warnings.warn(_("A group with the name %s has already been defined.") % gd.name) + + return gd + + def dataList(self): + return self.groupList diff --git a/mic/pykickstart/commands/ignoredisk.py b/mic/pykickstart/commands/ignoredisk.py new file mode 100644 index 0000000..676d080 --- /dev/null +++ b/mic/pykickstart/commands/ignoredisk.py @@ -0,0 +1,139 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007, 2009 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.options import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC3_IgnoreDisk(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.ignoredisk = kwargs.get("ignoredisk", []) + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if len(self.ignoredisk) > 0: + retval += "ignoredisk --drives=%s\n" % ",".join(self.ignoredisk) + + return retval + + def _getParser(self): + def drive_cb (option, opt_str, value, parser): + for d in value.split(','): + parser.values.ensure_value(option.dest, []).append(d) + + op = KSOptionParser() + op.add_option("--drives", dest="ignoredisk", action="callback", + callback=drive_cb, nargs=1, type="string", required=1) + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + self._setToSelf(self.op, opts) + return self + +class F8_IgnoreDisk(FC3_IgnoreDisk): + removedKeywords = FC3_IgnoreDisk.removedKeywords + removedAttrs = FC3_IgnoreDisk.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + FC3_IgnoreDisk.__init__(self, writePriority, *args, **kwargs) + + self.onlyuse = kwargs.get("onlyuse", []) + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if len(self.ignoredisk) > 0: + retval += "ignoredisk --drives=%s\n" % ",".join(self.ignoredisk) + elif len(self.onlyuse) > 0: + retval += "ignoredisk --only-use=%s\n" % ",".join(self.onlyuse) + + return retval + + def parse(self, args, errorCheck=True): + retval = FC3_IgnoreDisk.parse(self, args) + + if errorCheck: + if (len(self.ignoredisk) == 0 and len(self.onlyuse) == 0) or (len(self.ignoredisk) > 0 and (len(self.onlyuse) > 0)): + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("One of --drives or --only-use must be specified for ignoredisk command.")) + + return retval + + def _getParser(self): + def drive_cb (option, opt_str, value, parser): + for d in value.split(','): + parser.values.ensure_value(option.dest, []).append(d) + + op = FC3_IgnoreDisk._getParser(self) + op.add_option("--drives", dest="ignoredisk", action="callback", + callback=drive_cb, nargs=1, type="string") + op.add_option("--only-use", dest="onlyuse", action="callback", + callback=drive_cb, nargs=1, type="string") + return op + +class RHEL6_IgnoreDisk(F8_IgnoreDisk): + removedKeywords = F8_IgnoreDisk.removedKeywords + removedAttrs = F8_IgnoreDisk.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + F8_IgnoreDisk.__init__(self, writePriority, *args, **kwargs) + + self.interactive = kwargs.get("interactive", False) + if self.interactive: + self.ignoredisk = [] + + def __str__(self): + retval = F8_IgnoreDisk.__str__(self) + + if self.interactive: + retval = "ignoredisk --interactive\n" + + return retval + + def parse(self, args): + retval = F8_IgnoreDisk.parse(self, args, errorCheck=False) + + howmany = 0 + if len(self.ignoredisk) > 0: + howmany += 1 + if len(self.onlyuse) > 0: + howmany += 1 + if self.interactive: + howmany += 1 + if howmany != 1: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("One of --drives , --only-use , or --interactive must be specified for ignoredisk command.")) + + return retval + + def _getParser(self): + op = F8_IgnoreDisk._getParser(self) + op.add_option("--interactive", dest="interactive", action="store_true", + default=False) + return op + +F14_IgnoreDisk = RHEL6_IgnoreDisk diff --git a/mic/pykickstart/commands/interactive.py b/mic/pykickstart/commands/interactive.py new file mode 100644 index 0000000..fa3dc02 --- /dev/null +++ b/mic/pykickstart/commands/interactive.py @@ -0,0 +1,58 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC3_Interactive(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + self.interactive = kwargs.get("interactive", False) + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.interactive: + retval += "# Use interactive kickstart installation method\ninteractive\n" + + return retval + + def _getParser(self): + op = KSOptionParser() + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + if len(extra) > 0: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s does not take any arguments") % "interactive") + + self.interactive = True + return self + +class F14_Interactive(DeprecatedCommand): + def __init__(self): + DeprecatedCommand.__init__(self) diff --git a/mic/pykickstart/commands/iscsi.py b/mic/pykickstart/commands/iscsi.py new file mode 100644 index 0000000..da5a544 --- /dev/null +++ b/mic/pykickstart/commands/iscsi.py @@ -0,0 +1,133 @@ +# +# Chris Lumens +# Peter Jones +# +# Copyright 2005, 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC6_IscsiData(BaseData): + removedKeywords = BaseData.removedKeywords + removedAttrs = BaseData.removedAttrs + + def __init__(self, *args, **kwargs): + BaseData.__init__(self, *args, **kwargs) + self.ipaddr = kwargs.get("ipaddr", "") + self.port = kwargs.get("port", "3260") + self.target = kwargs.get("target", "") + self.user = kwargs.get("user", None) + self.password = kwargs.get("password", None) + + def _getArgsAsStr(self): + retval = "" + + if self.target != "": + retval += " --target=%s" % self.target + if self.ipaddr != "": + retval += " --ipaddr=%s" % self.ipaddr + if self.port != "3260": + retval += " --port=%s" % self.port + if self.user is not None: + retval += " --user=%s" % self.user + if self.password is not None: + retval += " --password=%s" % self.password + + return retval + + def __str__(self): + retval = BaseData.__str__(self) + retval += "iscsi%s\n" % self._getArgsAsStr() + return retval + +class F10_IscsiData(FC6_IscsiData): + removedKeywords = FC6_IscsiData.removedKeywords + removedAttrs = FC6_IscsiData.removedAttrs + + def __init__(self, *args, **kwargs): + FC6_IscsiData.__init__(self, *args, **kwargs) + self.user_in = kwargs.get("user_in", None) + self.password_in = kwargs.get("password_in", None) + + def _getArgsAsStr(self): + retval = FC6_IscsiData._getArgsAsStr(self) + + if self.user_in is not None: + retval += " --reverse-user=%s" % self.user_in + if self.password_in is not None: + retval += " --reverse-password=%s" % self.password_in + + return retval + +class FC6_Iscsi(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=71, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.iscsi = kwargs.get("iscsi", []) + + def __str__(self): + retval = "" + for iscsi in self.iscsi: + retval += iscsi.__str__() + + return retval + + def _getParser(self): + op = KSOptionParser() + op.add_option("--target", dest="target", action="store", type="string") + op.add_option("--ipaddr", dest="ipaddr", action="store", type="string", + required=1) + op.add_option("--port", dest="port", action="store", type="string") + op.add_option("--user", dest="user", action="store", type="string") + op.add_option("--password", dest="password", action="store", + type="string") + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + + if len(extra) != 0: + mapping = {"command": "iscsi", "options": extra} + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Unexpected arguments to %(command)s command: %(options)s") % mapping) + + dd = self.handler.IscsiData() + self._setToObj(self.op, opts, dd) + dd.lineno = self.lineno + return dd + + def dataList(self): + return self.iscsi + +class F10_Iscsi(FC6_Iscsi): + removedKeywords = FC6_Iscsi.removedKeywords + removedAttrs = FC6_Iscsi.removedAttrs + + def _getParser(self): + op = FC6_Iscsi._getParser(self) + op.add_option("--reverse-user", dest="user_in", action="store", + type="string") + op.add_option("--reverse-password", dest="password_in", action="store", + type="string") + return op diff --git a/mic/pykickstart/commands/iscsiname.py b/mic/pykickstart/commands/iscsiname.py new file mode 100644 index 0000000..a87d063 --- /dev/null +++ b/mic/pykickstart/commands/iscsiname.py @@ -0,0 +1,54 @@ +# +# Chris Lumens +# Peter Jones +# +# Copyright 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC6_IscsiName(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=70, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + self.iscsiname = kwargs.get("iscsiname", "") + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.iscsiname != "": + retval += "iscsiname %s\n" % self.iscsiname + + return retval + + def _getParser(self): + op = KSOptionParser() + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + if len(extra) != 1: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s requires one argument") % "iscsiname") + self.iscsiname = extra[0] + return self diff --git a/mic/pykickstart/commands/key.py b/mic/pykickstart/commands/key.py new file mode 100644 index 0000000..c20c423 --- /dev/null +++ b/mic/pykickstart/commands/key.py @@ -0,0 +1,64 @@ +# +# Chris Lumens +# +# Copyright 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.constants import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class RHEL5_Key(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + self.key = kwargs.get("key", "") + self.skip = kwargs.get("skip", False) + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.key == KS_INSTKEY_SKIP: + retval += "key --skip\n" + elif self.key != "": + retval += "key %s\n" % self.key + + return retval + + def _getParser(self): + op = KSOptionParser() + op.add_option("--skip", action="store_true", default=False) + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + self._setToSelf(self.op, opts) + + if self.skip: + self.key = KS_INSTKEY_SKIP + elif len(extra) != 1: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s requires one argument") % "key") + else: + self.key = extra[0] + + return self diff --git a/mic/pykickstart/commands/keyboard.py b/mic/pykickstart/commands/keyboard.py new file mode 100644 index 0000000..babc2ac --- /dev/null +++ b/mic/pykickstart/commands/keyboard.py @@ -0,0 +1,55 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC3_Keyboard(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + self.keyboard = kwargs.get("keyboard", "") + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.keyboard != "": + retval += "# System keyboard\nkeyboard %s\n" % self.keyboard + + return retval + + def _getParser(self): + op = KSOptionParser() + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + + if len(extra) != 1: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s requires one argument") % "keyboard") + + self.keyboard = extra[0] + return self diff --git a/mic/pykickstart/commands/lang.py b/mic/pykickstart/commands/lang.py new file mode 100644 index 0000000..cf5e46c --- /dev/null +++ b/mic/pykickstart/commands/lang.py @@ -0,0 +1,60 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC3_Lang(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + self.lang = kwargs.get("lang", "") + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.lang != "": + retval += "# System language\nlang %s\n" % self.lang + + return retval + + def _getParser(self): + op = KSOptionParser() + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + if len(extra) != 1: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s requires one argument") % "lang") + + self.lang = extra[0] + return self + + def apply(self, instroot="/"): + if self.lang == "": return + f = open(instroot + "/etc/sysconfig/i18n", "w+") + f.write("LANG=\"%s\"\n" %(self.lang,)) + f.close() diff --git a/mic/pykickstart/commands/langsupport.py b/mic/pykickstart/commands/langsupport.py new file mode 100644 index 0000000..73a9e53 --- /dev/null +++ b/mic/pykickstart/commands/langsupport.py @@ -0,0 +1,58 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.options import * + +class FC3_LangSupport(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.deflang = kwargs.get("deflang", "") + self.supported = kwargs.get("supported", []) + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.deflang: + retval += "langsupport --default=%s" % self.deflang + + if self.supported: + retval += " %s" % " ".join(self.supported) + + return retval + "\n" + + def _getParser(self): + op = KSOptionParser() + op.add_option("--default", dest="deflang", default="en_US.UTF-8") + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + self._setToSelf(self.op, opts) + self.supported = extra + return self + +class FC5_LangSupport(DeprecatedCommand): + def __init__(self): + DeprecatedCommand.__init__(self) diff --git a/mic/pykickstart/commands/lilocheck.py b/mic/pykickstart/commands/lilocheck.py new file mode 100644 index 0000000..92b3f93 --- /dev/null +++ b/mic/pykickstart/commands/lilocheck.py @@ -0,0 +1,54 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC3_LiloCheck(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + self.check = kwargs.get("check", False) + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.check: + retval += "lilocheck\n" + + return retval + + def _getParser(self): + op = KSOptionParser() + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + if len(extra) > 0: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s does not take any arguments") % "lilocheck") + + self.check = True + return self diff --git a/mic/pykickstart/commands/logging.py b/mic/pykickstart/commands/logging.py new file mode 100644 index 0000000..6985619 --- /dev/null +++ b/mic/pykickstart/commands/logging.py @@ -0,0 +1,66 @@ +# +# Chris Lumens +# +# Copyright 2007, 2009 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC6_Logging(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.host = kwargs.get("host", "") + self.level = kwargs.get("level", "info") + self.port = kwargs.get("port", "") + + def __str__(self): + retval = KickstartCommand.__str__(self) + retval += "# Installation logging level\nlogging --level=%s" % self.level + + if self.host != "": + retval += " --host=%s" % self.host + + if self.port != "": + retval += " --port=%s" % self.port + + return retval + "\n" + + def _getParser(self): + op = KSOptionParser() + op.add_option("--host") + op.add_option("--level", type="choice", default="info", + choices=["debug", "info", "warning", "error", "critical"]) + op.add_option("--port") + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + + if opts.port and not opts.host: + raise KickstartParseError, formatErrorMsg(self.lineno, msg=_("Can't specify --port without --host.")) + + self._setToSelf(self.op, opts) + return self diff --git a/mic/pykickstart/commands/logvol.py b/mic/pykickstart/commands/logvol.py new file mode 100644 index 0000000..c1b9cc3 --- /dev/null +++ b/mic/pykickstart/commands/logvol.py @@ -0,0 +1,304 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007, 2008 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +import warnings +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC3_LogVolData(BaseData): + removedKeywords = BaseData.removedKeywords + removedAttrs = BaseData.removedAttrs + + def __init__(self, *args, **kwargs): + BaseData.__init__(self, *args, **kwargs) + self.fstype = kwargs.get("fstype", "") + self.grow = kwargs.get("grow", False) + self.maxSizeMB = kwargs.get("maxSizeMB", 0) + self.name = kwargs.get("name", "") + self.format = kwargs.get("format", True) + self.percent = kwargs.get("percent", 0) + self.recommended = kwargs.get("recommended", False) + self.size = kwargs.get("size", None) + self.preexist = kwargs.get("preexist", False) + self.vgname = kwargs.get("vgname", "") + self.mountpoint = kwargs.get("mountpoint", "") + + def __eq__(self, y): + return self.vgname == y.vgname and self.name == y.name + + def _getArgsAsStr(self): + retval = "" + + if self.fstype != "": + retval += " --fstype=\"%s\"" % self.fstype + if self.grow: + retval += " --grow" + if self.maxSizeMB > 0: + retval += " --maxsize=%d" % self.maxSizeMB + if not self.format: + retval += " --noformat" + if self.percent > 0: + retval += " --percent=%d" % self.percent + if self.recommended: + retval += " --recommended" + if self.size > 0: + retval += " --size=%d" % self.size + if self.preexist: + retval += " --useexisting" + + return retval + + def __str__(self): + retval = BaseData.__str__(self) + retval += "logvol %s %s --name=%s --vgname=%s\n" % (self.mountpoint, self._getArgsAsStr(), self.name, self.vgname) + return retval + +class FC4_LogVolData(FC3_LogVolData): + removedKeywords = FC3_LogVolData.removedKeywords + removedAttrs = FC3_LogVolData.removedAttrs + + def __init__(self, *args, **kwargs): + FC3_LogVolData.__init__(self, *args, **kwargs) + self.bytesPerInode = kwargs.get("bytesPerInode", 4096) + self.fsopts = kwargs.get("fsopts", "") + + def _getArgsAsStr(self): + retval = FC3_LogVolData._getArgsAsStr(self) + + if hasattr(self, "bytesPerInode") and self.bytesPerInode != 0: + retval += " --bytes-per-inode=%d" % self.bytesPerInode + if self.fsopts != "": + retval += " --fsoptions=\"%s\"" % self.fsopts + + return retval + +class RHEL5_LogVolData(FC4_LogVolData): + removedKeywords = FC4_LogVolData.removedKeywords + removedAttrs = FC4_LogVolData.removedAttrs + + def __init__(self, *args, **kwargs): + FC4_LogVolData.__init__(self, *args, **kwargs) + self.encrypted = kwargs.get("encrypted", False) + self.passphrase = kwargs.get("passphrase", "") + + def _getArgsAsStr(self): + retval = FC4_LogVolData._getArgsAsStr(self) + + if self.encrypted: + retval += " --encrypted" + + if self.passphrase != "": + retval += " --passphrase=\"%s\"" % self.passphrase + + return retval + +class F9_LogVolData(FC4_LogVolData): + removedKeywords = FC4_LogVolData.removedKeywords + ["bytesPerInode"] + removedAttrs = FC4_LogVolData.removedAttrs + ["bytesPerInode"] + + def __init__(self, *args, **kwargs): + FC4_LogVolData.__init__(self, *args, **kwargs) + self.deleteRemovedAttrs() + + self.fsopts = kwargs.get("fsopts", "") + self.fsprofile = kwargs.get("fsprofile", "") + self.encrypted = kwargs.get("encrypted", False) + self.passphrase = kwargs.get("passphrase", "") + + def _getArgsAsStr(self): + retval = FC4_LogVolData._getArgsAsStr(self) + + if self.fsprofile != "": + retval += " --fsprofile=\"%s\"" % self.fsprofile + if self.encrypted: + retval += " --encrypted" + + if self.passphrase != "": + retval += " --passphrase=\"%s\"" % self.passphrase + + return retval + +class F12_LogVolData(F9_LogVolData): + removedKeywords = F9_LogVolData.removedKeywords + removedAttrs = F9_LogVolData.removedAttrs + + def __init__(self, *args, **kwargs): + F9_LogVolData.__init__(self, *args, **kwargs) + self.deleteRemovedAttrs() + + self.escrowcert = kwargs.get("escrowcert", "") + self.backuppassphrase = kwargs.get("backuppassphrase", False) + + def _getArgsAsStr(self): + retval = F9_LogVolData._getArgsAsStr(self) + + if self.encrypted and self.escrowcert != "": + retval += " --escrowcert=\"%s\"" % self.escrowcert + + if self.backuppassphrase: + retval += " --backuppassphrase" + + return retval + +F14_LogVolData = F12_LogVolData + +class F15_LogVolData(F14_LogVolData): + removedKeywords = F14_LogVolData.removedKeywords + removedAttrs = F14_LogVolData.removedAttrs + + def __init__(self, *args, **kwargs): + F14_LogVolData.__init__(self, *args, **kwargs) + self.label = kwargs.get("label", "") + + def _getArgsAsStr(self): + retval = F14_LogVolData._getArgsAsStr(self) + + if self.label != "": + retval += " --label=\"%s\"" % self.label + + return retval + +class FC3_LogVol(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=133, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.lvList = kwargs.get("lvList", []) + + def __str__(self): + retval = "" + + for part in self.lvList: + retval += part.__str__() + + return retval + + def _getParser(self): + def lv_cb (option, opt_str, value, parser): + parser.values.format = False + parser.values.preexist = True + + op = KSOptionParser() + op.add_option("--fstype", dest="fstype") + op.add_option("--grow", dest="grow", action="store_true", + default=False) + op.add_option("--maxsize", dest="maxSizeMB", action="store", type="int", + nargs=1) + op.add_option("--name", dest="name", required=1) + op.add_option("--noformat", action="callback", callback=lv_cb, + dest="format", default=True, nargs=0) + op.add_option("--percent", dest="percent", action="store", type="int", + nargs=1) + op.add_option("--recommended", dest="recommended", action="store_true", + default=False) + op.add_option("--size", dest="size", action="store", type="int", + nargs=1) + op.add_option("--useexisting", dest="preexist", action="store_true", + default=False) + op.add_option("--vgname", dest="vgname", required=1) + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + + if len(extra) == 0: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Mount point required for %s") % "logvol") + + lvd = self.handler.LogVolData() + self._setToObj(self.op, opts, lvd) + lvd.lineno = self.lineno + lvd.mountpoint=extra[0] + + # Check for duplicates in the data list. + if lvd in self.dataList(): + warnings.warn(_("A logical volume with the name %s has already been defined in volume group %s.") % (lvd.device, lvd.vgname)) + + return lvd + + def dataList(self): + return self.lvList + +class FC4_LogVol(FC3_LogVol): + removedKeywords = FC3_LogVol.removedKeywords + removedAttrs = FC3_LogVol.removedAttrs + + def _getParser(self): + op = FC3_LogVol._getParser(self) + op.add_option("--bytes-per-inode", dest="bytesPerInode", action="store", + type="int", nargs=1) + op.add_option("--fsoptions", dest="fsopts") + return op + +class RHEL5_LogVol(FC4_LogVol): + removedKeywords = FC4_LogVol.removedKeywords + removedAttrs = FC4_LogVol.removedAttrs + + def _getParser(self): + op = FC4_LogVol._getParser(self) + op.add_option("--encrypted", action="store_true", default=False) + op.add_option("--passphrase") + return op + +class F9_LogVol(FC4_LogVol): + removedKeywords = FC4_LogVol.removedKeywords + removedAttrs = FC4_LogVol.removedAttrs + + def _getParser(self): + op = FC4_LogVol._getParser(self) + op.add_option("--bytes-per-inode", deprecated=1) + op.add_option("--fsprofile", dest="fsprofile", action="store", + type="string", nargs=1) + op.add_option("--encrypted", action="store_true", default=False) + op.add_option("--passphrase") + return op + +class F12_LogVol(F9_LogVol): + removedKeywords = F9_LogVol.removedKeywords + removedAttrs = F9_LogVol.removedAttrs + + def _getParser(self): + op = F9_LogVol._getParser(self) + op.add_option("--escrowcert") + op.add_option("--backuppassphrase", action="store_true", default=False) + return op + +class F14_LogVol(F12_LogVol): + removedKeywords = F12_LogVol.removedKeywords + removedAttrs = F12_LogVol.removedAttrs + + def _getParser(self): + op = F12_LogVol._getParser(self) + op.remove_option("--bytes-per-inode") + return op + +class F15_LogVol(F14_LogVol): + removedKeywords = F14_LogVol.removedKeywords + removedAttrs = F14_LogVol.removedAttrs + + def _getParser(self): + op = F14_LogVol._getParser(self) + op.add_option("--label") + return op diff --git a/mic/pykickstart/commands/mediacheck.py b/mic/pykickstart/commands/mediacheck.py new file mode 100644 index 0000000..388823a --- /dev/null +++ b/mic/pykickstart/commands/mediacheck.py @@ -0,0 +1,53 @@ +# +# Chris Lumens +# +# Copyright 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC4_MediaCheck(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + self.mediacheck = kwargs.get("mediacheck", False) + + def __str__(self): + retval = KickstartCommand.__str__(self) + if self.mediacheck: + retval += "mediacheck\n" + + return retval + + def _getParser(self): + op = KSOptionParser() + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + if len(extra) > 0: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s does not take any arguments") % "mediacheck") + + self.mediacheck = True + return self diff --git a/mic/pykickstart/commands/method.py b/mic/pykickstart/commands/method.py new file mode 100644 index 0000000..e21064a --- /dev/null +++ b/mic/pykickstart/commands/method.py @@ -0,0 +1,186 @@ +# +# Chris Lumens +# +# Copyright 2007, 2009 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC3_Method(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.method = kwargs.get("method", "") + + # Set all these attributes so calls to this command's __call__ + # method can set them. However we don't want to provide them as + # arguments to __init__ because method is special. + self.biospart = None + self.partition = None + self.server = None + self.dir = None + self.url = None + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.method == "cdrom": + retval += "# Use CDROM installation media\ncdrom\n" + elif self.method == "harddrive": + msg = "# Use hard drive installation media\nharddrive --dir=%s" % self.dir + + if self.biospart is not None: + retval += msg + " --biospart=%s\n" % self.biospart + else: + retval += msg + " --partition=%s\n" % self.partition + elif self.method == "nfs": + retval += "# Use NFS installation media\nnfs --server=%s --dir=%s\n" % (self.server, self.dir) + elif self.method == "url": + retval += "# Use network installation\nurl --url=\"%s\"\n" % self.url + + return retval + + def _getParser(self): + op = KSOptionParser() + + # method = "cdrom" falls through to the return + if self.currentCmd == "harddrive": + op.add_option("--biospart", dest="biospart") + op.add_option("--partition", dest="partition") + op.add_option("--dir", dest="dir", required=1) + elif self.currentCmd == "nfs": + op.add_option("--server", dest="server", required=1) + op.add_option("--dir", dest="dir", required=1) + elif self.currentCmd == "url": + op.add_option("--url", dest="url", required=1) + + return op + + def parse(self, args): + self.method = self.currentCmd + + op = self._getParser() + (opts, extra) = op.parse_args(args=args, lineno=self.lineno) + self._setToSelf(op, opts) + + if self.currentCmd == "harddrive": + if self.biospart is None and self.partition is None or \ + self.biospart is not None and self.partition is not None: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("One of biospart or partition options must be specified.")) + + return self + +class FC6_Method(FC3_Method): + removedKeywords = FC3_Method.removedKeywords + removedAttrs = FC3_Method.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + FC3_Method.__init__(self, writePriority, *args, **kwargs) + + # Same reason for this attribute as the comment in FC3_Method. + self.opts = None + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.method == "cdrom": + retval += "# Use CDROM installation media\ncdrom\n" + elif self.method == "harddrive": + msg = "# Use hard drive installation media\nharddrive --dir=%s" % self.dir + + if self.biospart is not None: + retval += msg + " --biospart=%s\n" % self.biospart + else: + retval += msg + " --partition=%s\n" % self.partition + elif self.method == "nfs": + retval += "# Use NFS installation media\nnfs --server=%s --dir=%s" % (self.server, self.dir) + if self.opts is not None: + retval += " --opts=\"%s\"" % self.opts + retval += "\n" + elif self.method == "url": + retval += "# Use network installation\nurl --url=\"%s\"\n" % self.url + + return retval + + def _getParser(self): + op = FC3_Method._getParser(self) + + if self.currentCmd == "nfs": + op.add_option("--opts", dest="opts") + + return op + +class F13_Method(FC6_Method): + removedKeywords = FC6_Method.removedKeywords + removedAttrs = FC6_Method.removedAttrs + + def __init__(self, *args, **kwargs): + FC6_Method.__init__(self, *args, **kwargs) + + # And same as all the other __init__ methods. + self.proxy = "" + + def __str__(self): + retval = FC6_Method.__str__(self) + + if self.method == "url" and self.proxy: + retval = retval.strip() + retval += " --proxy=\"%s\"\n" % self.proxy + + return retval + + def _getParser(self): + op = FC6_Method._getParser(self) + + if self.currentCmd == "url": + op.add_option("--proxy") + + return op + +class F14_Method(F13_Method): + removedKeywords = F13_Method.removedKeywords + removedAttrs = F13_Method.removedAttrs + + def __init__(self, *args, **kwargs): + F13_Method.__init__(self, *args, **kwargs) + + self.noverifyssl = False + + def __str__(self): + retval = F13_Method.__str__(self) + + if self.method == "url" and self.noverifyssl: + retval = retval.strip() + retval += " --noverifyssl\n" + + return retval + + def _getParser(self): + op = F13_Method._getParser(self) + + if self.currentCmd == "url": + op.add_option("--noverifyssl", action="store_true", default=False) + + return op + +RHEL6_Method = F14_Method diff --git a/mic/pykickstart/commands/monitor.py b/mic/pykickstart/commands/monitor.py new file mode 100644 index 0000000..8c8c2c4 --- /dev/null +++ b/mic/pykickstart/commands/monitor.py @@ -0,0 +1,106 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007, 2008 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC3_Monitor(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.hsync = kwargs.get("hsync", "") + self.monitor = kwargs.get("monitor", "") + self.vsync = kwargs.get("vsync", "") + + def __str__(self): + retval = KickstartCommand.__str__(self) + retval += "monitor" + + if self.hsync != "": + retval += " --hsync=%s" % self.hsync + if self.monitor != "": + retval += " --monitor=\"%s\"" % self.monitor + if self.vsync != "": + retval += " --vsync=%s" % self.vsync + + if retval != "monitor": + return retval + "\n" + else: + return "" + + def _getParser(self): + op = KSOptionParser() + op.add_option("--hsync") + op.add_option("--monitor") + op.add_option("--vsync") + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + + if extra: + mapping = {"cmd": "monitor", "options": extra} + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Unexpected arguments to %(cmd)s command: %(options)s") % mapping) + + self._setToSelf(self.op, opts) + return self + +class FC6_Monitor(FC3_Monitor): + removedKeywords = FC3_Monitor.removedKeywords + removedAttrs = FC3_Monitor.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + FC3_Monitor.__init__(self, writePriority, *args, **kwargs) + self.probe = kwargs.get("probe", True) + + def __str__(self): + retval = KickstartCommand.__str__(self) + retval += "monitor" + + if self.hsync != "": + retval += " --hsync=%s" % self.hsync + if self.monitor != "": + retval += " --monitor=\"%s\"" % self.monitor + if not self.probe: + retval += " --noprobe" + if self.vsync != "": + retval += " --vsync=%s" % self.vsync + + if retval != "monitor": + return retval + "\n" + else: + return "" + + def _getParser(self): + op = FC3_Monitor._getParser(self) + op.add_option("--noprobe", dest="probe", action="store_false", + default=True) + return op + +class F10_Monitor(DeprecatedCommand): + def __init__(self): + DeprecatedCommand.__init__(self) diff --git a/mic/pykickstart/commands/mouse.py b/mic/pykickstart/commands/mouse.py new file mode 100644 index 0000000..c643bce --- /dev/null +++ b/mic/pykickstart/commands/mouse.py @@ -0,0 +1,70 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class RHEL3_Mouse(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.device = kwargs.get("device", "") + self.emulthree = kwargs.get("emulthree", False) + self.mouse = kwargs.get("mouse", "") + + def __str__(self): + retval = KickstartCommand.__str__(self) + + opts = "" + if self.device: + opts += "--device=%s " % self.device + if self.emulthree: + opts += "--emulthree " + + if self.mouse: + retval += "# System mouse\nmouse %s%s\n" % (opts, self.mouse) + return retval + + def _getParser(self): + op = KSOptionParser() + op.add_option("--device", dest="device", default="") + op.add_option("--emulthree", dest="emulthree", default=False, action="store_true") + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + self._setToSelf(self.op, opts) + + if len(extra) != 1: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s requires one argument") % "mouse") + + self.mouse = extra[0] + return self + +class FC3_Mouse(DeprecatedCommand): + def __init__(self): + DeprecatedCommand.__init__(self) diff --git a/mic/pykickstart/commands/multipath.py b/mic/pykickstart/commands/multipath.py new file mode 100644 index 0000000..84ba755 --- /dev/null +++ b/mic/pykickstart/commands/multipath.py @@ -0,0 +1,111 @@ +# +# Chris Lumens +# Peter Jones +# +# Copyright 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC6_MpPathData(BaseData): + removedKeywords = BaseData.removedKeywords + removedAttrs = BaseData.removedAttrs + + def __init__(self, *args, **kwargs): + BaseData.__init__(self, *args, **kwargs) + self.mpdev = kwargs.get("mpdev", "") + self.device = kwargs.get("device", "") + self.rule = kwargs.get("rule", "") + + def __str__(self): + return " --device=%s --rule=\"%s\"" % (self.device, self.rule) + +class FC6_MultiPathData(BaseData): + removedKeywords = BaseData.removedKeywords + removedAttrs = BaseData.removedAttrs + + def __init__(self, *args, **kwargs): + BaseData.__init__(self, *args, **kwargs) + self.name = kwargs.get("name", "") + self.paths = kwargs.get("paths", []) + + def __str__(self): + retval = BaseData.__str__(self) + + for path in self.paths: + retval += "multipath --mpdev=%s %s\n" % (self.name, path.__str__()) + + return retval + +class FC6_MultiPath(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=50, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.mpaths = kwargs.get("mpaths", []) + + def __str__(self): + retval = "" + for mpath in self.mpaths: + retval += mpath.__str__() + + return retval + + def _getParser(self): + op = KSOptionParser() + op.add_option("--name", dest="name", action="store", type="string", + required=1) + op.add_option("--device", dest="device", action="store", type="string", + required=1) + op.add_option("--rule", dest="rule", action="store", type="string", + required=1) + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + dd = FC6_MpPathData() + self._setToObj(self.op, opts, dd) + dd.lineno = self.lineno + dd.mpdev = dd.mpdev.split('/')[-1] + + parent = None + for x in range(0, len(self.mpaths)): + mpath = self.mpaths[x] + for path in mpath.paths: + if path.device == dd.device: + mapping = {"device": path.device, "multipathdev": path.mpdev} + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Device '%(device)s' is already used in multipath '%(multipathdev)s'") % mapping) + if mpath.name == dd.mpdev: + parent = x + + if parent is None: + mpath = FC6_MultiPathData() + return mpath + else: + mpath = self.mpaths[parent] + + return dd + + def dataList(self): + return self.mpaths diff --git a/mic/pykickstart/commands/network.py b/mic/pykickstart/commands/network.py new file mode 100644 index 0000000..9b67f92 --- /dev/null +++ b/mic/pykickstart/commands/network.py @@ -0,0 +1,363 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007, 2008 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.constants import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +import warnings +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC3_NetworkData(BaseData): + removedKeywords = BaseData.removedKeywords + removedAttrs = BaseData.removedAttrs + + def __init__(self, *args, **kwargs): + BaseData.__init__(self, *args, **kwargs) + self.bootProto = kwargs.get("bootProto", BOOTPROTO_DHCP) + self.dhcpclass = kwargs.get("dhcpclass", "") + self.device = kwargs.get("device", "") + self.essid = kwargs.get("essid", "") + self.ethtool = kwargs.get("ethtool", "") + self.gateway = kwargs.get("gateway", "") + self.hostname = kwargs.get("hostname", "") + self.ip = kwargs.get("ip", "") + self.mtu = kwargs.get("mtu", "") + self.nameserver = kwargs.get("nameserver", "") + self.netmask = kwargs.get("netmask", "") + self.nodns = kwargs.get("nodns", False) + self.onboot = kwargs.get("onboot", True) + self.wepkey = kwargs.get("wepkey", "") + + def __eq__(self, y): + return self.device and self.device == y.device + + def _getArgsAsStr(self): + retval = "" + + if self.bootProto != "": + retval += " --bootproto=%s" % self.bootProto + if self.dhcpclass != "": + retval += " --dhcpclass=%s" % self.dhcpclass + if self.device != "": + retval += " --device=%s" % self.device + if self.essid != "": + retval += " --essid=\"%s\"" % self.essid + if self.ethtool != "": + retval += " --ethtool=\"%s\"" % self.ethtool + if self.gateway != "": + retval += " --gateway=%s" % self.gateway + if self.hostname != "": + retval += " --hostname=%s" % self.hostname + if self.ip != "": + retval += " --ip=%s" % self.ip + if self.mtu != "": + retval += " --mtu=%s" % self.mtu + if self.nameserver != "": + retval += " --nameserver=%s" % self.nameserver + if self.netmask != "": + retval += " --netmask=%s" % self.netmask + if self.nodns: + retval += " --nodns" + if not self.onboot: + retval += " --onboot=off" + if self.wepkey != "": + retval += " --wepkey=%s" % self.wepkey + + return retval + + def __str__(self): + retval = BaseData.__str__(self) + retval += "network %s\n" % self._getArgsAsStr() + return retval + +class FC4_NetworkData(FC3_NetworkData): + removedKeywords = FC3_NetworkData.removedKeywords + removedAttrs = FC3_NetworkData.removedAttrs + + def __init__(self, *args, **kwargs): + FC3_NetworkData.__init__(self, *args, **kwargs) + self.notksdevice = kwargs.get("notksdevice", False) + + def _getArgsAsStr(self): + retval = FC3_NetworkData._getArgsAsStr(self) + + if self.notksdevice: + retval += " --notksdevice" + + return retval + +class FC6_NetworkData(FC4_NetworkData): + removedKeywords = FC4_NetworkData.removedKeywords + removedAttrs = FC4_NetworkData.removedAttrs + + def __init__(self, *args, **kwargs): + FC4_NetworkData.__init__(self, *args, **kwargs) + self.noipv4 = kwargs.get("noipv4", False) + self.noipv6 = kwargs.get("noipv6", False) + + def _getArgsAsStr(self): + retval = FC4_NetworkData._getArgsAsStr(self) + + if self.noipv4: + retval += " --noipv4" + if self.noipv6: + retval += " --noipv6" + + return retval + +class F8_NetworkData(FC6_NetworkData): + removedKeywords = FC6_NetworkData.removedKeywords + removedAttrs = FC6_NetworkData.removedAttrs + + def __init__(self, *args, **kwargs): + FC6_NetworkData.__init__(self, *args, **kwargs) + self.ipv6 = kwargs.get("ipv6", "") + + def _getArgsAsStr(self): + retval = FC6_NetworkData._getArgsAsStr(self) + + if self.ipv6 != "": + retval += " --ipv6" % self.ipv6 + + return retval + +class F16_NetworkData(F8_NetworkData): + removedKeywords = F8_NetworkData.removedKeywords + removedAttrs = F8_NetworkData.removedAttrs + + def __init__(self, *args, **kwargs): + F8_NetworkData.__init__(self, *args, **kwargs) + self.activate = kwargs.get("activate", False) + self.nodefroute = kwargs.get("nodefroute", False) + self.wpakey = kwargs.get("wpakey", "") + + def _getArgsAsStr(self): + retval = F8_NetworkData._getArgsAsStr(self) + + if self.activate: + retval += " --activate" + if self.nodefroute: + retval += " --nodefroute" + if self.wpakey != "": + retval += "--wpakey=%s" % self.wpakey + + return retval + +class RHEL4_NetworkData(FC3_NetworkData): + removedKeywords = FC3_NetworkData.removedKeywords + removedAttrs = FC3_NetworkData.removedAttrs + + def __init__(self, *args, **kwargs): + FC3_NetworkData.__init__(self, *args, **kwargs) + self.notksdevice = kwargs.get("notksdevice", False) + + def _getArgsAsStr(self): + retval = FC3_NetworkData._getArgsAsStr(self) + + if self.notksdevice: + retval += " --notksdevice" + + return retval + +class RHEL6_NetworkData(F8_NetworkData): + removedKeywords = F8_NetworkData.removedKeywords + removedAttrs = F8_NetworkData.removedAttrs + + def __init__(self, *args, **kwargs): + F8_NetworkData.__init__(self, *args, **kwargs) + self.activate = kwargs.get("activate", False) + self.nodefroute = kwargs.get("nodefroute", False) + + def _getArgsAsStr(self): + retval = F8_NetworkData._getArgsAsStr(self) + + if self.activate: + retval += " --activate" + if self.nodefroute: + retval += " --nodefroute" + + return retval + +class FC3_Network(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.bootprotoList = [BOOTPROTO_DHCP, BOOTPROTO_BOOTP, + BOOTPROTO_STATIC] + + self.op = self._getParser() + + self.network = kwargs.get("network", []) + + def __str__(self): + retval = "" + + for nic in self.network: + retval += nic.__str__() + + if retval != "": + return "# Network information\n" + retval + else: + return "" + + def _getParser(self): + op = KSOptionParser() + op.add_option("--bootproto", dest="bootProto", + default=BOOTPROTO_DHCP, + choices=self.bootprotoList) + op.add_option("--dhcpclass", dest="dhcpclass") + op.add_option("--device", dest="device") + op.add_option("--essid", dest="essid") + op.add_option("--ethtool", dest="ethtool") + op.add_option("--gateway", dest="gateway") + op.add_option("--hostname", dest="hostname") + op.add_option("--ip", dest="ip") + op.add_option("--mtu", dest="mtu") + op.add_option("--nameserver", dest="nameserver") + op.add_option("--netmask", dest="netmask") + op.add_option("--nodns", dest="nodns", action="store_true", + default=False) + op.add_option("--onboot", dest="onboot", action="store", + type="ksboolean") + op.add_option("--wepkey", dest="wepkey") + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + nd = self.handler.NetworkData() + self._setToObj(self.op, opts, nd) + nd.lineno = self.lineno + + # Check for duplicates in the data list. + if nd in self.dataList(): + warnings.warn(_("A network device with the name %s has already been defined.") % nd.device) + + return nd + + def dataList(self): + return self.network + +class FC4_Network(FC3_Network): + removedKeywords = FC3_Network.removedKeywords + removedAttrs = FC3_Network.removedAttrs + + def _getParser(self): + op = FC3_Network._getParser(self) + op.add_option("--notksdevice", dest="notksdevice", action="store_true", + default=False) + return op + +class FC6_Network(FC4_Network): + removedKeywords = FC4_Network.removedKeywords + removedAttrs = FC4_Network.removedAttrs + + def _getParser(self): + op = FC4_Network._getParser(self) + op.add_option("--noipv4", dest="noipv4", action="store_true", + default=False) + op.add_option("--noipv6", dest="noipv6", action="store_true", + default=False) + return op + +class F8_Network(FC6_Network): + removedKeywords = FC6_Network.removedKeywords + removedAttrs = FC6_Network.removedAttrs + + def _getParser(self): + op = FC6_Network._getParser(self) + op.add_option("--ipv6", dest="ipv6") + return op + +class F9_Network(F8_Network): + removedKeywords = F8_Network.removedKeywords + removedAttrs = F8_Network.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + F8_Network.__init__(self, writePriority, *args, **kwargs) + self.bootprotoList.append(BOOTPROTO_QUERY) + + def _getParser(self): + op = F8_Network._getParser(self) + op.add_option("--bootproto", dest="bootProto", + default=BOOTPROTO_DHCP, + choices=self.bootprotoList) + return op + +class F16_Network(F9_Network): + removedKeywords = F9_Network.removedKeywords + removedAttrs = F9_Network.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + F9_Network.__init__(self, writePriority, *args, **kwargs) + self.bootprotoList.append(BOOTPROTO_IBFT) + + def _getParser(self): + op = F9_Network._getParser(self) + op.add_option("--activate", dest="activate", action="store_true", + default=False) + op.add_option("--nodefroute", dest="nodefroute", action="store_true", + default=False) + op.add_option("--wpakey", dest="wpakey", action="store", default="") + return op + +class RHEL4_Network(FC3_Network): + removedKeywords = FC3_Network.removedKeywords + removedAttrs = FC3_Network.removedAttrs + + def _getParser(self): + op = FC3_Network._getParser(self) + op.add_option("--notksdevice", dest="notksdevice", action="store_true", + default=False) + return op + +class RHEL5_Network(FC6_Network): + removedKeywords = FC6_Network.removedKeywords + removedAttrs = FC6_Network.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + FC6_Network.__init__(self, writePriority, *args, **kwargs) + self.bootprotoList.append(BOOTPROTO_QUERY) + + def _getParser(self): + op = FC6_Network._getParser(self) + op.add_option("--bootproto", dest="bootProto", + default=BOOTPROTO_DHCP, + choices=self.bootprotoList) + return op + +class RHEL6_Network(F9_Network): + removedKeywords = F9_Network.removedKeywords + removedAttrs = F9_Network.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + F9_Network.__init__(self, writePriority, *args, **kwargs) + self.bootprotoList.append(BOOTPROTO_IBFT) + + def _getParser(self): + op = F9_Network._getParser(self) + op.add_option("--activate", dest="activate", action="store_true", + default=False) + op.add_option("--nodefroute", dest="nodefroute", action="store_true", + default=False) + return op diff --git a/mic/pykickstart/commands/partition.py b/mic/pykickstart/commands/partition.py new file mode 100644 index 0000000..34e5b7a --- /dev/null +++ b/mic/pykickstart/commands/partition.py @@ -0,0 +1,348 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007, 2008 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +import warnings +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC3_PartData(BaseData): + removedKeywords = BaseData.removedKeywords + removedAttrs = BaseData.removedAttrs + + def __init__(self, *args, **kwargs): + BaseData.__init__(self, *args, **kwargs) + self.active = kwargs.get("active", False) + self.primOnly = kwargs.get("primOnly", False) + self.end = kwargs.get("end", 0) + self.fstype = kwargs.get("fstype", "") + self.grow = kwargs.get("grow", False) + self.maxSizeMB = kwargs.get("maxSizeMB", 0) + self.format = kwargs.get("format", True) + self.onbiosdisk = kwargs.get("onbiosdisk", "") + self.disk = kwargs.get("disk", "") + self.onPart = kwargs.get("onPart", "") + self.recommended = kwargs.get("recommended", False) + self.size = kwargs.get("size", None) + self.start = kwargs.get("start", 0) + self.mountpoint = kwargs.get("mountpoint", "") + + def __eq__(self, y): + return self.mountpoint == y.mountpoint + + def _getArgsAsStr(self): + retval = "" + + if self.active: + retval += " --active" + if self.primOnly: + retval += " --asprimary" + if hasattr(self, "end") and self.end != 0: + retval += " --end=%s" % self.end + if self.fstype != "": + retval += " --fstype=\"%s\"" % self.fstype + if self.grow: + retval += " --grow" + if self.maxSizeMB > 0: + retval += " --maxsize=%d" % self.maxSizeMB + if not self.format: + retval += " --noformat" + if self.onbiosdisk != "": + retval += " --onbiosdisk=%s" % self.onbiosdisk + if self.disk != "": + retval += " --ondisk=%s" % self.disk + if self.onPart != "": + retval += " --onpart=%s" % self.onPart + if self.recommended: + retval += " --recommended" + if self.size and self.size != 0: + retval += " --size=%s" % self.size + if hasattr(self, "start") and self.start != 0: + retval += " --start=%s" % self.start + + return retval + + def __str__(self): + retval = BaseData.__str__(self) + retval += "part %s%s\n" % (self.mountpoint, self._getArgsAsStr()) + return retval + +class FC4_PartData(FC3_PartData): + removedKeywords = FC3_PartData.removedKeywords + removedAttrs = FC3_PartData.removedAttrs + + def __init__(self, *args, **kwargs): + FC3_PartData.__init__(self, *args, **kwargs) + self.bytesPerInode = kwargs.get("bytesPerInode", 4096) + self.fsopts = kwargs.get("fsopts", "") + self.label = kwargs.get("label", "") + + def _getArgsAsStr(self): + retval = FC3_PartData._getArgsAsStr(self) + + if hasattr(self, "bytesPerInode") and self.bytesPerInode != 0: + retval += " --bytes-per-inode=%d" % self.bytesPerInode + if self.fsopts != "": + retval += " --fsoptions=\"%s\"" % self.fsopts + if self.label != "": + retval += " --label=%s" % self.label + + return retval + +class RHEL5_PartData(FC4_PartData): + removedKeywords = FC4_PartData.removedKeywords + removedAttrs = FC4_PartData.removedAttrs + + def __init__(self, *args, **kwargs): + FC4_PartData.__init__(self, *args, **kwargs) + self.encrypted = kwargs.get("encrypted", False) + self.passphrase = kwargs.get("passphrase", "") + + def _getArgsAsStr(self): + retval = FC4_PartData._getArgsAsStr(self) + + if self.encrypted: + retval += " --encrypted" + + if self.passphrase != "": + retval += " --passphrase=\"%s\"" % self.passphrase + + return retval + +class F9_PartData(FC4_PartData): + removedKeywords = FC4_PartData.removedKeywords + ["bytesPerInode"] + removedAttrs = FC4_PartData.removedAttrs + ["bytesPerInode"] + + def __init__(self, *args, **kwargs): + FC4_PartData.__init__(self, *args, **kwargs) + self.deleteRemovedAttrs() + + self.fsopts = kwargs.get("fsopts", "") + self.label = kwargs.get("label", "") + self.fsprofile = kwargs.get("fsprofile", "") + self.encrypted = kwargs.get("encrypted", False) + self.passphrase = kwargs.get("passphrase", "") + + def _getArgsAsStr(self): + retval = FC4_PartData._getArgsAsStr(self) + + if self.fsprofile != "": + retval += " --fsprofile=\"%s\"" % self.fsprofile + if self.encrypted: + retval += " --encrypted" + + if self.passphrase != "": + retval += " --passphrase=\"%s\"" % self.passphrase + + return retval + +class F11_PartData(F9_PartData): + removedKeywords = F9_PartData.removedKeywords + ["start", "end"] + removedAttrs = F9_PartData.removedAttrs + ["start", "end"] + +class F12_PartData(F11_PartData): + removedKeywords = F11_PartData.removedKeywords + removedAttrs = F11_PartData.removedAttrs + + def __init__(self, *args, **kwargs): + F11_PartData.__init__(self, *args, **kwargs) + + self.escrowcert = kwargs.get("escrowcert", "") + self.backuppassphrase = kwargs.get("backuppassphrase", False) + + def _getArgsAsStr(self): + retval = F11_PartData._getArgsAsStr(self) + + if self.encrypted and self.escrowcert != "": + retval += " --escrowcert=\"%s\"" % self.escrowcert + + if self.backuppassphrase: + retval += " --backuppassphrase" + + return retval + +F14_PartData = F12_PartData + +class FC3_Partition(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=130, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.partitions = kwargs.get("partitions", []) + + def __str__(self): + retval = "" + + for part in self.partitions: + retval += part.__str__() + + if retval != "": + return "# Disk partitioning information\n" + retval + else: + return "" + + def _getParser(self): + def part_cb (option, opt_str, value, parser): + if value.startswith("/dev/"): + parser.values.ensure_value(option.dest, value[5:]) + else: + parser.values.ensure_value(option.dest, value) + + op = KSOptionParser() + op.add_option("--active", dest="active", action="store_true", + default=False) + op.add_option("--asprimary", dest="primOnly", action="store_true", + default=False) + op.add_option("--end", dest="end", action="store", type="int", + nargs=1) + op.add_option("--fstype", "--type", dest="fstype") + op.add_option("--grow", dest="grow", action="store_true", default=False) + op.add_option("--maxsize", dest="maxSizeMB", action="store", type="int", + nargs=1) + op.add_option("--noformat", dest="format", action="store_false", + default=True) + op.add_option("--onbiosdisk", dest="onbiosdisk") + 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) + op.add_option("--size", dest="size", action="store", type="int", + nargs=1) + op.add_option("--start", dest="start", action="store", type="int", + nargs=1) + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + + if len(extra) != 1: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Mount point required for %s") % "partition") + + pd = self.handler.PartData() + self._setToObj(self.op, opts, pd) + pd.lineno = self.lineno + pd.mountpoint=extra[0] + + # Check for duplicates in the data list. + if pd in self.dataList(): + warnings.warn(_("A partition with the mountpoint %s has already been defined.") % pd.mountpoint) + + return pd + + def dataList(self): + return self.partitions + +class FC4_Partition(FC3_Partition): + removedKeywords = FC3_Partition.removedKeywords + removedAttrs = FC3_Partition.removedAttrs + + def __init__(self, writePriority=130, *args, **kwargs): + FC3_Partition.__init__(self, writePriority, *args, **kwargs) + + def part_cb (option, opt_str, value, parser): + if value.startswith("/dev/"): + parser.values.ensure_value(option.dest, value[5:]) + else: + parser.values.ensure_value(option.dest, value) + + def _getParser(self): + op = FC3_Partition._getParser(self) + op.add_option("--bytes-per-inode", dest="bytesPerInode", action="store", + type="int", nargs=1) + op.add_option("--fsoptions", dest="fsopts") + op.add_option("--label", dest="label") + return op + +class RHEL5_Partition(FC4_Partition): + removedKeywords = FC4_Partition.removedKeywords + removedAttrs = FC4_Partition.removedAttrs + + def __init__(self, writePriority=130, *args, **kwargs): + FC4_Partition.__init__(self, writePriority, *args, **kwargs) + + def part_cb (option, opt_str, value, parser): + if value.startswith("/dev/"): + parser.values.ensure_value(option.dest, value[5:]) + else: + parser.values.ensure_value(option.dest, value) + + def _getParser(self): + op = FC4_Partition._getParser(self) + op.add_option("--encrypted", action="store_true", default=False) + op.add_option("--passphrase") + return op + +class F9_Partition(FC4_Partition): + removedKeywords = FC4_Partition.removedKeywords + removedAttrs = FC4_Partition.removedAttrs + + def __init__(self, writePriority=130, *args, **kwargs): + FC4_Partition.__init__(self, writePriority, *args, **kwargs) + + def part_cb (option, opt_str, value, parser): + if value.startswith("/dev/"): + parser.values.ensure_value(option.dest, value[5:]) + else: + parser.values.ensure_value(option.dest, value) + + def _getParser(self): + op = FC4_Partition._getParser(self) + op.add_option("--bytes-per-inode", deprecated=1) + op.add_option("--fsprofile") + op.add_option("--encrypted", action="store_true", default=False) + op.add_option("--passphrase") + return op + +class F11_Partition(F9_Partition): + removedKeywords = F9_Partition.removedKeywords + removedAttrs = F9_Partition.removedAttrs + + def _getParser(self): + op = F9_Partition._getParser(self) + op.add_option("--start", deprecated=1) + op.add_option("--end", deprecated=1) + return op + +class F12_Partition(F11_Partition): + removedKeywords = F11_Partition.removedKeywords + removedAttrs = F11_Partition.removedAttrs + + def _getParser(self): + op = F11_Partition._getParser(self) + op.add_option("--escrowcert") + op.add_option("--backuppassphrase", action="store_true", default=False) + return op + +class F14_Partition(F12_Partition): + removedKeywords = F12_Partition.removedKeywords + removedAttrs = F12_Partition.removedAttrs + + def _getParser(self): + op = F12_Partition._getParser(self) + op.remove_option("--bytes-per-inode") + op.remove_option("--start") + op.remove_option("--end") + return op diff --git a/mic/pykickstart/commands/raid.py b/mic/pykickstart/commands/raid.py new file mode 100644 index 0000000..0f4c92a --- /dev/null +++ b/mic/pykickstart/commands/raid.py @@ -0,0 +1,365 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007, 2008, 2011 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +import warnings +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC3_RaidData(BaseData): + removedKeywords = BaseData.removedKeywords + removedAttrs = BaseData.removedAttrs + + def __init__(self, *args, **kwargs): + BaseData.__init__(self, *args, **kwargs) + self.device = kwargs.get("device", None) + self.fstype = kwargs.get("fstype", "") + self.level = kwargs.get("level", "") + self.format = kwargs.get("format", True) + self.spares = kwargs.get("spares", 0) + self.preexist = kwargs.get("preexist", False) + self.mountpoint = kwargs.get("mountpoint", "") + self.members = kwargs.get("members", []) + + def __eq__(self, y): + return self.device == y.device + + def _getArgsAsStr(self): + retval = "" + + if self.device != "": + retval += " --device=%s" % self.device + if self.fstype != "": + retval += " --fstype=\"%s\"" % self.fstype + if self.level != "": + retval += " --level=%s" % self.level + if not self.format: + retval += " --noformat" + if self.spares != 0: + retval += " --spares=%d" % self.spares + if self.preexist: + retval += " --useexisting" + + return retval + + def __str__(self): + retval = BaseData.__str__(self) + retval += "raid %s%s %s\n" % (self.mountpoint, self._getArgsAsStr(), + " ".join(self.members)) + return retval + +class FC4_RaidData(FC3_RaidData): + removedKeywords = FC3_RaidData.removedKeywords + removedAttrs = FC3_RaidData.removedAttrs + + def __init__(self, *args, **kwargs): + FC3_RaidData.__init__(self, *args, **kwargs) + self.fsopts = kwargs.get("fsopts", "") + + def _getArgsAsStr(self): + retval = FC3_RaidData._getArgsAsStr(self) + + if self.fsopts != "": + retval += " --fsoptions=\"%s\"" % self.fsopts + + return retval + +class FC5_RaidData(FC4_RaidData): + removedKeywords = FC4_RaidData.removedKeywords + removedAttrs = FC4_RaidData.removedAttrs + + def __init__(self, *args, **kwargs): + FC4_RaidData.__init__(self, *args, **kwargs) + self.bytesPerInode = kwargs.get("bytesPerInode", 4096) + + def _getArgsAsStr(self): + retval = FC4_RaidData._getArgsAsStr(self) + + if hasattr(self, "bytesPerInode") and self.bytesPerInode != 0: + retval += " --bytes-per-inode=%d" % self.bytesPerInode + + return retval + +class RHEL5_RaidData(FC5_RaidData): + removedKeywords = FC5_RaidData.removedKeywords + removedAttrs = FC5_RaidData.removedAttrs + + def __init__(self, *args, **kwargs): + FC5_RaidData.__init__(self, *args, **kwargs) + self.encrypted = kwargs.get("encrypted", False) + self.passphrase = kwargs.get("passphrase", "") + + def _getArgsAsStr(self): + retval = FC5_RaidData._getArgsAsStr(self) + + if self.encrypted: + retval += " --encrypted" + + if self.passphrase != "": + retval += " --passphrase=\"%s\"" % self.passphrase + + return retval + +F7_RaidData = FC5_RaidData + +class F9_RaidData(FC5_RaidData): + removedKeywords = FC5_RaidData.removedKeywords + ["bytesPerInode"] + removedAttrs = FC5_RaidData.removedAttrs + ["bytesPerInode"] + + def __init__(self, *args, **kwargs): + FC5_RaidData.__init__(self, *args, **kwargs) + self.deleteRemovedAttrs() + + self.fsprofile = kwargs.get("fsprofile", "") + self.encrypted = kwargs.get("encrypted", False) + self.passphrase = kwargs.get("passphrase", "") + + def _getArgsAsStr(self): + retval = FC5_RaidData._getArgsAsStr(self) + + if self.fsprofile != "": + retval += " --fsprofile=\"%s\"" % self.fsprofile + if self.encrypted: + retval += " --encrypted" + + if self.passphrase != "": + retval += " --passphrase=\"%s\"" % self.passphrase + + return retval + +class F12_RaidData(F9_RaidData): + removedKeywords = F9_RaidData.removedKeywords + removedAttrs = F9_RaidData.removedAttrs + + def __init__(self, *args, **kwargs): + F9_RaidData.__init__(self, *args, **kwargs) + self.deleteRemovedAttrs() + + self.escrowcert = kwargs.get("escrowcert", "") + self.backuppassphrase = kwargs.get("backuppassphrase", False) + + def _getArgsAsStr(self): + retval = F9_RaidData._getArgsAsStr(self) + + if self.encrypted and self.escrowcert != "": + retval += " --escrowcert=\"%s\"" % self.escrowcert + + if self.backuppassphrase: + retval += " --backuppassphrase" + return retval + +F13_RaidData = F12_RaidData + +F14_RaidData = F13_RaidData + +class F15_RaidData(F14_RaidData): + removedKeywords = F14_RaidData.removedKeywords + removedAttrs = F14_RaidData.removedAttrs + + def __init__(self, *args, **kwargs): + F14_RaidData.__init__(self, *args, **kwargs) + self.deleteRemovedAttrs() + + self.label = kwargs.get("label", "") + + def _getArgsAsStr(self): + retval = F14_RaidData._getArgsAsStr(self) + + if self.label != "": + retval += " --label=%s" % self.label + + return retval + +class FC3_Raid(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=131, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + # A dict of all the RAID levels we support. This means that if we + # support more levels in the future, subclasses don't have to + # duplicate too much. + self.levelMap = { "RAID0": "RAID0", "0": "RAID0", + "RAID1": "RAID1", "1": "RAID1", + "RAID5": "RAID5", "5": "RAID5", + "RAID6": "RAID6", "6": "RAID6" } + + self.raidList = kwargs.get("raidList", []) + + def __str__(self): + retval = "" + + for raid in self.raidList: + retval += raid.__str__() + + return retval + + def _getParser(self): + def raid_cb (option, opt_str, value, parser): + parser.values.format = False + parser.values.preexist = True + + def device_cb (option, opt_str, value, parser): + if value[0:2] == "md": + parser.values.ensure_value(option.dest, value[2:]) + else: + parser.values.ensure_value(option.dest, value) + + def level_cb (option, opt_str, value, parser): + if self.levelMap.has_key(value): + parser.values.ensure_value(option.dest, self.levelMap[value]) + + op = KSOptionParser() + op.add_option("--device", action="callback", callback=device_cb, + dest="device", type="string", nargs=1, required=1) + op.add_option("--fstype", dest="fstype") + op.add_option("--level", dest="level", action="callback", + callback=level_cb, type="string", nargs=1) + op.add_option("--noformat", action="callback", callback=raid_cb, + dest="format", default=True, nargs=0) + op.add_option("--spares", dest="spares", action="store", type="int", + nargs=1, default=0) + op.add_option("--useexisting", dest="preexist", action="store_true", + default=False) + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + + if len(extra) == 0: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Mount point required for %s") % "raid") + if len(extra) == 1: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Partitions required for %s") % "raid") + + rd = self.handler.RaidData() + self._setToObj(self.op, opts, rd) + rd.lineno = self.lineno + + # --device can't just take an int in the callback above, because it + # could be specificed as "mdX", which causes optparse to error when + # it runs int(). + rd.device = int(rd.device) + rd.mountpoint = extra[0] + rd.members = extra[1:] + + # Check for duplicates in the data list. + if rd in self.dataList(): + warnings.warn(_("A RAID device with the name %s has already been defined.") % rd.device) + + return rd + + def dataList(self): + return self.raidList + +class FC4_Raid(FC3_Raid): + removedKeywords = FC3_Raid.removedKeywords + removedAttrs = FC3_Raid.removedAttrs + + def _getParser(self): + op = FC3_Raid._getParser(self) + op.add_option("--fsoptions", dest="fsopts") + return op + +class FC5_Raid(FC4_Raid): + removedKeywords = FC4_Raid.removedKeywords + removedAttrs = FC4_Raid.removedAttrs + + def _getParser(self): + op = FC4_Raid._getParser(self) + op.add_option("--bytes-per-inode", dest="bytesPerInode", action="store", + type="int", nargs=1) + return op + +class RHEL5_Raid(FC5_Raid): + removedKeywords = FC5_Raid.removedKeywords + removedAttrs = FC5_Raid.removedAttrs + + def __init__(self, writePriority=131, *args, **kwargs): + FC5_Raid.__init__(self, writePriority, *args, **kwargs) + + self.levelMap.update({"RAID10": "RAID10", "10": "RAID10"}) + + def _getParser(self): + op = FC5_Raid._getParser(self) + op.add_option("--encrypted", action="store_true", default=False) + op.add_option("--passphrase") + return op + +class F7_Raid(FC5_Raid): + removedKeywords = FC5_Raid.removedKeywords + removedAttrs = FC5_Raid.removedAttrs + + def __init__(self, writePriority=131, *args, **kwargs): + FC5_Raid.__init__(self, writePriority, *args, **kwargs) + + self.levelMap.update({"RAID10": "RAID10", "10": "RAID10"}) + +class F9_Raid(F7_Raid): + removedKeywords = F7_Raid.removedKeywords + removedAttrs = F7_Raid.removedAttrs + + def _getParser(self): + op = F7_Raid._getParser(self) + op.add_option("--bytes-per-inode", deprecated=1) + op.add_option("--fsprofile") + op.add_option("--encrypted", action="store_true", default=False) + op.add_option("--passphrase") + return op + +class F12_Raid(F9_Raid): + removedKeywords = F9_Raid.removedKeywords + removedAttrs = F9_Raid.removedAttrs + + def _getParser(self): + op = F9_Raid._getParser(self) + op.add_option("--escrowcert") + op.add_option("--backuppassphrase", action="store_true", default=False) + return op + +class F13_Raid(F12_Raid): + removedKeywords = F12_Raid.removedKeywords + removedAttrs = F12_Raid.removedAttrs + + def __init__(self, writePriority=131, *args, **kwargs): + F12_Raid.__init__(self, writePriority, *args, **kwargs) + + self.levelMap.update({"RAID4": "RAID4", "4": "RAID4"}) + +class F14_Raid(F13_Raid): + removedKeywords = F13_Raid.removedKeywords + removedAttrs = F13_Raid.removedAttrs + + def _getParser(self): + op = F13_Raid._getParser(self) + op.remove_option("--bytes-per-inode") + return op + +class F15_Raid(F14_Raid): + removedKeywords = F14_Raid.removedKeywords + removedAttrs = F14_Raid.removedAttrs + + def _getParser(self): + op = F14_Raid._getParser(self) + op.add_option("--label") + return op diff --git a/mic/pykickstart/commands/reboot.py b/mic/pykickstart/commands/reboot.py new file mode 100644 index 0000000..391af14 --- /dev/null +++ b/mic/pykickstart/commands/reboot.py @@ -0,0 +1,79 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.constants import * +from pykickstart.errors import * +from pykickstart.options import * + +class FC3_Reboot(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.action = kwargs.get("action", None) + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.action == KS_REBOOT: + retval += "# Reboot after installation\nreboot\n" + elif self.action == KS_SHUTDOWN: + retval += "# Shutdown after installation\nshutdown\n" + + return retval + + def parse(self, args): + if self.currentCmd == "reboot": + self.action = KS_REBOOT + else: + self.action = KS_SHUTDOWN + + return self + +class FC6_Reboot(FC3_Reboot): + removedKeywords = FC3_Reboot.removedKeywords + removedAttrs = FC3_Reboot.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + FC3_Reboot.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.eject = kwargs.get("eject", False) + + def __str__(self): + retval = FC3_Reboot.__str__(self).rstrip() + + if self.eject: + retval += " --eject" + + return retval + "\n" + + def _getParser(self): + op = KSOptionParser() + op.add_option("--eject", dest="eject", action="store_true", + default=False) + return op + + def parse(self, args): + FC3_Reboot.parse(self, args) + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + self._setToSelf(self.op, opts) + return self diff --git a/mic/pykickstart/commands/repo.py b/mic/pykickstart/commands/repo.py new file mode 100644 index 0000000..543ef94 --- /dev/null +++ b/mic/pykickstart/commands/repo.py @@ -0,0 +1,249 @@ +# +# Chris Lumens +# +# Copyright 2007, 2008, 2009 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.constants import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +import warnings +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC6_RepoData(BaseData): + removedKeywords = BaseData.removedKeywords + removedAttrs = BaseData.removedAttrs + + def __init__(self, *args, **kwargs): + BaseData.__init__(self, *args, **kwargs) + self.baseurl = kwargs.get("baseurl", "") + self.mirrorlist = kwargs.get("mirrorlist", None) + self.name = kwargs.get("name", "") + + def __eq__(self, y): + return self.name == y.name + + def _getArgsAsStr(self): + retval = "" + + if self.baseurl: + retval += "--baseurl=%s" % self.baseurl + elif self.mirrorlist: + retval += "--mirrorlist=%s" % self.mirrorlist + + return retval + + def __str__(self): + retval = BaseData.__str__(self) + retval += "repo --name=\"%s\" %s\n" % (self.name, self._getArgsAsStr()) + return retval + +class F8_RepoData(FC6_RepoData): + removedKeywords = FC6_RepoData.removedKeywords + removedAttrs = FC6_RepoData.removedAttrs + + def __init__(self, *args, **kwargs): + FC6_RepoData.__init__(self, *args, **kwargs) + self.cost = kwargs.get("cost", None) + self.includepkgs = kwargs.get("includepkgs", []) + self.excludepkgs = kwargs.get("excludepkgs", []) + + def _getArgsAsStr(self): + retval = FC6_RepoData._getArgsAsStr(self) + + if self.cost: + retval += " --cost=%s" % self.cost + if self.includepkgs: + retval += " --includepkgs=\"%s\"" % ",".join(self.includepkgs) + if self.excludepkgs: + retval += " --excludepkgs=\"%s\"" % ",".join(self.excludepkgs) + + return retval + +class F11_RepoData(F8_RepoData): + removedKeywords = F8_RepoData.removedKeywords + removedAttrs = F8_RepoData.removedAttrs + + def __init__(self, *args, **kwargs): + F8_RepoData.__init__(self, *args, **kwargs) + self.ignoregroups = kwargs.get("ignoregroups", None) + + def _getArgsAsStr(self): + retval = F8_RepoData._getArgsAsStr(self) + + if self.ignoregroups: + retval += " --ignoregroups=true" + return retval + +class F13_RepoData(F11_RepoData): + removedKeywords = F11_RepoData.removedKeywords + removedAttrs = F11_RepoData.removedAttrs + + def __init__(self, *args, **kwargs): + F11_RepoData.__init__(self, *args, **kwargs) + self.proxy = kwargs.get("proxy", "") + + def _getArgsAsStr(self): + retval = F11_RepoData._getArgsAsStr(self) + + if self.proxy: + retval += " --proxy=\"%s\"" % self.proxy + + return retval + +class F14_RepoData(F13_RepoData): + removedKeywords = F13_RepoData.removedKeywords + removedAttrs = F13_RepoData.removedAttrs + + def __init__(self, *args, **kwargs): + F13_RepoData.__init__(self, *args, **kwargs) + self.noverifyssl = kwargs.get("noverifyssl", False) + + def _getArgsAsStr(self): + retval = F13_RepoData._getArgsAsStr(self) + + if self.noverifyssl: + retval += " --noverifyssl" + + return retval + +RHEL6_RepoData = F14_RepoData + +F15_RepoData = F14_RepoData + +class FC6_Repo(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + urlRequired = True + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.repoList = kwargs.get("repoList", []) + + def __str__(self): + retval = "" + for repo in self.repoList: + retval += repo.__str__() + + return retval + + def _getParser(self): + op = KSOptionParser() + op.add_option("--name", dest="name", required=1) + op.add_option("--baseurl") + op.add_option("--mirrorlist") + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + + if len(extra) != 0: + mapping = {"command": "repo", "options": extra} + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Unexpected arguments to %(command)s command: %(options)s") % mapping) + + # This is lame, but I can't think of a better way to make sure only + # one of these two is specified. + if opts.baseurl and opts.mirrorlist: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Only one of --baseurl and --mirrorlist may be specified for repo command.")) + + if self.urlRequired and not opts.baseurl and not opts.mirrorlist: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("One of --baseurl or --mirrorlist must be specified for repo command.")) + + rd = self.handler.RepoData() + self._setToObj(self.op, opts, rd) + rd.lineno = self.lineno + + # Check for duplicates in the data list. + if rd in self.dataList(): + warnings.warn(_("A repo with the name %s has already been defined.") % rd.name) + + return rd + + def dataList(self): + return self.repoList + +class F8_Repo(FC6_Repo): + removedKeywords = FC6_Repo.removedKeywords + removedAttrs = FC6_Repo.removedAttrs + + def __str__(self): + retval = "" + for repo in self.repoList: + retval += repo.__str__() + + return retval + + def _getParser(self): + def list_cb (option, opt_str, value, parser): + for d in value.split(','): + parser.values.ensure_value(option.dest, []).append(d) + + op = FC6_Repo._getParser(self) + op.add_option("--cost", action="store", type="int") + op.add_option("--excludepkgs", action="callback", callback=list_cb, + nargs=1, type="string") + op.add_option("--includepkgs", action="callback", callback=list_cb, + nargs=1, type="string") + return op + + def methodToRepo(self): + if not self.handler.method.url: + raise KickstartError, formatErrorMsg(self.handler.method.lineno, msg=_("Method must be a url to be added to the repo list.")) + reponame = "ks-method-url" + repourl = self.handler.method.url + rd = self.handler.RepoData(name=reponame, baseurl=repourl) + return rd + +class F11_Repo(F8_Repo): + removedKeywords = F8_Repo.removedKeywords + removedAttrs = F8_Repo.removedAttrs + + def _getParser(self): + op = F8_Repo._getParser(self) + op.add_option("--ignoregroups", action="store", type="ksboolean") + return op + +class F13_Repo(F11_Repo): + removedKeywords = F11_Repo.removedKeywords + removedAttrs = F11_Repo.removedAttrs + + def _getParser(self): + op = F11_Repo._getParser(self) + op.add_option("--proxy") + return op + +class F14_Repo(F13_Repo): + removedKeywords = F13_Repo.removedKeywords + removedAttrs = F13_Repo.removedAttrs + + def _getParser(self): + op = F13_Repo._getParser(self) + op.add_option("--noverifyssl", action="store_true", default=False) + return op + +RHEL6_Repo = F14_Repo + +class F15_Repo(F14_Repo): + removedKeywords = F14_Repo.removedKeywords + removedAttrs = F14_Repo.removedAttrs + + urlRequired = False diff --git a/mic/pykickstart/commands/rescue.py b/mic/pykickstart/commands/rescue.py new file mode 100644 index 0000000..1893d4e --- /dev/null +++ b/mic/pykickstart/commands/rescue.py @@ -0,0 +1,68 @@ +# +# Alexander Todorov +# +# Copyright 2008 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class F10_Rescue(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.rescue = False + self.nomount = kwargs.get("nomount", False) + self.romount = kwargs.get("romount", False) + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.rescue: + retval += "rescue" + + if self.nomount: + retval += " --nomount" + if self.romount: + retval += " --romount" + + retval = "# Start rescue mode\n%s\n" % retval + + return retval + + def _getParser(self): + op = KSOptionParser() + op.add_option("--nomount", dest="nomount", action="store_true", default=False) + op.add_option("--romount", dest="romount", action="store_true", default=False) + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + + if opts.nomount and opts.romount: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Only one of --nomount and --romount may be specified for rescue command.")) + + self._setToSelf(self.op, opts) + self.rescue = True + return self diff --git a/mic/pykickstart/commands/rootpw.py b/mic/pykickstart/commands/rootpw.py new file mode 100644 index 0000000..e038b45 --- /dev/null +++ b/mic/pykickstart/commands/rootpw.py @@ -0,0 +1,93 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC3_RootPw(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.isCrypted = kwargs.get("isCrypted", False) + self.password = kwargs.get("password", "") + + def _getArgsAsStr(self): + retval = "" + + if self.isCrypted: + retval += " --iscrypted" + + return retval + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.password != "": + retval += "# Root password\nrootpw%s %s\n" % (self._getArgsAsStr(), self.password) + + return retval + + def _getParser(self): + op = KSOptionParser() + op.add_option("--iscrypted", dest="isCrypted", action="store_true", + default=False) + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + self._setToSelf(self.op, opts) + + if len(extra) != 1: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("A single argument is expected for the %s command") % "rootpw") + + self.password = extra[0] + return self + +class F8_RootPw(FC3_RootPw): + removedKeywords = FC3_RootPw.removedKeywords + removedAttrs = FC3_RootPw.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + FC3_RootPw.__init__(self, writePriority, *args, **kwargs) + self.lock = kwargs.get("lock", False) + + def _getArgsAsStr(self): + retval = FC3_RootPw._getArgsAsStr(self) + + if self.lock: + retval += " --lock" + + if not self.isCrypted: + retval += " --plaintext" + + return retval + + def _getParser(self): + op = FC3_RootPw._getParser(self) + op.add_option("--lock", dest="lock", action="store_true", default=False) + op.add_option("--plaintext", dest="isCrypted", action="store_false") + return op diff --git a/mic/pykickstart/commands/selinux.py b/mic/pykickstart/commands/selinux.py new file mode 100644 index 0000000..9f8059c --- /dev/null +++ b/mic/pykickstart/commands/selinux.py @@ -0,0 +1,64 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.constants import * +from pykickstart.options import * + +class FC3_SELinux(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.selinux = kwargs.get("selinux", None) + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if not retval and self.selinux is None: + return "" + + retval += "# SELinux configuration\n" + + if self.selinux == SELINUX_DISABLED: + retval += "selinux --disabled\n" + elif self.selinux == SELINUX_ENFORCING: + retval += "selinux --enforcing\n" + elif self.selinux == SELINUX_PERMISSIVE: + retval += "selinux --permissive\n" + + return retval + + def _getParser(self): + op = KSOptionParser() + op.add_option("--disabled", dest="selinux", action="store_const", + const=SELINUX_DISABLED) + op.add_option("--enforcing", dest="selinux", action="store_const", + const=SELINUX_ENFORCING) + op.add_option("--permissive", dest="selinux", action="store_const", + const=SELINUX_PERMISSIVE) + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + self._setToSelf(self.op, opts) + return self diff --git a/mic/pykickstart/commands/services.py b/mic/pykickstart/commands/services.py new file mode 100644 index 0000000..2e0eab8 --- /dev/null +++ b/mic/pykickstart/commands/services.py @@ -0,0 +1,71 @@ +# +# Chris Lumens +# +# Copyright 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC6_Services(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.disabled = kwargs.get("disabled", []) + self.enabled = kwargs.get("enabled", []) + + def __str__(self): + retval = KickstartCommand.__str__(self) + args = "" + + if len(self.disabled) > 0: + args += " --disabled=\"%s\"" % ",".join(self.disabled) + if len(self.enabled) > 0: + args += " --enabled=\"%s\"" % ",".join(self.enabled) + + if args != "": + retval += "# System services\nservices%s\n" % args + + return retval + + def _getParser(self): + def services_cb (option, opt_str, value, parser): + for d in value.split(','): + parser.values.ensure_value(option.dest, []).append(d.strip()) + + op = KSOptionParser() + op.add_option("--disabled", dest="disabled", action="callback", + callback=services_cb, nargs=1, type="string") + op.add_option("--enabled", dest="enabled", action="callback", + callback=services_cb, nargs=1, type="string") + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + self._setToSelf(self.op, opts) + + if len(self.disabled) == 0 and len(self.enabled) == 0: + raise KickstartParseError, formatErrorMsg(self.lineno, msg=_("One of --disabled or --enabled must be provided.")) + + return self diff --git a/mic/pykickstart/commands/skipx.py b/mic/pykickstart/commands/skipx.py new file mode 100644 index 0000000..36d1a8d --- /dev/null +++ b/mic/pykickstart/commands/skipx.py @@ -0,0 +1,54 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC3_SkipX(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + self.skipx = kwargs.get("skipx", False) + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.skipx: + retval += "# Do not configure the X Window System\nskipx\n" + + return retval + + def _getParser(self): + op = KSOptionParser() + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + if len(extra) > 0: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s does not take any arguments") % "skipx") + + self.skipx = True + return self diff --git a/mic/pykickstart/commands/sshpw.py b/mic/pykickstart/commands/sshpw.py new file mode 100644 index 0000000..e7867eb --- /dev/null +++ b/mic/pykickstart/commands/sshpw.py @@ -0,0 +1,105 @@ +# +# Peter Jones +# +# Copyright 2009 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class F13_SshPwData(BaseData): + removedKeywords = BaseData.removedKeywords + removedAttrs = BaseData.removedAttrs + + def __init__(self, *args, **kwargs): + BaseData.__init__(self, *args, **kwargs) + self.username = kwargs.get("username", None) + self.isCrypted = kwargs.get("isCrypted", False) + self.password = kwargs.get("password", "") + self.lock = kwargs.get("lock", False) + + def __eq__(self, y): + return self.username == y.username + + def __str__(self): + retval = BaseData.__str__(self) + + retval += "sshpw" + retval += self._getArgsAsStr() + '\n' + + return retval + + def _getArgsAsStr(self): + retval = "" + + retval += " --username=%s" % self.username + if self.lock: + retval += " --lock" + if self.isCrypted: + retval += " --iscrypted" + else: + retval += " --plaintext" + + retval += " %s" % self.password + return retval + +class F13_SshPw(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.sshUserList = kwargs.get("sshUserList", []) + + def __str__(self): + retval = "" + for user in self.sshUserList: + retval += user.__str__() + + return retval + + def _getParser(self): + op = KSOptionParser() + op.add_option("--username", dest="username", required=True) + op.add_option("--iscrypted", dest="isCrypted", action="store_true", + default=False) + op.add_option("--plaintext", dest="isCrypted", action="store_false") + op.add_option("--lock", dest="lock", action="store_true", default=False) + return op + + def parse(self, args): + ud = self.handler.SshPwData() + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + self._setToObj(self.op, opts, ud) + ud.lineno = self.lineno + + if len(extra) != 1: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("A single argument is expected for the %s command") % "sshpw") + ud.password = extra[0] + + if ud in self.dataList(): + warnings.warn(_("An ssh user with the name %s has already been defined.") % ud.name) + + return ud + + def dataList(self): + return self.sshUserList diff --git a/mic/pykickstart/commands/timezone.py b/mic/pykickstart/commands/timezone.py new file mode 100644 index 0000000..f5441de --- /dev/null +++ b/mic/pykickstart/commands/timezone.py @@ -0,0 +1,86 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC3_Timezone(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.isUtc = kwargs.get("isUtc", False) + self.timezone = kwargs.get("timezone", "") + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.timezone != "": + if self.isUtc: + utc = "--utc" + else: + utc = "" + + retval += "# System timezone\ntimezone %s %s\n" %(utc, self.timezone) + + return retval + + def _getParser(self): + op = KSOptionParser() + op.add_option("--utc", dest="isUtc", action="store_true", default=False) + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + self._setToSelf(self.op, opts) + + if len(extra) != 1: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("A single argument is expected for the %s command") % "timezone") + + self.timezone = extra[0] + return self + +class FC6_Timezone(FC3_Timezone): + removedKeywords = FC3_Timezone.removedKeywords + removedAttrs = FC3_Timezone.removedAttrs + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.timezone != "": + if self.isUtc: + utc = "--isUtc" + else: + utc = "" + + retval += "# System timezone\ntimezone %s %s\n" %(utc, self.timezone) + + return retval + + def _getParser(self): + op = FC3_Timezone._getParser(self) + op.add_option("--utc", "--isUtc", dest="isUtc", action="store_true", default=False) + return op diff --git a/mic/pykickstart/commands/updates.py b/mic/pykickstart/commands/updates.py new file mode 100644 index 0000000..53ec49f --- /dev/null +++ b/mic/pykickstart/commands/updates.py @@ -0,0 +1,60 @@ +# +# Chris Lumens +# +# Copyright 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class F7_Updates(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + self.url = kwargs.get("url", "") + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.url == "floppy": + retval += "updates\n" + elif self.url != "": + retval += "updates %s\n" % self.url + + return retval + + def _getParser(self): + op = KSOptionParser() + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + + if len(extra) > 1: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s only takes one argument") % "updates") + elif len(extra) == 0: + self.url = "floppy" + else: + self.url = extra[0] + + return self diff --git a/mic/pykickstart/commands/upgrade.py b/mic/pykickstart/commands/upgrade.py new file mode 100644 index 0000000..a68a82d --- /dev/null +++ b/mic/pykickstart/commands/upgrade.py @@ -0,0 +1,106 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC3_Upgrade(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.upgrade = kwargs.get("upgrade", None) + self.op = self._getParser() + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.upgrade is None: + return retval + + if self.upgrade: + retval += "# Upgrade existing installation\nupgrade\n" + else: + retval += "# Install OS instead of upgrade\ninstall\n" + + return retval + + def _getParser(self): + op = KSOptionParser() + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + + if len(extra) > 0: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s does not take any arguments") % "upgrade") + + if self.currentCmd == "upgrade": + self.upgrade = True + else: + self.upgrade = False + + return self + +class F11_Upgrade(FC3_Upgrade): + removedKeywords = FC3_Upgrade.removedKeywords + removedAttrs = FC3_Upgrade.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + FC3_Upgrade.__init__(self, writePriority, *args, **kwargs) + + self.op = self._getParser() + self.root_device = kwargs.get("root_device", None) + + def __str__(self): + if self.upgrade and (self.root_device is not None): + retval = KickstartCommand.__str__(self) + retval += "# Upgrade existing installation\nupgrade --root-device=%s\n" % self.root_device + else: + retval = FC3_Upgrade.__str__(self) + + return retval + + def _getParser(self): + op = KSOptionParser() + op.add_option("--root-device", dest="root_device") + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + + if len(extra) > 0: + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s does not take any arguments") % "upgrade") + + 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 + else: + self.upgrade = False + + return self diff --git a/mic/pykickstart/commands/user.py b/mic/pykickstart/commands/user.py new file mode 100644 index 0000000..189dc75 --- /dev/null +++ b/mic/pykickstart/commands/user.py @@ -0,0 +1,173 @@ +# +# Chris Lumens +# +# Copyright 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.constants import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +import warnings +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC6_UserData(BaseData): + removedKeywords = BaseData.removedKeywords + removedAttrs = BaseData.removedAttrs + + def __init__(self, *args, **kwargs): + BaseData.__init__(self, *args, **kwargs) + self.groups = kwargs.get("groups", []) + self.homedir = kwargs.get("homedir", "") + self.isCrypted = kwargs.get("isCrypted", False) + self.name = kwargs.get("name", "") + self.password = kwargs.get("password", "") + self.shell = kwargs.get("shell", "") + self.uid = kwargs.get("uid", None) + + def __eq__(self, y): + return self.name == y.name + + def __str__(self): + retval = BaseData.__str__(self) + + if self.uid != "": + retval += "user" + retval += self._getArgsAsStr() + "\n" + + return retval + + def _getArgsAsStr(self): + retval = "" + + if len(self.groups) > 0: + retval += " --groups=%s" % ",".join(self.groups) + if self.homedir: + retval += " --homedir=%s" % self.homedir + if self.name: + retval += " --name=%s" % self.name + if self.password: + retval += " --password=%s" % self.password + if self.isCrypted: + retval += " --iscrypted" + if self.shell: + retval += " --shell=%s" % self.shell + if self.uid: + retval += " --uid=%s" % self.uid + + return retval + +class F8_UserData(FC6_UserData): + removedKeywords = FC6_UserData.removedKeywords + removedAttrs = FC6_UserData.removedAttrs + + def __init__(self, *args, **kwargs): + FC6_UserData.__init__(self, *args, **kwargs) + self.lock = kwargs.get("lock", False) + + def _getArgsAsStr(self): + retval = FC6_UserData._getArgsAsStr(self) + + if self.lock: + retval += " --lock" + + return retval + +class F12_UserData(F8_UserData): + removedKeywords = F8_UserData.removedKeywords + removedAttrs = F8_UserData.removedAttrs + + def __init__(self, *args, **kwargs): + F8_UserData.__init__(self, *args, **kwargs) + self.gecos = kwargs.get("gecos", "") + + def _getArgsAsStr(self): + retval = F8_UserData._getArgsAsStr(self) + + if self.gecos: + retval += " --gecos=\"%s\"" % (self.gecos,) + + return retval + +class FC6_User(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.userList = kwargs.get("userList", []) + + def __str__(self): + retval = "" + for user in self.userList: + retval += user.__str__() + + return retval + + def _getParser(self): + def groups_cb (option, opt_str, value, parser): + for d in value.split(','): + parser.values.ensure_value(option.dest, []).append(d) + + op = KSOptionParser() + op.add_option("--groups", dest="groups", action="callback", + callback=groups_cb, nargs=1, type="string") + op.add_option("--homedir") + op.add_option("--iscrypted", dest="isCrypted", action="store_true", + default=False) + op.add_option("--name", required=1) + op.add_option("--password") + op.add_option("--shell") + op.add_option("--uid", type="int") + return op + + def parse(self, args): + ud = self.handler.UserData() + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + self._setToObj(self.op, opts, ud) + ud.lineno = self.lineno + + # Check for duplicates in the data list. + if ud in self.dataList(): + warnings.warn(_("A user with the name %s has already been defined.") % ud.name) + + return ud + + def dataList(self): + return self.userList + +class F8_User(FC6_User): + removedKeywords = FC6_User.removedKeywords + removedAttrs = FC6_User.removedAttrs + + def _getParser(self): + op = FC6_User._getParser(self) + op.add_option("--lock", action="store_true", default=False) + op.add_option("--plaintext", dest="isCrypted", action="store_false") + return op + +class F12_User(F8_User): + removedKeywords = F8_User.removedKeywords + removedAttrs = F8_User.removedAttrs + + def _getParser(self): + op = F8_User._getParser(self) + op.add_option("--gecos", type="string") + return op diff --git a/mic/pykickstart/commands/vnc.py b/mic/pykickstart/commands/vnc.py new file mode 100644 index 0000000..200ccfb --- /dev/null +++ b/mic/pykickstart/commands/vnc.py @@ -0,0 +1,114 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.errors import * +from pykickstart.options import * + +class FC3_Vnc(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.enabled = kwargs.get("enabled", False) + self.password = kwargs.get("password", "") + self.connect = kwargs.get("connect", "") + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if not self.enabled: + return retval + + retval += "vnc" + + if self.connect != "": + retval += " --connect=%s" % self.connect + if self.password != "": + retval += " --password=%s" % self.password + + return retval + "\n" + + def _getParser(self): + op = KSOptionParser() + op.add_option("--connect") + op.add_option("--password", dest="password") + return op + + def parse(self, args): + self.enabled = True + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + self._setToSelf(self.op, opts) + return self + +class FC6_Vnc(FC3_Vnc): + removedKeywords = FC3_Vnc.removedKeywords + ["connect"] + removedAttrs = FC3_Vnc.removedAttrs + ["connect"] + + def __init__(self, writePriority=0, host="", port="", *args, **kwargs): + FC3_Vnc.__init__(self, writePriority, *args, **kwargs) + self.deleteRemovedAttrs() + + self.host = kwargs.get("host", "") + self.port = kwargs.get("port", "") + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if not self.enabled: + return retval + + retval += "vnc" + + if self.host != "": + retval += " --host=%s" % self.host + + if self.port != "": + retval += " --port=%s" % self.port + if self.password != "": + retval += " --password=%s" % self.password + + return retval + "\n" + + def _getParser(self): + def connect_cb (option, opt_str, value, parser): + cargs = value.split(":") + parser.values.ensure_value("host", cargs[0]) + + if len(cargs) > 1: + parser.values.ensure_value("port", cargs[1]) + + op = FC3_Vnc._getParser(self) + op.add_option("--connect", action="callback", callback=connect_cb, + nargs=1, type="string") + op.add_option("--host", dest="host") + op.add_option("--port", dest="port") + return op + +class F9_Vnc(FC6_Vnc): + removedKeywords = FC6_Vnc.removedKeywords + removedAttrs = FC6_Vnc.removedAttrs + + def _getParser(self): + op = FC6_Vnc._getParser(self) + op.remove_option("--connect") + return op diff --git a/mic/pykickstart/commands/volgroup.py b/mic/pykickstart/commands/volgroup.py new file mode 100644 index 0000000..255c47f --- /dev/null +++ b/mic/pykickstart/commands/volgroup.py @@ -0,0 +1,102 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.options import * + +import gettext +import warnings +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC3_VolGroupData(BaseData): + removedKeywords = BaseData.removedKeywords + removedAttrs = BaseData.removedAttrs + + def __init__(self, *args, **kwargs): + BaseData.__init__(self, *args, **kwargs) + self.format = kwargs.get("format", True) + self.pesize = kwargs.get("pesize", 32768) + self.preexist = kwargs.get("preexist", False) + self.vgname = kwargs.get("vgname", "") + self.physvols = kwargs.get("physvols", []) + + def __eq__(self, y): + return self.vgname == y.vgname + + def __str__(self): + retval = BaseData.__str__(self) + retval += "volgroup %s" % self.vgname + + if not self.format: + retval += " --noformat" + if self.pesize != 0: + retval += " --pesize=%d" % self.pesize + if self.preexist: + retval += " --useexisting" + + return retval + " " + " ".join(self.physvols) + "\n" + +class FC3_VolGroup(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=132, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.vgList = kwargs.get("vgList", []) + + def __str__(self): + retval = "" + for vg in self.vgList: + retval += vg.__str__() + + return retval + + def _getParser(self): + # Have to be a little more complicated to set two values. + def vg_cb (option, opt_str, value, parser): + parser.values.format = False + parser.values.preexist = True + + op = KSOptionParser() + op.add_option("--noformat", action="callback", callback=vg_cb, + dest="format", default=True, nargs=0) + op.add_option("--pesize", dest="pesize", type="int", nargs=1, + default=32768) + op.add_option("--useexisting", dest="preexist", action="store_true", + default=False) + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + vg = self.handler.VolGroupData() + self._setToObj(self.op, opts, vg) + vg.lineno = self.lineno + vg.vgname = extra[0] + vg.physvols = extra[1:] + + # Check for duplicates in the data list. + if vg in self.dataList(): + warnings.warn(_("A volgroup with the name %s has already been defined.") % vg.vgname) + + return vg + + def dataList(self): + return self.vgList diff --git a/mic/pykickstart/commands/xconfig.py b/mic/pykickstart/commands/xconfig.py new file mode 100644 index 0000000..644ee86 --- /dev/null +++ b/mic/pykickstart/commands/xconfig.py @@ -0,0 +1,184 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007, 2008 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.errors import * +from pykickstart.options import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC3_XConfig(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=0, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.card = kwargs.get("card", "") + self.defaultdesktop = kwargs.get("defaultdesktop", "") + self.depth = kwargs.get("depth", 0) + self.hsync = kwargs.get("hsync", "") + self.monitor = kwargs.get("monitor", "") + self.noProbe = kwargs.get("noProbe", False) + self.resolution = kwargs.get("resolution", "") + self.server = kwargs.get("server", "") + self.startX = kwargs.get("startX", False) + self.videoRam = kwargs.get("videoRam", "") + self.vsync = kwargs.get("vsync", "") + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.card != "": + retval += " --card=%s" % self.card + if self.defaultdesktop != "": + retval += " --defaultdesktop=%s" % self.defaultdesktop + if self.depth != 0: + retval += " --depth=%d" % self.depth + if self.hsync != "": + retval += " --hsync=%s" % self.hsync + if self.monitor != "": + retval += " --monitor=%s" % self.monitor + if self.noProbe: + retval += " --noprobe" + if self.resolution != "": + retval += " --resolution=%s" % self.resolution + if self.server != "": + retval += " --server=%s" % self.server + if self.startX: + retval += " --startxonboot" + if self.videoRam != "": + retval += " --videoram=%s" % self.videoRam + if self.vsync != "": + retval += " --vsync=%s" % self.vsync + + if retval != "": + retval = "# X Window System configuration information\nxconfig %s\n" % retval + + return retval + + def _getParser(self): + op = KSOptionParser() + op.add_option("--card") + op.add_option("--defaultdesktop") + op.add_option("--depth", action="store", type="int", nargs=1) + op.add_option("--hsync") + op.add_option("--monitor") + op.add_option("--noprobe", dest="noProbe", action="store_true", + default=False) + op.add_option("--resolution") + op.add_option("--server") + op.add_option("--startxonboot", dest="startX", action="store_true", + default=False) + op.add_option("--videoram", dest="videoRam") + op.add_option("--vsync") + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + if extra: + mapping = {"command": "xconfig", "options": extra} + raise KickstartValueError, formatErrorMsg(self.lineno, msg=_("Unexpected arguments to %(command)s command: %(options)s") % mapping) + + self._setToSelf(self.op, opts) + return self + +class FC6_XConfig(FC3_XConfig): + removedKeywords = FC3_XConfig.removedKeywords + ["card", "hsync", "monitor", "noProbe", "vsync"] + removedAttrs = FC3_XConfig.removedAttrs + ["card", "hsync", "monitor", "noProbe", "vsync"] + + def __init__(self, writePriority=0, *args, **kwargs): + FC3_XConfig.__init__(self, writePriority, *args, **kwargs) + self.deleteRemovedAttrs() + + self.driver = kwargs.get("driver", "") + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if hasattr(self, "driver") and self.driver != "": + retval += " --driver=%s" % self.driver + if self.defaultdesktop != "": + retval += " --defaultdesktop=%s" % self.defaultdesktop + if self.depth != 0: + retval += " --depth=%d" % self.depth + if hasattr(self, "resolution") and self.resolution != "": + retval += " --resolution=%s" % self.resolution + if self.startX: + retval += " --startxonboot" + if hasattr(self, "videoRam") and self.videoRam != "": + retval += " --videoram=%s" % self.videoRam + + if retval != "": + retval = "# X Window System configuration information\nxconfig %s\n" % retval + + return retval + + def _getParser(self): + op = FC3_XConfig._getParser(self) + op.add_option("--card", deprecated=1) + op.add_option("--driver", dest="driver") + op.add_option("--hsync", deprecated=1) + op.add_option("--monitor", deprecated=1) + op.add_option("--noprobe", deprecated=1) + op.add_option("--vsync", deprecated=1) + return op + +class F9_XConfig(FC6_XConfig): + removedKeywords = FC6_XConfig.removedKeywords + removedAttrs = FC6_XConfig.removedAttrs + + def _getParser(self): + op = FC6_XConfig._getParser(self) + op.remove_option("--card") + op.remove_option("--hsync") + op.remove_option("--monitor") + op.remove_option("--noprobe") + op.remove_option("--vsync") + return op + +class F10_XConfig(F9_XConfig): + removedKeywords = F9_XConfig.removedKeywords + ["driver", "resolution", "videoRam"] + removedAttrs = F9_XConfig.removedAttrs + ["driver", "resolution", "videoRam"] + + def __init__(self, writePriority=0, *args, **kwargs): + F9_XConfig.__init__(self, writePriority, *args, **kwargs) + self.deleteRemovedAttrs() + + def _getParser(self): + op = F9_XConfig._getParser(self) + op.add_option("--driver", deprecated=1) + op.add_option("--depth", deprecated=1) + op.add_option("--resolution", deprecated=1) + op.add_option("--videoram", deprecated=1) + return op + +class F14_XConfig(F10_XConfig): + removedKeywords = F10_XConfig.removedKeywords + removedAttrs = F10_XConfig.removedAttrs + + def _getParser(self): + op = F10_XConfig._getParser(self) + op.remove_option("--driver") + op.remove_option("--depth") + op.remove_option("--resolution") + op.remove_option("--videoram") + return op diff --git a/mic/pykickstart/commands/zerombr.py b/mic/pykickstart/commands/zerombr.py new file mode 100644 index 0000000..79555a9 --- /dev/null +++ b/mic/pykickstart/commands/zerombr.py @@ -0,0 +1,69 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +import warnings + +from pykickstart.base import * +from pykickstart.options import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC3_ZeroMbr(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=110, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + self.zerombr = kwargs.get("zerombr", False) + + def __str__(self): + retval = KickstartCommand.__str__(self) + + if self.zerombr: + retval += "# Clear the Master Boot Record\nzerombr\n" + + return retval + + def _getParser(self): + op = KSOptionParser() + return op + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + + if len(extra) > 0: + warnings.warn(_("Ignoring deprecated option on line %s: The zerombr command no longer takes any options. In future releases, this will result in a fatal error from kickstart. Please modify your kickstart file to remove any options.") % self.lineno, DeprecationWarning) + + self.zerombr = True + return self + +class F9_ZeroMbr(FC3_ZeroMbr): + removedKeywords = FC3_ZeroMbr.removedKeywords + removedAttrs = FC3_ZeroMbr.removedAttrs + + def parse(self, args): + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + + if len(extra) > 0: + raise KickstartParseError, formatErrorMsg(self.lineno, msg=_("Kickstart command %s does not take any arguments") % "zerombr") + + self.zerombr = True + return self diff --git a/mic/pykickstart/commands/zfcp.py b/mic/pykickstart/commands/zfcp.py new file mode 100644 index 0000000..1ed2694 --- /dev/null +++ b/mic/pykickstart/commands/zfcp.py @@ -0,0 +1,134 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.options import * + +import gettext +import warnings +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class FC3_ZFCPData(BaseData): + removedKeywords = BaseData.removedKeywords + removedAttrs = BaseData.removedAttrs + + def __init__(self, *args, **kwargs): + BaseData.__init__(self, *args, **kwargs) + self.devnum = kwargs.get("devnum", "") + self.wwpn = kwargs.get("wwpn", "") + self.fcplun = kwargs.get("fcplun", "") + self.scsiid = kwargs.get("scsiid", "") + self.scsilun = kwargs.get("scsilun", "") + + def __eq__(self, y): + return self.devnum == y.devnum and self.wwpn == y.wwpn and \ + self.fcplun == y.fcplun and self.scsiid == y.scsiid and \ + self.scsilun == y.scsilun + + def __str__(self): + retval = BaseData.__str__(self) + retval += "zfcp" + + if self.devnum != "": + retval += " --devnum=%s" % self.devnum + if self.wwpn != "": + retval += " --wwpn=%s" % self.wwpn + if self.fcplun != "": + retval += " --fcplun=%s" % self.fcplun + if hasattr(self, "scsiid") and self.scsiid != "": + retval += " --scsiid=%s" % self.scsiid + if hasattr(self, "scsilun") and self.scsilun != "": + retval += " --scsilun=%s" % self.scsilun + + return retval + "\n" + +class F12_ZFCPData(FC3_ZFCPData): + removedKeywords = FC3_ZFCPData.removedKeywords + ["scsiid", "scsilun"] + removedAttrs = FC3_ZFCPData.removedAttrs + ["scsiid", "scsilun"] + + def __init__(self, *args, **kwargs): + FC3_ZFCPData.__init__(self, *args, **kwargs) + self.deleteRemovedAttrs() + +F14_ZFCPData = F12_ZFCPData + +class FC3_ZFCP(KickstartCommand): + removedKeywords = KickstartCommand.removedKeywords + removedAttrs = KickstartCommand.removedAttrs + + def __init__(self, writePriority=71, *args, **kwargs): + KickstartCommand.__init__(self, writePriority, *args, **kwargs) + self.op = self._getParser() + + self.zfcp = kwargs.get("zfcp", []) + + def __str__(self): + retval = "" + for zfcp in self.zfcp: + retval += zfcp.__str__() + + return retval + + def _getParser(self): + op = KSOptionParser() + op.add_option("--devnum", dest="devnum", required=1) + op.add_option("--fcplun", dest="fcplun", required=1) + op.add_option("--scsiid", dest="scsiid", required=1) + op.add_option("--scsilun", dest="scsilun", required=1) + op.add_option("--wwpn", dest="wwpn", required=1) + return op + + def parse(self, args): + zd = self.handler.ZFCPData() + (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno) + self._setToObj(self.op, opts, zd) + zd.lineno = self.lineno + + # Check for duplicates in the data list. + if zd in self.dataList(): + warnings.warn(_("A zfcp with this information has already been defined.")) + + return zd + + def dataList(self): + return self.zfcp + +class F12_ZFCP(FC3_ZFCP): + removedKeywords = FC3_ZFCP.removedKeywords + removedAttrs = FC3_ZFCP.removedAttrs + ["scsiid", "scsilun"] + + def __init__(self, *args, **kwargs): + FC3_ZFCP.__init__(self, *args, **kwargs) + self.deleteRemovedAttrs() + + def _getParser(self): + op = FC3_ZFCP._getParser(self) + op.add_option("--scsiid", deprecated=1) + op.add_option("--scsilun", deprecated=1) + return op + +class F14_ZFCP(F12_ZFCP): + removedKeywords = F12_ZFCP.removedKeywords + removedAttrs = F12_ZFCP.removedAttrs + + def _getParser(self): + op = F12_ZFCP._getParser(self) + op.remove_option("--scsiid") + op.remove_option("--scsilun") + return op diff --git a/mic/pykickstart/constants.py b/mic/pykickstart/constants.py new file mode 100644 index 0000000..5e12fc8 --- /dev/null +++ b/mic/pykickstart/constants.py @@ -0,0 +1,57 @@ +# +# Chris Lumens +# +# Copyright 2005-2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +CLEARPART_TYPE_LINUX = 0 +CLEARPART_TYPE_ALL = 1 +CLEARPART_TYPE_NONE = 2 + +DISPLAY_MODE_CMDLINE = 0 +DISPLAY_MODE_GRAPHICAL = 1 +DISPLAY_MODE_TEXT = 2 + +FIRSTBOOT_DEFAULT = 0 +FIRSTBOOT_SKIP = 1 +FIRSTBOOT_RECONFIG = 2 + +KS_MISSING_PROMPT = 0 +KS_MISSING_IGNORE = 1 + +SELINUX_DISABLED = 0 +SELINUX_ENFORCING = 1 +SELINUX_PERMISSIVE = 2 + +KS_SCRIPT_PRE = 0 +KS_SCRIPT_POST = 1 +KS_SCRIPT_TRACEBACK = 2 + +KS_WAIT = 0 +KS_REBOOT = 1 +KS_SHUTDOWN = 2 + +KS_INSTKEY_SKIP = -99 + +BOOTPROTO_DHCP = "dhcp" +BOOTPROTO_BOOTP = "bootp" +BOOTPROTO_STATIC = "static" +BOOTPROTO_QUERY = "query" +BOOTPROTO_IBFT = "ibft" + +GROUP_REQUIRED = 0 +GROUP_DEFAULT = 1 +GROUP_ALL = 2 diff --git a/mic/pykickstart/errors.py b/mic/pykickstart/errors.py new file mode 100644 index 0000000..a234d99 --- /dev/null +++ b/mic/pykickstart/errors.py @@ -0,0 +1,103 @@ +# +# errors.py: Kickstart error handling. +# +# Chris Lumens +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +""" +Error handling classes and functions. + +This module exports a single function: + + formatErrorMsg - Properly formats an error message. + +It also exports several exception classes: + + KickstartError - A generic exception class. + + KickstartParseError - An exception for errors relating to parsing. + + KickstartValueError - An exception for errors relating to option + processing. + + KickstartVersionError - An exception for errors relating to unsupported + syntax versions. +""" +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +def formatErrorMsg(lineno, msg=""): + """Properly format the error message msg for inclusion in an exception.""" + if msg != "": + mapping = {"lineno": lineno, "msg": msg} + return _("The following problem occurred on line %(lineno)s of the kickstart file:\n\n%(msg)s\n") % mapping + else: + return _("There was a problem reading from line %s of the kickstart file") % lineno + +class KickstartError(Exception): + """A generic exception class for unspecific error conditions.""" + def __init__(self, val = ""): + """Create a new KickstartError exception instance with the descriptive + message val. val should be the return value of formatErrorMsg. + """ + Exception.__init__(self) + self.value = val + + def __str__ (self): + return self.value + +class KickstartParseError(KickstartError): + """An exception class for errors when processing the input file, such as + unknown options, commands, or sections. + """ + def __init__(self, msg): + """Create a new KickstartParseError exception instance with the + descriptive message val. val should be the return value of + formatErrorMsg. + """ + KickstartError.__init__(self, msg) + + def __str__(self): + return self.value + +class KickstartValueError(KickstartError): + """An exception class for errors when processing arguments to commands, + such as too many arguments, too few arguments, or missing required + arguments. + """ + def __init__(self, msg): + """Create a new KickstartValueError exception instance with the + descriptive message val. val should be the return value of + formatErrorMsg. + """ + KickstartError.__init__(self, msg) + + def __str__ (self): + return self.value + +class KickstartVersionError(KickstartError): + """An exception class for errors related to using an incorrect version of + kickstart syntax. + """ + def __init__(self, msg): + """Create a new KickstartVersionError exception instance with the + descriptive message val. val should be the return value of + formatErrorMsg. + """ + KickstartError.__init__(self, msg) + + def __str__ (self): + return self.value diff --git a/mic/pykickstart/handlers/__init__.py b/mic/pykickstart/handlers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/mic/pykickstart/handlers/control.py b/mic/pykickstart/handlers/control.py new file mode 100644 index 0000000..d8c8f2b --- /dev/null +++ b/mic/pykickstart/handlers/control.py @@ -0,0 +1,1307 @@ +# +# Chris Lumens +# +# Copyright 2007, 2008, 2009, 2010 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.version import * +from pykickstart.commands import * + +# This map is keyed on kickstart syntax version as provided by +# pykickstart.version. Within each sub-dict is a mapping from command name +# to the class that handles it. This is an onto mapping - that is, multiple +# command names can map to the same class. However, the Handler will ensure +# that only one instance of each class ever exists. +commandMap = { + FC3: { + "auth": authconfig.FC3_Authconfig, + "authconfig": authconfig.FC3_Authconfig, + "autopart": autopart.FC3_AutoPart, + "autostep": autostep.FC3_AutoStep, + "bootloader": bootloader.FC3_Bootloader, + "cdrom": method.FC3_Method, + "clearpart": clearpart.FC3_ClearPart, + "cmdline": displaymode.FC3_DisplayMode, + "device": device.FC3_Device, + "deviceprobe": deviceprobe.FC3_DeviceProbe, + "driverdisk": driverdisk.FC3_DriverDisk, + "firewall": firewall.FC3_Firewall, + "firstboot": firstboot.FC3_Firstboot, + "graphical": displaymode.FC3_DisplayMode, + "halt": reboot.FC3_Reboot, + "harddrive": method.FC3_Method, + "ignoredisk": ignoredisk.FC3_IgnoreDisk, + "install": upgrade.FC3_Upgrade, + "interactive": interactive.FC3_Interactive, + "keyboard": keyboard.FC3_Keyboard, + "lang": lang.FC3_Lang, + "langsupport": langsupport.FC3_LangSupport, + "lilo": bootloader.FC3_Bootloader, + "lilocheck": lilocheck.FC3_LiloCheck, + "logvol": logvol.FC3_LogVol, + "monitor": monitor.FC3_Monitor, + "mouse": mouse.FC3_Mouse, + "network": network.FC3_Network, + "nfs": method.FC3_Method, + "part": partition.FC3_Partition, + "partition": partition.FC3_Partition, + "poweroff": reboot.FC3_Reboot, + "raid": raid.FC3_Raid, + "reboot": reboot.FC3_Reboot, + "rootpw": rootpw.FC3_RootPw, + "selinux": selinux.FC3_SELinux, + "shutdown": reboot.FC3_Reboot, + "skipx": skipx.FC3_SkipX, + "text": displaymode.FC3_DisplayMode, + "timezone": timezone.FC3_Timezone, + "upgrade": upgrade.FC3_Upgrade, + "url": method.FC3_Method, + "vnc": vnc.FC3_Vnc, + "volgroup": volgroup.FC3_VolGroup, + "xconfig": xconfig.FC3_XConfig, + "zerombr": zerombr.FC3_ZeroMbr, + "zfcp": zfcp.FC3_ZFCP, + }, + + # based on fc3 + FC4: { + "auth": authconfig.FC3_Authconfig, + "authconfig": authconfig.FC3_Authconfig, + "autopart": autopart.FC3_AutoPart, + "autostep": autostep.FC3_AutoStep, + "bootloader": bootloader.FC4_Bootloader, + "cdrom": method.FC3_Method, + "clearpart": clearpart.FC3_ClearPart, + "cmdline": displaymode.FC3_DisplayMode, + "device": device.FC3_Device, + "deviceprobe": deviceprobe.FC3_DeviceProbe, + "driverdisk": driverdisk.FC4_DriverDisk, + "firewall": firewall.FC3_Firewall, + "firstboot": firstboot.FC3_Firstboot, + "graphical": displaymode.FC3_DisplayMode, + "halt": reboot.FC3_Reboot, + "harddrive": method.FC3_Method, + "ignoredisk": ignoredisk.FC3_IgnoreDisk, + "install": upgrade.FC3_Upgrade, + "interactive": interactive.FC3_Interactive, + "keyboard": keyboard.FC3_Keyboard, + "lang": lang.FC3_Lang, + "langsupport": langsupport.FC3_LangSupport, + "logvol": logvol.FC4_LogVol, + "mediacheck": mediacheck.FC4_MediaCheck, + "monitor": monitor.FC3_Monitor, + "mouse": mouse.FC3_Mouse, + "network": network.FC4_Network, + "nfs": method.FC3_Method, + "part": partition.FC4_Partition, + "partition": partition.FC4_Partition, + "poweroff": reboot.FC3_Reboot, + "raid": raid.FC4_Raid, + "reboot": reboot.FC3_Reboot, + "rootpw": rootpw.FC3_RootPw, + "selinux": selinux.FC3_SELinux, + "shutdown": reboot.FC3_Reboot, + "skipx": skipx.FC3_SkipX, + "text": displaymode.FC3_DisplayMode, + "timezone": timezone.FC3_Timezone, + "upgrade": upgrade.FC3_Upgrade, + "url": method.FC3_Method, + "vnc": vnc.FC3_Vnc, + "volgroup": volgroup.FC3_VolGroup, + "xconfig": xconfig.FC3_XConfig, + "zerombr": zerombr.FC3_ZeroMbr, + "zfcp": zfcp.FC3_ZFCP, + }, + + # based on fc4 + FC5: { + "auth": authconfig.FC3_Authconfig, + "authconfig": authconfig.FC3_Authconfig, + "autopart": autopart.FC3_AutoPart, + "autostep": autostep.FC3_AutoStep, + "bootloader": bootloader.FC4_Bootloader, + "cdrom": method.FC3_Method, + "clearpart": clearpart.FC3_ClearPart, + "cmdline": displaymode.FC3_DisplayMode, + "device": device.FC3_Device, + "deviceprobe": deviceprobe.FC3_DeviceProbe, + "driverdisk": driverdisk.FC4_DriverDisk, + "firewall": firewall.FC3_Firewall, + "firstboot": firstboot.FC3_Firstboot, + "graphical": displaymode.FC3_DisplayMode, + "halt": reboot.FC3_Reboot, + "harddrive": method.FC3_Method, + "ignoredisk": ignoredisk.FC3_IgnoreDisk, + "install": upgrade.FC3_Upgrade, + "interactive": interactive.FC3_Interactive, + "keyboard": keyboard.FC3_Keyboard, + "lang": lang.FC3_Lang, + "langsupport": langsupport.FC5_LangSupport, + "logvol": logvol.FC4_LogVol, + "mediacheck": mediacheck.FC4_MediaCheck, + "monitor": monitor.FC3_Monitor, + "mouse": mouse.FC3_Mouse, + "network": network.FC4_Network, + "nfs": method.FC3_Method, + "part": partition.FC4_Partition, + "partition": partition.FC4_Partition, + "poweroff": reboot.FC3_Reboot, + "raid": raid.FC5_Raid, + "reboot": reboot.FC3_Reboot, + "rootpw": rootpw.FC3_RootPw, + "selinux": selinux.FC3_SELinux, + "shutdown": reboot.FC3_Reboot, + "skipx": skipx.FC3_SkipX, + "text": displaymode.FC3_DisplayMode, + "timezone": timezone.FC3_Timezone, + "upgrade": upgrade.FC3_Upgrade, + "url": method.FC3_Method, + "vnc": vnc.FC3_Vnc, + "volgroup": volgroup.FC3_VolGroup, + "xconfig": xconfig.FC3_XConfig, + "zerombr": zerombr.FC3_ZeroMbr, + "zfcp": zfcp.FC3_ZFCP, + }, + + # based on fc5 + FC6: { + "auth": authconfig.FC3_Authconfig, + "authconfig": authconfig.FC3_Authconfig, + "autopart": autopart.FC3_AutoPart, + "autostep": autostep.FC3_AutoStep, + "bootloader": bootloader.FC4_Bootloader, + "cdrom": method.FC6_Method, + "clearpart": clearpart.FC3_ClearPart, + "cmdline": displaymode.FC3_DisplayMode, + "device": device.FC3_Device, + "deviceprobe": deviceprobe.FC3_DeviceProbe, + "dmraid": dmraid.FC6_DmRaid, + "driverdisk": driverdisk.FC4_DriverDisk, + "firewall": firewall.FC3_Firewall, + "firstboot": firstboot.FC3_Firstboot, + "graphical": displaymode.FC3_DisplayMode, + "halt": reboot.FC6_Reboot, + "harddrive": method.FC6_Method, + "ignoredisk": ignoredisk.FC3_IgnoreDisk, + "install": upgrade.FC3_Upgrade, + "interactive": interactive.FC3_Interactive, + "iscsi": iscsi.FC6_Iscsi, + "iscsiname": iscsiname.FC6_IscsiName, + "keyboard": keyboard.FC3_Keyboard, + "lang": lang.FC3_Lang, + "langsupport": langsupport.FC5_LangSupport, + "logging": logging.FC6_Logging, + "logvol": logvol.FC4_LogVol, + "mediacheck": mediacheck.FC4_MediaCheck, + "monitor": monitor.FC6_Monitor, + "mouse": mouse.FC3_Mouse, + "multipath": multipath.FC6_MultiPath, + "network": network.FC6_Network, + "nfs": method.FC6_Method, + "part": partition.FC4_Partition, + "partition": partition.FC4_Partition, + "poweroff": reboot.FC6_Reboot, + "raid": raid.FC5_Raid, + "reboot": reboot.FC6_Reboot, + "repo": repo.FC6_Repo, + "rootpw": rootpw.FC3_RootPw, + "selinux": selinux.FC3_SELinux, + "services": services.FC6_Services, + "shutdown": reboot.FC6_Reboot, + "skipx": skipx.FC3_SkipX, + "text": displaymode.FC3_DisplayMode, + "timezone": timezone.FC6_Timezone, + "upgrade": upgrade.FC3_Upgrade, + "user": user.FC6_User, + "url": method.FC6_Method, + "vnc": vnc.FC6_Vnc, + "volgroup": volgroup.FC3_VolGroup, + "xconfig": xconfig.FC6_XConfig, + "zerombr": zerombr.FC3_ZeroMbr, + "zfcp": zfcp.FC3_ZFCP, + }, + + # based on fc6 + F7: { + "auth": authconfig.FC3_Authconfig, + "authconfig": authconfig.FC3_Authconfig, + "autopart": autopart.FC3_AutoPart, + "autostep": autostep.FC3_AutoStep, + "bootloader": bootloader.FC4_Bootloader, + "cdrom": method.FC6_Method, + "clearpart": clearpart.FC3_ClearPart, + "cmdline": displaymode.FC3_DisplayMode, + "device": device.FC3_Device, + "deviceprobe": deviceprobe.FC3_DeviceProbe, + "dmraid": dmraid.FC6_DmRaid, + "driverdisk": driverdisk.FC4_DriverDisk, + "firewall": firewall.FC3_Firewall, + "firstboot": firstboot.FC3_Firstboot, + "graphical": displaymode.FC3_DisplayMode, + "halt": reboot.FC6_Reboot, + "harddrive": method.FC6_Method, + "ignoredisk": ignoredisk.FC3_IgnoreDisk, + "install": upgrade.FC3_Upgrade, + "interactive": interactive.FC3_Interactive, + "iscsi": iscsi.FC6_Iscsi, + "iscsiname": iscsiname.FC6_IscsiName, + "keyboard": keyboard.FC3_Keyboard, + "lang": lang.FC3_Lang, + "logging": logging.FC6_Logging, + "logvol": logvol.FC4_LogVol, + "mediacheck": mediacheck.FC4_MediaCheck, + "monitor": monitor.FC6_Monitor, + "multipath": multipath.FC6_MultiPath, + "network": network.FC6_Network, + "nfs": method.FC6_Method, + "part": partition.FC4_Partition, + "partition": partition.FC4_Partition, + "poweroff": reboot.FC6_Reboot, + "raid": raid.F7_Raid, + "reboot": reboot.FC6_Reboot, + "repo": repo.FC6_Repo, + "rootpw": rootpw.FC3_RootPw, + "selinux": selinux.FC3_SELinux, + "services": services.FC6_Services, + "shutdown": reboot.FC6_Reboot, + "skipx": skipx.FC3_SkipX, + "text": displaymode.FC3_DisplayMode, + "timezone": timezone.FC6_Timezone, + "updates": updates.F7_Updates, + "upgrade": upgrade.FC3_Upgrade, + "url": method.FC6_Method, + "user": user.FC6_User, + "vnc": vnc.FC6_Vnc, + "volgroup": volgroup.FC3_VolGroup, + "xconfig": xconfig.FC6_XConfig, + "zerombr": zerombr.FC3_ZeroMbr, + "zfcp": zfcp.FC3_ZFCP, + }, + + # based on f7 + F8: { + "auth": authconfig.FC3_Authconfig, + "authconfig": authconfig.FC3_Authconfig, + "autopart": autopart.FC3_AutoPart, + "autostep": autostep.FC3_AutoStep, + "bootloader": bootloader.F8_Bootloader, + "cdrom": method.FC6_Method, + "clearpart": clearpart.FC3_ClearPart, + "cmdline": displaymode.FC3_DisplayMode, + "device": device.F8_Device, + "deviceprobe": deviceprobe.FC3_DeviceProbe, + "dmraid": dmraid.FC6_DmRaid, + "driverdisk": driverdisk.FC4_DriverDisk, + "firewall": firewall.FC3_Firewall, + "firstboot": firstboot.FC3_Firstboot, + "graphical": displaymode.FC3_DisplayMode, + "halt": reboot.FC6_Reboot, + "harddrive": method.FC6_Method, + "ignoredisk": ignoredisk.F8_IgnoreDisk, + "install": upgrade.FC3_Upgrade, + "interactive": interactive.FC3_Interactive, + "iscsi": iscsi.FC6_Iscsi, + "iscsiname": iscsiname.FC6_IscsiName, + "keyboard": keyboard.FC3_Keyboard, + "lang": lang.FC3_Lang, + "logging": logging.FC6_Logging, + "logvol": logvol.FC4_LogVol, + "mediacheck": mediacheck.FC4_MediaCheck, + "monitor": monitor.FC6_Monitor, + "multipath": multipath.FC6_MultiPath, + "network": network.F8_Network, + "nfs": method.FC6_Method, + "part": partition.FC4_Partition, + "partition": partition.FC4_Partition, + "poweroff": reboot.FC6_Reboot, + "raid": raid.F7_Raid, + "reboot": reboot.FC6_Reboot, + "repo": repo.F8_Repo, + "rootpw": rootpw.F8_RootPw, + "selinux": selinux.FC3_SELinux, + "services": services.FC6_Services, + "shutdown": reboot.FC6_Reboot, + "skipx": skipx.FC3_SkipX, + "text": displaymode.FC3_DisplayMode, + "timezone": timezone.FC6_Timezone, + "updates": updates.F7_Updates, + "upgrade": upgrade.FC3_Upgrade, + "url": method.FC6_Method, + "user": user.F8_User, + "vnc": vnc.FC6_Vnc, + "volgroup": volgroup.FC3_VolGroup, + "xconfig": xconfig.FC6_XConfig, + "zerombr": zerombr.FC3_ZeroMbr, + "zfcp": zfcp.FC3_ZFCP, + }, + + # based on f8 + F9: { + "auth": authconfig.FC3_Authconfig, + "authconfig": authconfig.FC3_Authconfig, + "autopart": autopart.F9_AutoPart, + "autostep": autostep.FC3_AutoStep, + "bootloader": bootloader.F8_Bootloader, + "cdrom": method.FC6_Method, + "clearpart": clearpart.FC3_ClearPart, + "cmdline": displaymode.FC3_DisplayMode, + "device": device.F8_Device, + "deviceprobe": deviceprobe.FC3_DeviceProbe, + "dmraid": dmraid.FC6_DmRaid, + "driverdisk": driverdisk.FC4_DriverDisk, + "firewall": firewall.F9_Firewall, + "firstboot": firstboot.FC3_Firstboot, + "graphical": displaymode.FC3_DisplayMode, + "halt": reboot.FC6_Reboot, + "harddrive": method.FC6_Method, + "ignoredisk": ignoredisk.F8_IgnoreDisk, + "install": upgrade.FC3_Upgrade, + "interactive": interactive.FC3_Interactive, + "iscsi": iscsi.FC6_Iscsi, + "iscsiname": iscsiname.FC6_IscsiName, + "keyboard": keyboard.FC3_Keyboard, + "lang": lang.FC3_Lang, + "logging": logging.FC6_Logging, + "logvol": logvol.F9_LogVol, + "mediacheck": mediacheck.FC4_MediaCheck, + "monitor": monitor.FC6_Monitor, + "multipath": multipath.FC6_MultiPath, + "network": network.F9_Network, + "nfs": method.FC6_Method, + "part": partition.F9_Partition, + "partition": partition.F9_Partition, + "poweroff": reboot.FC6_Reboot, + "raid": raid.F9_Raid, + "reboot": reboot.FC6_Reboot, + "repo": repo.F8_Repo, + "rootpw": rootpw.F8_RootPw, + "selinux": selinux.FC3_SELinux, + "services": services.FC6_Services, + "shutdown": reboot.FC6_Reboot, + "skipx": skipx.FC3_SkipX, + "text": displaymode.FC3_DisplayMode, + "timezone": timezone.FC6_Timezone, + "updates": updates.F7_Updates, + "upgrade": upgrade.FC3_Upgrade, + "url": method.FC6_Method, + "user": user.F8_User, + "vnc": vnc.F9_Vnc, + "volgroup": volgroup.FC3_VolGroup, + "xconfig": xconfig.F9_XConfig, + "zerombr": zerombr.F9_ZeroMbr, + "zfcp": zfcp.FC3_ZFCP, + }, + + # based on f9 + F10: { + "auth": authconfig.FC3_Authconfig, + "authconfig": authconfig.FC3_Authconfig, + "autopart": autopart.F9_AutoPart, + "autostep": autostep.FC3_AutoStep, + "bootloader": bootloader.F8_Bootloader, + "cdrom": method.FC6_Method, + "clearpart": clearpart.FC3_ClearPart, + "cmdline": displaymode.FC3_DisplayMode, + "device": device.F8_Device, + "deviceprobe": deviceprobe.FC3_DeviceProbe, + "dmraid": dmraid.FC6_DmRaid, + "driverdisk": driverdisk.FC4_DriverDisk, + "firewall": firewall.F10_Firewall, + "firstboot": firstboot.FC3_Firstboot, + "graphical": displaymode.FC3_DisplayMode, + "halt": reboot.FC6_Reboot, + "harddrive": method.FC6_Method, + "ignoredisk": ignoredisk.F8_IgnoreDisk, + "install": upgrade.FC3_Upgrade, + "interactive": interactive.FC3_Interactive, + "iscsi": iscsi.F10_Iscsi, + "iscsiname": iscsiname.FC6_IscsiName, + "keyboard": keyboard.FC3_Keyboard, + "lang": lang.FC3_Lang, + "logging": logging.FC6_Logging, + "logvol": logvol.F9_LogVol, + "mediacheck": mediacheck.FC4_MediaCheck, + "monitor": monitor.F10_Monitor, + "multipath": multipath.FC6_MultiPath, + "network": network.F9_Network, + "nfs": method.FC6_Method, + "part": partition.F9_Partition, + "partition": partition.F9_Partition, + "poweroff": reboot.FC6_Reboot, + "raid": raid.F9_Raid, + "reboot": reboot.FC6_Reboot, + "repo": repo.F8_Repo, + "rescue": rescue.F10_Rescue, + "rootpw": rootpw.F8_RootPw, + "selinux": selinux.FC3_SELinux, + "services": services.FC6_Services, + "shutdown": reboot.FC6_Reboot, + "skipx": skipx.FC3_SkipX, + "text": displaymode.FC3_DisplayMode, + "timezone": timezone.FC6_Timezone, + "updates": updates.F7_Updates, + "upgrade": upgrade.FC3_Upgrade, + "url": method.FC6_Method, + "user": user.F8_User, + "vnc": vnc.F9_Vnc, + "volgroup": volgroup.FC3_VolGroup, + "xconfig": xconfig.F10_XConfig, + "zerombr": zerombr.F9_ZeroMbr, + "zfcp": zfcp.FC3_ZFCP, + }, + + # based on f10 + F11: { + "auth": authconfig.FC3_Authconfig, + "authconfig": authconfig.FC3_Authconfig, + "autopart": autopart.F9_AutoPart, + "autostep": autostep.FC3_AutoStep, + "bootloader": bootloader.F8_Bootloader, + "cdrom": method.FC6_Method, + "clearpart": clearpart.FC3_ClearPart, + "cmdline": displaymode.FC3_DisplayMode, + "device": device.F8_Device, + "deviceprobe": deviceprobe.FC3_DeviceProbe, + "dmraid": dmraid.FC6_DmRaid, + "driverdisk": driverdisk.FC4_DriverDisk, + "firewall": firewall.F10_Firewall, + "firstboot": firstboot.FC3_Firstboot, + "graphical": displaymode.FC3_DisplayMode, + "halt": reboot.FC6_Reboot, + "harddrive": method.FC6_Method, + "ignoredisk": ignoredisk.F8_IgnoreDisk, + "install": upgrade.F11_Upgrade, + "interactive": interactive.FC3_Interactive, + "iscsi": iscsi.F10_Iscsi, + "iscsiname": iscsiname.FC6_IscsiName, + "keyboard": keyboard.FC3_Keyboard, + "lang": lang.FC3_Lang, + "logging": logging.FC6_Logging, + "logvol": logvol.F9_LogVol, + "mediacheck": mediacheck.FC4_MediaCheck, + "monitor": monitor.F10_Monitor, + "multipath": multipath.FC6_MultiPath, + "network": network.F9_Network, + "nfs": method.FC6_Method, + "part": partition.F11_Partition, + "partition": partition.F11_Partition, + "poweroff": reboot.FC6_Reboot, + "raid": raid.F9_Raid, + "reboot": reboot.FC6_Reboot, + "repo": repo.F11_Repo, + "rescue": rescue.F10_Rescue, + "rootpw": rootpw.F8_RootPw, + "selinux": selinux.FC3_SELinux, + "services": services.FC6_Services, + "shutdown": reboot.FC6_Reboot, + "skipx": skipx.FC3_SkipX, + "text": displaymode.FC3_DisplayMode, + "timezone": timezone.FC6_Timezone, + "updates": updates.F7_Updates, + "upgrade": upgrade.F11_Upgrade, + "url": method.FC6_Method, + "user": user.F8_User, + "vnc": vnc.F9_Vnc, + "volgroup": volgroup.FC3_VolGroup, + "xconfig": xconfig.F10_XConfig, + "zerombr": zerombr.F9_ZeroMbr, + "zfcp": zfcp.FC3_ZFCP, + }, + + # based on f11 + F12: { + "auth": authconfig.FC3_Authconfig, + "authconfig": authconfig.FC3_Authconfig, + "autopart": autopart.F12_AutoPart, + "autostep": autostep.FC3_AutoStep, + "bootloader": bootloader.F12_Bootloader, + "cdrom": method.FC6_Method, + "clearpart": clearpart.FC3_ClearPart, + "cmdline": displaymode.FC3_DisplayMode, + "device": device.F8_Device, + "deviceprobe": deviceprobe.FC3_DeviceProbe, + "dmraid": dmraid.FC6_DmRaid, + "driverdisk": driverdisk.F12_DriverDisk, + "fcoe": fcoe.F12_Fcoe, + "firewall": firewall.F10_Firewall, + "firstboot": firstboot.FC3_Firstboot, + "graphical": displaymode.FC3_DisplayMode, + "group": group.F12_Group, + "halt": reboot.FC6_Reboot, + "harddrive": method.FC6_Method, + "ignoredisk": ignoredisk.F8_IgnoreDisk, + "install": upgrade.F11_Upgrade, + "interactive": interactive.FC3_Interactive, + "iscsi": iscsi.F10_Iscsi, + "iscsiname": iscsiname.FC6_IscsiName, + "keyboard": keyboard.FC3_Keyboard, + "lang": lang.FC3_Lang, + "logging": logging.FC6_Logging, + "logvol": logvol.F12_LogVol, + "mediacheck": mediacheck.FC4_MediaCheck, + "monitor": monitor.F10_Monitor, + "multipath": multipath.FC6_MultiPath, + "network": network.F9_Network, + "nfs": method.FC6_Method, + "part": partition.F12_Partition, + "partition": partition.F12_Partition, + "poweroff": reboot.FC6_Reboot, + "raid": raid.F12_Raid, + "reboot": reboot.FC6_Reboot, + "repo": repo.F11_Repo, + "rescue": rescue.F10_Rescue, + "rootpw": rootpw.F8_RootPw, + "selinux": selinux.FC3_SELinux, + "services": services.FC6_Services, + "shutdown": reboot.FC6_Reboot, + "skipx": skipx.FC3_SkipX, + "text": displaymode.FC3_DisplayMode, + "timezone": timezone.FC6_Timezone, + "updates": updates.F7_Updates, + "upgrade": upgrade.F11_Upgrade, + "url": method.FC6_Method, + "user": user.F12_User, + "vnc": vnc.F9_Vnc, + "volgroup": volgroup.FC3_VolGroup, + "xconfig": xconfig.F10_XConfig, + "zerombr": zerombr.F9_ZeroMbr, + "zfcp": zfcp.F12_ZFCP, + }, + + # based on f12 + F13: { + "auth": authconfig.FC3_Authconfig, + "authconfig": authconfig.FC3_Authconfig, + "autopart": autopart.F12_AutoPart, + "autostep": autostep.FC3_AutoStep, + "bootloader": bootloader.F12_Bootloader, + "cdrom": method.F13_Method, + "clearpart": clearpart.FC3_ClearPart, + "cmdline": displaymode.FC3_DisplayMode, + "device": device.F8_Device, + "deviceprobe": deviceprobe.FC3_DeviceProbe, + "dmraid": dmraid.FC6_DmRaid, + "driverdisk": driverdisk.F12_DriverDisk, + "fcoe": fcoe.F13_Fcoe, + "firewall": firewall.F10_Firewall, + "firstboot": firstboot.FC3_Firstboot, + "graphical": displaymode.FC3_DisplayMode, + "group": group.F12_Group, + "halt": reboot.FC6_Reboot, + "harddrive": method.F13_Method, + "ignoredisk": ignoredisk.F8_IgnoreDisk, + "install": upgrade.F11_Upgrade, + "interactive": interactive.FC3_Interactive, + "iscsi": iscsi.F10_Iscsi, + "iscsiname": iscsiname.FC6_IscsiName, + "keyboard": keyboard.FC3_Keyboard, + "lang": lang.FC3_Lang, + "logging": logging.FC6_Logging, + "logvol": logvol.F12_LogVol, + "mediacheck": mediacheck.FC4_MediaCheck, + "monitor": monitor.F10_Monitor, + "multipath": multipath.FC6_MultiPath, + "network": network.F9_Network, + "nfs": method.F13_Method, + "part": partition.F12_Partition, + "partition": partition.F12_Partition, + "poweroff": reboot.FC6_Reboot, + "raid": raid.F13_Raid, + "reboot": reboot.FC6_Reboot, + "repo": repo.F13_Repo, + "rescue": rescue.F10_Rescue, + "rootpw": rootpw.F8_RootPw, + "selinux": selinux.FC3_SELinux, + "services": services.FC6_Services, + "shutdown": reboot.FC6_Reboot, + "skipx": skipx.FC3_SkipX, + "sshpw": sshpw.F13_SshPw, + "text": displaymode.FC3_DisplayMode, + "timezone": timezone.FC6_Timezone, + "updates": updates.F7_Updates, + "upgrade": upgrade.F11_Upgrade, + "url": method.F13_Method, + "user": user.F12_User, + "vnc": vnc.F9_Vnc, + "volgroup": volgroup.FC3_VolGroup, + "xconfig": xconfig.F10_XConfig, + "zerombr": zerombr.F9_ZeroMbr, + "zfcp": zfcp.F12_ZFCP, + }, + + # based on f13 + F14: { + "auth": authconfig.FC3_Authconfig, + "authconfig": authconfig.FC3_Authconfig, + "autopart": autopart.F12_AutoPart, + "autostep": autostep.FC3_AutoStep, + "bootloader": bootloader.F14_Bootloader, + "cdrom": method.F14_Method, + "clearpart": clearpart.FC3_ClearPart, + "cmdline": displaymode.FC3_DisplayMode, + "device": device.F8_Device, + "deviceprobe": deviceprobe.FC3_DeviceProbe, + "dmraid": dmraid.FC6_DmRaid, + "driverdisk": driverdisk.F14_DriverDisk, + "fcoe": fcoe.F13_Fcoe, + "firewall": firewall.F14_Firewall, + "firstboot": firstboot.FC3_Firstboot, + "graphical": displaymode.FC3_DisplayMode, + "group": group.F12_Group, + "halt": reboot.FC6_Reboot, + "harddrive": method.F14_Method, + "ignoredisk": ignoredisk.F14_IgnoreDisk, + "install": upgrade.F11_Upgrade, + "interactive": interactive.F14_Interactive, + "iscsi": iscsi.F10_Iscsi, + "iscsiname": iscsiname.FC6_IscsiName, + "keyboard": keyboard.FC3_Keyboard, + "lang": lang.FC3_Lang, + "logging": logging.FC6_Logging, + "logvol": logvol.F14_LogVol, + "mediacheck": mediacheck.FC4_MediaCheck, + "monitor": monitor.F10_Monitor, + "multipath": multipath.FC6_MultiPath, + "network": network.F9_Network, + "nfs": method.F14_Method, + "part": partition.F14_Partition, + "partition": partition.F14_Partition, + "poweroff": reboot.FC6_Reboot, + "raid": raid.F14_Raid, + "reboot": reboot.FC6_Reboot, + "repo": repo.F14_Repo, + "rescue": rescue.F10_Rescue, + "rootpw": rootpw.F8_RootPw, + "selinux": selinux.FC3_SELinux, + "services": services.FC6_Services, + "shutdown": reboot.FC6_Reboot, + "skipx": skipx.FC3_SkipX, + "sshpw": sshpw.F13_SshPw, + "text": displaymode.FC3_DisplayMode, + "timezone": timezone.FC6_Timezone, + "updates": updates.F7_Updates, + "upgrade": upgrade.F11_Upgrade, + "url": method.F14_Method, + "user": user.F12_User, + "vnc": vnc.F9_Vnc, + "volgroup": volgroup.FC3_VolGroup, + "xconfig": xconfig.F14_XConfig, + "zerombr": zerombr.F9_ZeroMbr, + "zfcp": zfcp.F14_ZFCP, + }, + + # based on f14 + F15: { + "auth": authconfig.FC3_Authconfig, + "authconfig": authconfig.FC3_Authconfig, + "autopart": autopart.F12_AutoPart, + "autostep": autostep.FC3_AutoStep, + "bootloader": bootloader.F15_Bootloader, + "cdrom": method.F14_Method, + "clearpart": clearpart.FC3_ClearPart, + "cmdline": displaymode.FC3_DisplayMode, + "device": device.F8_Device, + "deviceprobe": deviceprobe.FC3_DeviceProbe, + "dmraid": dmraid.FC6_DmRaid, + "driverdisk": driverdisk.F14_DriverDisk, + "fcoe": fcoe.F13_Fcoe, + "firewall": firewall.F14_Firewall, + "firstboot": firstboot.FC3_Firstboot, + "graphical": displaymode.FC3_DisplayMode, + "group": group.F12_Group, + "halt": reboot.FC6_Reboot, + "harddrive": method.F14_Method, + "ignoredisk": ignoredisk.F14_IgnoreDisk, + "install": upgrade.F11_Upgrade, + "iscsi": iscsi.F10_Iscsi, + "iscsiname": iscsiname.FC6_IscsiName, + "keyboard": keyboard.FC3_Keyboard, + "lang": lang.FC3_Lang, + "logging": logging.FC6_Logging, + "logvol": logvol.F15_LogVol, + "mediacheck": mediacheck.FC4_MediaCheck, + "monitor": monitor.F10_Monitor, + "multipath": multipath.FC6_MultiPath, + "network": network.F9_Network, + "nfs": method.F14_Method, + "part": partition.F14_Partition, + "partition": partition.F14_Partition, + "poweroff": reboot.FC6_Reboot, + "raid": raid.F15_Raid, + "reboot": reboot.FC6_Reboot, + "repo": repo.F15_Repo, + "rescue": rescue.F10_Rescue, + "rootpw": rootpw.F8_RootPw, + "selinux": selinux.FC3_SELinux, + "services": services.FC6_Services, + "shutdown": reboot.FC6_Reboot, + "skipx": skipx.FC3_SkipX, + "sshpw": sshpw.F13_SshPw, + "text": displaymode.FC3_DisplayMode, + "timezone": timezone.FC6_Timezone, + "updates": updates.F7_Updates, + "upgrade": upgrade.F11_Upgrade, + "url": method.F14_Method, + "user": user.F12_User, + "vnc": vnc.F9_Vnc, + "volgroup": volgroup.FC3_VolGroup, + "xconfig": xconfig.F14_XConfig, + "zerombr": zerombr.F9_ZeroMbr, + "zfcp": zfcp.F14_ZFCP, + }, + + # based on f15 + F16: { + "auth": authconfig.FC3_Authconfig, + "authconfig": authconfig.FC3_Authconfig, + "autopart": autopart.F12_AutoPart, + "autostep": autostep.FC3_AutoStep, + "bootloader": bootloader.F15_Bootloader, + "cdrom": method.F14_Method, + "clearpart": clearpart.FC3_ClearPart, + "cmdline": displaymode.FC3_DisplayMode, + "device": device.F8_Device, + "deviceprobe": deviceprobe.FC3_DeviceProbe, + "dmraid": dmraid.FC6_DmRaid, + "driverdisk": driverdisk.F14_DriverDisk, + "fcoe": fcoe.F13_Fcoe, + "firewall": firewall.F14_Firewall, + "firstboot": firstboot.FC3_Firstboot, + "graphical": displaymode.FC3_DisplayMode, + "group": group.F12_Group, + "halt": reboot.FC6_Reboot, + "harddrive": method.F14_Method, + "ignoredisk": ignoredisk.F14_IgnoreDisk, + "install": upgrade.F11_Upgrade, + "iscsi": iscsi.F10_Iscsi, + "iscsiname": iscsiname.FC6_IscsiName, + "keyboard": keyboard.FC3_Keyboard, + "lang": lang.FC3_Lang, + "logging": logging.FC6_Logging, + "logvol": logvol.F15_LogVol, + "mediacheck": mediacheck.FC4_MediaCheck, + "monitor": monitor.F10_Monitor, + "multipath": multipath.FC6_MultiPath, + "network": network.F16_Network, + "nfs": method.F14_Method, + "part": partition.F14_Partition, + "partition": partition.F14_Partition, + "poweroff": reboot.FC6_Reboot, + "raid": raid.F15_Raid, + "reboot": reboot.FC6_Reboot, + "repo": repo.F15_Repo, + "rescue": rescue.F10_Rescue, + "rootpw": rootpw.F8_RootPw, + "selinux": selinux.FC3_SELinux, + "services": services.FC6_Services, + "shutdown": reboot.FC6_Reboot, + "skipx": skipx.FC3_SkipX, + "sshpw": sshpw.F13_SshPw, + "text": displaymode.FC3_DisplayMode, + "timezone": timezone.FC6_Timezone, + "updates": updates.F7_Updates, + "upgrade": upgrade.F11_Upgrade, + "url": method.F14_Method, + "user": user.F12_User, + "vnc": vnc.F9_Vnc, + "volgroup": volgroup.FC3_VolGroup, + "xconfig": xconfig.F14_XConfig, + "zerombr": zerombr.F9_ZeroMbr, + "zfcp": zfcp.F14_ZFCP, + }, + + # based on fc1 + RHEL3: { + "auth": authconfig.FC3_Authconfig, + "authconfig": authconfig.FC3_Authconfig, + "autopart": autopart.FC3_AutoPart, + "autostep": autostep.FC3_AutoStep, + "bootloader": bootloader.FC3_Bootloader, + "cdrom": method.FC3_Method, + "clearpart": clearpart.FC3_ClearPart, + "cmdline": displaymode.FC3_DisplayMode, + "device": device.FC3_Device, + "deviceprobe": deviceprobe.FC3_DeviceProbe, + "driverdisk": driverdisk.FC3_DriverDisk, + "firewall": firewall.FC3_Firewall, + "firstboot": firstboot.FC3_Firstboot, + "graphical": displaymode.FC3_DisplayMode, + "halt": reboot.FC3_Reboot, + "harddrive": method.FC3_Method, + "ignoredisk": ignoredisk.FC3_IgnoreDisk, + "install": upgrade.FC3_Upgrade, + "interactive": interactive.FC3_Interactive, + "keyboard": keyboard.FC3_Keyboard, + "lang": lang.FC3_Lang, + "langsupport": langsupport.FC3_LangSupport, + "lilo": bootloader.FC3_Bootloader, + "lilocheck": lilocheck.FC3_LiloCheck, + "logvol": logvol.FC3_LogVol, + "monitor": monitor.FC3_Monitor, + "mouse": mouse.RHEL3_Mouse, + "network": network.FC3_Network, + "nfs": method.FC3_Method, + "part": partition.FC3_Partition, + "partition": partition.FC3_Partition, + "poweroff": reboot.FC3_Reboot, + "raid": raid.FC3_Raid, + "reboot": reboot.FC3_Reboot, + "rootpw": rootpw.FC3_RootPw, + "shutdown": reboot.FC3_Reboot, + "skipx": skipx.FC3_SkipX, + "text": displaymode.FC3_DisplayMode, + "timezone": timezone.FC3_Timezone, + "upgrade": upgrade.FC3_Upgrade, + "url": method.FC3_Method, + "vnc": vnc.FC3_Vnc, + "volgroup": volgroup.FC3_VolGroup, + "xconfig": xconfig.FC3_XConfig, + "zerombr": zerombr.FC3_ZeroMbr, + }, + + # based on fc3 + RHEL4: { + "auth": authconfig.FC3_Authconfig, + "authconfig": authconfig.FC3_Authconfig, + "autopart": autopart.FC3_AutoPart, + "autostep": autostep.FC3_AutoStep, + "bootloader": bootloader.FC3_Bootloader, + "cdrom": method.FC3_Method, + "clearpart": clearpart.FC3_ClearPart, + "cmdline": displaymode.FC3_DisplayMode, + "device": device.FC3_Device, + "deviceprobe": deviceprobe.FC3_DeviceProbe, + "driverdisk": driverdisk.FC4_DriverDisk, + "firewall": firewall.FC3_Firewall, + "firstboot": firstboot.FC3_Firstboot, + "graphical": displaymode.FC3_DisplayMode, + "halt": reboot.FC3_Reboot, + "harddrive": method.FC3_Method, + "ignoredisk": ignoredisk.F8_IgnoreDisk, + "install": upgrade.FC3_Upgrade, + "interactive": interactive.FC3_Interactive, + "keyboard": keyboard.FC3_Keyboard, + "lang": lang.FC3_Lang, + "langsupport": langsupport.FC3_LangSupport, + "lilo": bootloader.FC3_Bootloader, + "lilocheck": lilocheck.FC3_LiloCheck, + "logvol": logvol.FC3_LogVol, + "monitor": monitor.FC3_Monitor, + "mouse": mouse.FC3_Mouse, + "network": network.RHEL4_Network, + "nfs": method.FC3_Method, + "part": partition.FC3_Partition, + "partition": partition.FC3_Partition, + "poweroff": reboot.FC3_Reboot, + "raid": raid.FC3_Raid, + "reboot": reboot.FC3_Reboot, + "rootpw": rootpw.FC3_RootPw, + "selinux": selinux.FC3_SELinux, + "shutdown": reboot.FC3_Reboot, + "skipx": skipx.FC3_SkipX, + "text": displaymode.FC3_DisplayMode, + "timezone": timezone.FC3_Timezone, + "upgrade": upgrade.FC3_Upgrade, + "url": method.FC3_Method, + "vnc": vnc.FC3_Vnc, + "volgroup": volgroup.FC3_VolGroup, + "xconfig": xconfig.FC3_XConfig, + "zerombr": zerombr.FC3_ZeroMbr, + "zfcp": zfcp.FC3_ZFCP, + }, + + # based on fc6 + RHEL5: { + "auth": authconfig.FC3_Authconfig, + "authconfig": authconfig.FC3_Authconfig, + "autopart": autopart.F9_AutoPart, + "autostep": autostep.FC3_AutoStep, + "bootloader": bootloader.RHEL5_Bootloader, + "cdrom": method.FC6_Method, + "clearpart": clearpart.FC3_ClearPart, + "cmdline": displaymode.FC3_DisplayMode, + "device": device.FC3_Device, + "deviceprobe": deviceprobe.FC3_DeviceProbe, + "dmraid": dmraid.FC6_DmRaid, + "driverdisk": driverdisk.F12_DriverDisk, + "firewall": firewall.FC3_Firewall, + "firstboot": firstboot.FC3_Firstboot, + "graphical": displaymode.FC3_DisplayMode, + "halt": reboot.FC6_Reboot, + "harddrive": method.FC6_Method, + "ignoredisk": ignoredisk.F8_IgnoreDisk, + "install": upgrade.FC3_Upgrade, + "interactive": interactive.FC3_Interactive, + "iscsi": iscsi.FC6_Iscsi, + "iscsiname": iscsiname.FC6_IscsiName, + "key": key.RHEL5_Key, + "keyboard": keyboard.FC3_Keyboard, + "lang": lang.FC3_Lang, + "langsupport": langsupport.FC5_LangSupport, + "logging": logging.FC6_Logging, + "logvol": logvol.RHEL5_LogVol, + "mediacheck": mediacheck.FC4_MediaCheck, + "monitor": monitor.FC6_Monitor, + "mouse": mouse.FC3_Mouse, + "multipath": multipath.FC6_MultiPath, + "network": network.RHEL5_Network, + "nfs": method.FC6_Method, + "part": partition.RHEL5_Partition, + "partition": partition.RHEL5_Partition, + "poweroff": reboot.FC6_Reboot, + "raid": raid.RHEL5_Raid, + "reboot": reboot.FC6_Reboot, + "repo": repo.FC6_Repo, + "rootpw": rootpw.FC3_RootPw, + "services": services.FC6_Services, + "selinux": selinux.FC3_SELinux, + "shutdown": reboot.FC6_Reboot, + "skipx": skipx.FC3_SkipX, + "text": displaymode.FC3_DisplayMode, + "timezone": timezone.FC6_Timezone, + "upgrade": upgrade.FC3_Upgrade, + "user": user.FC6_User, + "url": method.FC6_Method, + "vnc": vnc.FC6_Vnc, + "volgroup": volgroup.FC3_VolGroup, + "xconfig": xconfig.FC6_XConfig, + "zerombr": zerombr.FC3_ZeroMbr, + "zfcp": zfcp.FC3_ZFCP, + }, + + # based on f13ish + RHEL6: { + "auth": authconfig.FC3_Authconfig, + "authconfig": authconfig.FC3_Authconfig, + "autopart": autopart.F12_AutoPart, + "autostep": autostep.FC3_AutoStep, + "bootloader": bootloader.RHEL6_Bootloader, + "cdrom": method.RHEL6_Method, + "clearpart": clearpart.FC3_ClearPart, + "cmdline": displaymode.FC3_DisplayMode, + "device": device.F8_Device, + "deviceprobe": deviceprobe.FC3_DeviceProbe, + "dmraid": dmraid.FC6_DmRaid, + "driverdisk": driverdisk.F12_DriverDisk, + "fcoe": fcoe.F13_Fcoe, + "firewall": firewall.F10_Firewall, + "firstboot": firstboot.FC3_Firstboot, + "graphical": displaymode.FC3_DisplayMode, + "group": group.F12_Group, + "halt": reboot.FC6_Reboot, + "harddrive": method.RHEL6_Method, + "ignoredisk": ignoredisk.RHEL6_IgnoreDisk, + "install": upgrade.F11_Upgrade, + "interactive": interactive.FC3_Interactive, + "iscsi": iscsi.F10_Iscsi, + "iscsiname": iscsiname.FC6_IscsiName, + "keyboard": keyboard.FC3_Keyboard, + "lang": lang.FC3_Lang, + "logging": logging.FC6_Logging, + "logvol": logvol.F12_LogVol, + "mediacheck": mediacheck.FC4_MediaCheck, + "monitor": monitor.F10_Monitor, + "multipath": multipath.FC6_MultiPath, + "network": network.RHEL6_Network, + "nfs": method.RHEL6_Method, + "part": partition.F12_Partition, + "partition": partition.F12_Partition, + "poweroff": reboot.FC6_Reboot, + "raid": raid.F13_Raid, + "reboot": reboot.FC6_Reboot, + "repo": repo.RHEL6_Repo, + "rescue": rescue.F10_Rescue, + "rootpw": rootpw.F8_RootPw, + "selinux": selinux.FC3_SELinux, + "services": services.FC6_Services, + "shutdown": reboot.FC6_Reboot, + "skipx": skipx.FC3_SkipX, + "sshpw": sshpw.F13_SshPw, + "text": displaymode.FC3_DisplayMode, + "timezone": timezone.FC6_Timezone, + "updates": updates.F7_Updates, + "upgrade": upgrade.F11_Upgrade, + "url": method.RHEL6_Method, + "user": user.F12_User, + "vnc": vnc.F9_Vnc, + "volgroup": volgroup.FC3_VolGroup, + "xconfig": xconfig.F10_XConfig, + "zerombr": zerombr.F9_ZeroMbr, + "zfcp": zfcp.F12_ZFCP, + } +} + +# This map is keyed on kickstart syntax version as provided by +# pykickstart.version. Within each sub-dict is a mapping from a data object +# name to the class that provides it. This is a bijective mapping - that is, +# each name maps to exactly one data class and all data classes have a name. +# More than one instance of each class is allowed to exist, however. +dataMap = { + FC3: { + "DriverDiskData": driverdisk.FC3_DriverDiskData, + "LogVolData": logvol.FC3_LogVolData, + "NetworkData": network.FC3_NetworkData, + "PartData": partition.FC3_PartData, + "RaidData": raid.FC3_RaidData, + "VolGroupData": volgroup.FC3_VolGroupData, + "ZFCPData": zfcp.FC3_ZFCPData, + }, + FC4: { + "DriverDiskData": driverdisk.FC4_DriverDiskData, + "LogVolData": logvol.FC4_LogVolData, + "NetworkData": network.FC4_NetworkData, + "PartData": partition.FC4_PartData, + "RaidData": raid.FC4_RaidData, + "VolGroupData": volgroup.FC3_VolGroupData, + "ZFCPData": zfcp.FC3_ZFCPData, + }, + FC5: { + "DriverDiskData": driverdisk.FC4_DriverDiskData, + "LogVolData": logvol.FC4_LogVolData, + "NetworkData": network.FC4_NetworkData, + "PartData": partition.FC4_PartData, + "RaidData": raid.FC5_RaidData, + "VolGroupData": volgroup.FC3_VolGroupData, + "ZFCPData": zfcp.FC3_ZFCPData, + }, + FC6: { + "DriverDiskData": driverdisk.FC4_DriverDiskData, + "DmRaidData": dmraid.FC6_DmRaidData, + "IscsiData": iscsi.FC6_IscsiData, + "LogVolData": logvol.FC4_LogVolData, + "MultiPathData": multipath.FC6_MultiPathData, + "NetworkData": network.FC6_NetworkData, + "PartData": partition.FC4_PartData, + "RaidData": raid.FC5_RaidData, + "RepoData": repo.FC6_RepoData, + "UserData": user.FC6_UserData, + "VolGroupData": volgroup.FC3_VolGroupData, + "ZFCPData": zfcp.FC3_ZFCPData, + }, + F7: { + "DriverDiskData": driverdisk.FC4_DriverDiskData, + "DmRaidData": dmraid.FC6_DmRaidData, + "IscsiData": iscsi.FC6_IscsiData, + "LogVolData": logvol.FC4_LogVolData, + "MultiPathData": multipath.FC6_MultiPathData, + "NetworkData": network.FC6_NetworkData, + "PartData": partition.FC4_PartData, + "RaidData": raid.F7_RaidData, + "RepoData": repo.FC6_RepoData, + "UserData": user.FC6_UserData, + "VolGroupData": volgroup.FC3_VolGroupData, + "ZFCPData": zfcp.FC3_ZFCPData, + }, + F8: { + "DriverDiskData": driverdisk.FC4_DriverDiskData, + "DeviceData": device.F8_DeviceData, + "DmRaidData": dmraid.FC6_DmRaidData, + "IscsiData": iscsi.FC6_IscsiData, + "LogVolData": logvol.FC4_LogVolData, + "MultiPathData": multipath.FC6_MultiPathData, + "NetworkData": network.F8_NetworkData, + "PartData": partition.FC4_PartData, + "RaidData": raid.F7_RaidData, + "RepoData": repo.F8_RepoData, + "UserData": user.F8_UserData, + "VolGroupData": volgroup.FC3_VolGroupData, + "ZFCPData": zfcp.FC3_ZFCPData, + }, + F9: { + "DriverDiskData": driverdisk.FC4_DriverDiskData, + "DeviceData": device.F8_DeviceData, + "DmRaidData": dmraid.FC6_DmRaidData, + "IscsiData": iscsi.FC6_IscsiData, + "LogVolData": logvol.F9_LogVolData, + "MultiPathData": multipath.FC6_MultiPathData, + "NetworkData": network.F8_NetworkData, + "PartData": partition.F9_PartData, + "RaidData": raid.F9_RaidData, + "RepoData": repo.F8_RepoData, + "UserData": user.F8_UserData, + "VolGroupData": volgroup.FC3_VolGroupData, + "ZFCPData": zfcp.FC3_ZFCPData, + }, + F10: { + "DriverDiskData": driverdisk.FC4_DriverDiskData, + "DeviceData": device.F8_DeviceData, + "DmRaidData": dmraid.FC6_DmRaidData, + "IscsiData": iscsi.F10_IscsiData, + "LogVolData": logvol.F9_LogVolData, + "MultiPathData": multipath.FC6_MultiPathData, + "NetworkData": network.F8_NetworkData, + "PartData": partition.F9_PartData, + "RaidData": raid.F9_RaidData, + "RepoData": repo.F8_RepoData, + "UserData": user.F8_UserData, + "VolGroupData": volgroup.FC3_VolGroupData, + "ZFCPData": zfcp.FC3_ZFCPData, + }, + F11: { + "DriverDiskData": driverdisk.FC4_DriverDiskData, + "DeviceData": device.F8_DeviceData, + "DmRaidData": dmraid.FC6_DmRaidData, + "IscsiData": iscsi.F10_IscsiData, + "LogVolData": logvol.F9_LogVolData, + "MultiPathData": multipath.FC6_MultiPathData, + "NetworkData": network.F8_NetworkData, + "PartData": partition.F11_PartData, + "RaidData": raid.F9_RaidData, + "RepoData": repo.F11_RepoData, + "UserData": user.F8_UserData, + "VolGroupData": volgroup.FC3_VolGroupData, + "ZFCPData": zfcp.FC3_ZFCPData, + }, + F12: { + "DriverDiskData": driverdisk.F12_DriverDiskData, + "DeviceData": device.F8_DeviceData, + "DmRaidData": dmraid.FC6_DmRaidData, + "FcoeData": fcoe.F12_FcoeData, + "GroupData": group.F12_GroupData, + "IscsiData": iscsi.F10_IscsiData, + "LogVolData": logvol.F12_LogVolData, + "MultiPathData": multipath.FC6_MultiPathData, + "NetworkData": network.F8_NetworkData, + "PartData": partition.F12_PartData, + "RaidData": raid.F12_RaidData, + "RepoData": repo.F11_RepoData, + "UserData": user.F12_UserData, + "VolGroupData": volgroup.FC3_VolGroupData, + "ZFCPData": zfcp.F12_ZFCPData, + }, + F13: { + "DriverDiskData": driverdisk.F12_DriverDiskData, + "DeviceData": device.F8_DeviceData, + "DmRaidData": dmraid.FC6_DmRaidData, + "FcoeData": fcoe.F13_FcoeData, + "GroupData": group.F12_GroupData, + "IscsiData": iscsi.F10_IscsiData, + "LogVolData": logvol.F12_LogVolData, + "MultiPathData": multipath.FC6_MultiPathData, + "NetworkData": network.F8_NetworkData, + "PartData": partition.F12_PartData, + "RaidData": raid.F13_RaidData, + "RepoData": repo.F13_RepoData, + "SshPwData": sshpw.F13_SshPwData, + "UserData": user.F12_UserData, + "VolGroupData": volgroup.FC3_VolGroupData, + "ZFCPData": zfcp.F12_ZFCPData, + }, + F14: { + "DriverDiskData": driverdisk.F14_DriverDiskData, + "DeviceData": device.F8_DeviceData, + "DmRaidData": dmraid.FC6_DmRaidData, + "FcoeData": fcoe.F13_FcoeData, + "GroupData": group.F12_GroupData, + "IscsiData": iscsi.F10_IscsiData, + "LogVolData": logvol.F14_LogVolData, + "MultiPathData": multipath.FC6_MultiPathData, + "NetworkData": network.F8_NetworkData, + "PartData": partition.F14_PartData, + "RaidData": raid.F14_RaidData, + "RepoData": repo.F14_RepoData, + "SshPwData": sshpw.F13_SshPwData, + "UserData": user.F12_UserData, + "VolGroupData": volgroup.FC3_VolGroupData, + "ZFCPData": zfcp.F14_ZFCPData, + }, + F15: { + "DriverDiskData": driverdisk.F14_DriverDiskData, + "DeviceData": device.F8_DeviceData, + "DmRaidData": dmraid.FC6_DmRaidData, + "FcoeData": fcoe.F13_FcoeData, + "GroupData": group.F12_GroupData, + "IscsiData": iscsi.F10_IscsiData, + "LogVolData": logvol.F15_LogVolData, + "MultiPathData": multipath.FC6_MultiPathData, + "NetworkData": network.F8_NetworkData, + "PartData": partition.F14_PartData, + "RaidData": raid.F15_RaidData, + "RepoData": repo.F15_RepoData, + "SshPwData": sshpw.F13_SshPwData, + "UserData": user.F12_UserData, + "VolGroupData": volgroup.FC3_VolGroupData, + "ZFCPData": zfcp.F14_ZFCPData, + }, + F16: { + "DriverDiskData": driverdisk.F14_DriverDiskData, + "DeviceData": device.F8_DeviceData, + "DmRaidData": dmraid.FC6_DmRaidData, + "FcoeData": fcoe.F13_FcoeData, + "GroupData": group.F12_GroupData, + "IscsiData": iscsi.F10_IscsiData, + "LogVolData": logvol.F15_LogVolData, + "MultiPathData": multipath.FC6_MultiPathData, + "NetworkData": network.F16_NetworkData, + "PartData": partition.F14_PartData, + "RaidData": raid.F15_RaidData, + "RepoData": repo.F15_RepoData, + "SshPwData": sshpw.F13_SshPwData, + "UserData": user.F12_UserData, + "VolGroupData": volgroup.FC3_VolGroupData, + "ZFCPData": zfcp.F14_ZFCPData, + }, + RHEL3: { + "DriverDiskData": driverdisk.FC3_DriverDiskData, + "LogVolData": logvol.FC3_LogVolData, + "NetworkData": network.RHEL4_NetworkData, + "PartData": partition.FC3_PartData, + "RaidData": raid.FC3_RaidData, + "VolGroupData": volgroup.FC3_VolGroupData, + "ZFCPData": zfcp.FC3_ZFCPData, + }, + RHEL4: { + "DriverDiskData": driverdisk.FC4_DriverDiskData, + "LogVolData": logvol.FC3_LogVolData, + "NetworkData": network.RHEL4_NetworkData, + "PartData": partition.FC3_PartData, + "RaidData": raid.FC3_RaidData, + "VolGroupData": volgroup.FC3_VolGroupData, + "ZFCPData": zfcp.FC3_ZFCPData, + }, + RHEL5: { + "DriverDiskData": driverdisk.F12_DriverDiskData, + "DmRaidData": dmraid.FC6_DmRaidData, + "IscsiData": iscsi.FC6_IscsiData, + "LogVolData": logvol.RHEL5_LogVolData, + "MultiPathData": multipath.FC6_MultiPathData, + "NetworkData": network.FC6_NetworkData, + "PartData": partition.RHEL5_PartData, + "RaidData": raid.RHEL5_RaidData, + "RepoData": repo.FC6_RepoData, + "UserData": user.FC6_UserData, + "VolGroupData": volgroup.FC3_VolGroupData, + "ZFCPData": zfcp.FC3_ZFCPData, + }, + RHEL6: { + "DriverDiskData": driverdisk.F12_DriverDiskData, + "DeviceData": device.F8_DeviceData, + "DmRaidData": dmraid.FC6_DmRaidData, + "FcoeData": fcoe.F13_FcoeData, + "GroupData": group.F12_GroupData, + "IscsiData": iscsi.F10_IscsiData, + "LogVolData": logvol.F12_LogVolData, + "MultiPathData": multipath.FC6_MultiPathData, + "NetworkData": network.RHEL6_NetworkData, + "PartData": partition.F12_PartData, + "RaidData": raid.F13_RaidData, + "RepoData": repo.RHEL6_RepoData, + "SshPwData": sshpw.F13_SshPwData, + "UserData": user.F12_UserData, + "VolGroupData": volgroup.FC3_VolGroupData, + "ZFCPData": zfcp.F12_ZFCPData, + } +} diff --git a/mic/pykickstart/handlers/f10.py b/mic/pykickstart/handlers/f10.py new file mode 100644 index 0000000..17c8211 --- /dev/null +++ b/mic/pykickstart/handlers/f10.py @@ -0,0 +1,24 @@ +# +# Chris Lumens +# +# Copyright 2008 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.version import * + +class F10Handler(BaseHandler): + version = F10 diff --git a/mic/pykickstart/handlers/f11.py b/mic/pykickstart/handlers/f11.py new file mode 100644 index 0000000..d21aee3 --- /dev/null +++ b/mic/pykickstart/handlers/f11.py @@ -0,0 +1,24 @@ +# +# Chris Lumens +# +# Copyright 2008 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.version import * + +class F11Handler(BaseHandler): + version = F11 diff --git a/mic/pykickstart/handlers/f12.py b/mic/pykickstart/handlers/f12.py new file mode 100644 index 0000000..cea3ece --- /dev/null +++ b/mic/pykickstart/handlers/f12.py @@ -0,0 +1,24 @@ +# +# Chris Lumens +# +# Copyright 2009 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.version import * + +class F12Handler(BaseHandler): + version = F12 diff --git a/mic/pykickstart/handlers/f13.py b/mic/pykickstart/handlers/f13.py new file mode 100644 index 0000000..b94c738 --- /dev/null +++ b/mic/pykickstart/handlers/f13.py @@ -0,0 +1,24 @@ +# +# Chris Lumens +# +# Copyright 2009 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.version import * + +class F13Handler(BaseHandler): + version = F13 diff --git a/mic/pykickstart/handlers/f14.py b/mic/pykickstart/handlers/f14.py new file mode 100644 index 0000000..478f75d --- /dev/null +++ b/mic/pykickstart/handlers/f14.py @@ -0,0 +1,24 @@ +# +# Chris Lumens +# +# Copyright 2010 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.version import * + +class F14Handler(BaseHandler): + version = F14 diff --git a/mic/pykickstart/handlers/f15.py b/mic/pykickstart/handlers/f15.py new file mode 100644 index 0000000..12aecb4 --- /dev/null +++ b/mic/pykickstart/handlers/f15.py @@ -0,0 +1,24 @@ +# +# Chris Lumens +# +# Copyright 2010 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.version import * + +class F15Handler(BaseHandler): + version = F15 diff --git a/mic/pykickstart/handlers/f16.py b/mic/pykickstart/handlers/f16.py new file mode 100644 index 0000000..3c52f8d --- /dev/null +++ b/mic/pykickstart/handlers/f16.py @@ -0,0 +1,24 @@ +# +# Chris Lumens +# +# Copyright 2011 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.version import * + +class F16Handler(BaseHandler): + version = F16 diff --git a/mic/pykickstart/handlers/f7.py b/mic/pykickstart/handlers/f7.py new file mode 100644 index 0000000..5e856ea --- /dev/null +++ b/mic/pykickstart/handlers/f7.py @@ -0,0 +1,24 @@ +# +# Chris Lumens +# +# Copyright 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.version import * + +class F7Handler(BaseHandler): + version = F7 diff --git a/mic/pykickstart/handlers/f8.py b/mic/pykickstart/handlers/f8.py new file mode 100644 index 0000000..1a97881 --- /dev/null +++ b/mic/pykickstart/handlers/f8.py @@ -0,0 +1,24 @@ +# +# Chris Lumens +# +# Copyright 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.version import * + +class F8Handler(BaseHandler): + version = F8 diff --git a/mic/pykickstart/handlers/f9.py b/mic/pykickstart/handlers/f9.py new file mode 100644 index 0000000..116f1b5 --- /dev/null +++ b/mic/pykickstart/handlers/f9.py @@ -0,0 +1,24 @@ +# +# Chris Lumens +# +# Copyright 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.version import * + +class F9Handler(BaseHandler): + version = F9 diff --git a/mic/pykickstart/handlers/fc3.py b/mic/pykickstart/handlers/fc3.py new file mode 100644 index 0000000..a115dc2 --- /dev/null +++ b/mic/pykickstart/handlers/fc3.py @@ -0,0 +1,24 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.version import * + +class FC3Handler(BaseHandler): + version = FC3 diff --git a/mic/pykickstart/handlers/fc4.py b/mic/pykickstart/handlers/fc4.py new file mode 100644 index 0000000..fd47b73 --- /dev/null +++ b/mic/pykickstart/handlers/fc4.py @@ -0,0 +1,24 @@ +# +# Chris Lumens +# +# Copyright 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.version import * + +class FC4Handler(BaseHandler): + version = FC4 diff --git a/mic/pykickstart/handlers/fc5.py b/mic/pykickstart/handlers/fc5.py new file mode 100644 index 0000000..bcdc29d --- /dev/null +++ b/mic/pykickstart/handlers/fc5.py @@ -0,0 +1,24 @@ +# +# Chris Lumens +# +# Copyright 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.version import * + +class FC5Handler(BaseHandler): + version = FC5 diff --git a/mic/pykickstart/handlers/fc6.py b/mic/pykickstart/handlers/fc6.py new file mode 100644 index 0000000..c83a929 --- /dev/null +++ b/mic/pykickstart/handlers/fc6.py @@ -0,0 +1,24 @@ +# +# Chris Lumens +# +# Copyright 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.version import * + +class FC6Handler(BaseHandler): + version = FC6 diff --git a/mic/pykickstart/handlers/rhel3.py b/mic/pykickstart/handlers/rhel3.py new file mode 100644 index 0000000..131763c --- /dev/null +++ b/mic/pykickstart/handlers/rhel3.py @@ -0,0 +1,24 @@ +# +# Chris Lumens +# +# Copyright 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.version import * + +class RHEL3Handler(BaseHandler): + version = RHEL3 diff --git a/mic/pykickstart/handlers/rhel4.py b/mic/pykickstart/handlers/rhel4.py new file mode 100644 index 0000000..3496c43 --- /dev/null +++ b/mic/pykickstart/handlers/rhel4.py @@ -0,0 +1,24 @@ +# +# Chris Lumens +# +# Copyright 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.version import * + +class RHEL4Handler(BaseHandler): + version = RHEL4 diff --git a/mic/pykickstart/handlers/rhel5.py b/mic/pykickstart/handlers/rhel5.py new file mode 100644 index 0000000..abb7a8d --- /dev/null +++ b/mic/pykickstart/handlers/rhel5.py @@ -0,0 +1,24 @@ +# +# Chris Lumens +# +# Copyright 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.version import * + +class RHEL5Handler(BaseHandler): + version = RHEL5 diff --git a/mic/pykickstart/handlers/rhel6.py b/mic/pykickstart/handlers/rhel6.py new file mode 100644 index 0000000..7202419 --- /dev/null +++ b/mic/pykickstart/handlers/rhel6.py @@ -0,0 +1,24 @@ +# +# Chris Lumens +# +# Copyright 2010 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +from pykickstart.base import * +from pykickstart.version import * + +class RHEL6Handler(BaseHandler): + version = RHEL6 diff --git a/mic/pykickstart/ko.py b/mic/pykickstart/ko.py new file mode 100644 index 0000000..1350d19 --- /dev/null +++ b/mic/pykickstart/ko.py @@ -0,0 +1,37 @@ +# +# Chris Lumens +# +# Copyright 2009 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +""" +Base classes for internal pykickstart use. + +The module exports the following important classes: + + KickstartObject - The base class for all classes in pykickstart +""" + +class KickstartObject(object): + """The base class for all other classes in pykickstart.""" + def __init__(self, *args, **kwargs): + """Create a new KickstartObject instance. All other classes in + pykickstart should be derived from this one. Instance attributes: + """ + pass + + def __str__(self): + return "" diff --git a/mic/pykickstart/options.py b/mic/pykickstart/options.py new file mode 100644 index 0000000..341c5d7 --- /dev/null +++ b/mic/pykickstart/options.py @@ -0,0 +1,204 @@ +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +""" +Specialized option handling. + +This module exports two classes: + + KSOptionParser - A specialized subclass of OptionParser to be used + in BaseHandler subclasses. + + KSOption - A specialized subclass of Option. +""" +import warnings +from copy import copy +from optparse import * + +from constants import * +from errors import * +from version import * + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +class KSOptionParser(OptionParser): + """A specialized subclass of optparse.OptionParser to handle extra option + attribute checking, work error reporting into the KickstartParseError + framework, and to turn off the default help. + """ + def exit(self, status=0, msg=None): + pass + + def error(self, msg): + if self.lineno != None: + raise KickstartParseError, formatErrorMsg(self.lineno, msg=msg) + else: + raise KickstartParseError, msg + + def keys(self): + retval = [] + + for opt in self.option_list: + if opt not in retval: + retval.append(opt.dest) + + return retval + + def _init_parsing_state (self): + OptionParser._init_parsing_state(self) + self.option_seen = {} + + def check_values (self, values, args): + def seen(self, option): + return self.option_seen.has_key(option) + + def usedTooNew(self, option): + return option.introduced and option.introduced > self.version + + def usedDeprecated(self, option): + return option.deprecated + + def usedRemoved(self, option): + return option.removed and option.removed <= self.version + + for option in filter(lambda o: isinstance(o, Option), self.option_list): + if option.required and not seen(self, option): + raise KickstartValueError, formatErrorMsg(self.lineno, _("Option %s is required") % option) + elif seen(self, option) and usedTooNew(self, option): + mapping = {"option": option, "intro": versionToString(option.introduced), + "version": versionToString(self.version)} + self.error(_("The %(option)s option was introduced in version %(intro)s, but you are using kickstart syntax version %(version)s.") % mapping) + elif seen(self, option) and usedRemoved(self, option): + mapping = {"option": option, "removed": versionToString(option.removed), + "version": versionToString(self.version)} + + if option.removed == self.version: + self.error(_("The %(option)s option is no longer supported.") % mapping) + else: + self.error(_("The %(option)s option was removed in version %(removed)s, but you are using kickstart syntax version %(version)s.") % mapping) + elif seen(self, option) and usedDeprecated(self, option): + mapping = {"lineno": self.lineno, "option": option} + warnings.warn(_("Ignoring deprecated option on line %(lineno)s: The %(option)s option has been deprecated and no longer has any effect. It may be removed from future releases, which will result in a fatal error from kickstart. Please modify your kickstart file to remove this option.") % mapping, DeprecationWarning) + + return (values, args) + + def parse_args(self, *args, **kwargs): + if kwargs.has_key("lineno"): + self.lineno = kwargs.pop("lineno") + + return OptionParser.parse_args(self, **kwargs) + + def __init__(self, mapping=None, version=None): + """Create a new KSOptionParser instance. Each KickstartCommand + subclass should create one instance of KSOptionParser, providing + at least the lineno attribute. mapping and version are not required. + Instance attributes: + + mapping -- A mapping from option strings to different values. + version -- The version of the kickstart syntax we are checking + against. + """ + OptionParser.__init__(self, option_class=KSOption, + add_help_option=False, + conflict_handler="resolve") + if mapping is None: + self.map = {} + else: + self.map = mapping + + self.lineno = None + self.option_seen = {} + self.version = version + +def _check_ksboolean(option, opt, value): + if value.lower() in ("on", "yes", "true", "1"): + return True + elif value.lower() in ("off", "no", "false", "0"): + return False + else: + mapping = {"opt": opt, "value": value} + raise OptionValueError(_("Option %(opt)s: invalid boolean value: %(value)r") % mapping) + +def _check_string(option, opt, value): + if len(value) > 2 and value.startswith("--"): + mapping = {"opt": opt, "value": value} + raise OptionValueError(_("Option %(opt)s: invalid string value: %(value)r") % mapping) + else: + return value + +# Creates a new Option class that supports several new attributes: +# - required: any option with this attribute must be supplied or an exception +# is thrown +# - introduced: the kickstart syntax version that this option first appeared +# in - an exception will be raised if the option is used and +# the specified syntax version is less than the value of this +# attribute +# - deprecated: the kickstart syntax version that this option was deprecated +# in - a DeprecationWarning will be thrown if the option is +# used and the specified syntax version is greater than the +# value of this attribute +# - removed: the kickstart syntax version that this option was removed in - an +# exception will be raised if the option is used and the specified +# syntax version is greated than the value of this attribute +# Also creates a new type: +# - ksboolean: support various kinds of boolean values on an option +# And two new actions: +# - map : allows you to define an opt -> val mapping such that dest gets val +# when opt is seen +# - map_extend: allows you to define an opt -> [val1, ... valn] mapping such +# that dest gets a list of vals built up when opt is seen +class KSOption (Option): + ATTRS = Option.ATTRS + ['introduced', 'deprecated', 'removed', 'required'] + ACTIONS = Option.ACTIONS + ("map", "map_extend",) + STORE_ACTIONS = Option.STORE_ACTIONS + ("map", "map_extend",) + + TYPES = Option.TYPES + ("ksboolean", "string") + TYPE_CHECKER = copy(Option.TYPE_CHECKER) + TYPE_CHECKER["ksboolean"] = _check_ksboolean + TYPE_CHECKER["string"] = _check_string + + def _check_required(self): + if self.required and not self.takes_value(): + raise OptionError(_("Required flag set for option that doesn't take a value"), self) + + # Make sure _check_required() is called from the constructor! + CHECK_METHODS = Option.CHECK_METHODS + [_check_required] + + def process (self, opt, value, values, parser): + Option.process(self, opt, value, values, parser) + parser.option_seen[self] = 1 + + # Override default take_action method to handle our custom actions. + def take_action(self, action, dest, opt, value, values, parser): + if action == "map": + values.ensure_value(dest, parser.map[opt.lstrip('-')]) + elif action == "map_extend": + values.ensure_value(dest, []).extend(parser.map[opt.lstrip('-')]) + else: + Option.take_action(self, action, dest, opt, value, values, parser) + + def takes_value(self): + # Deprecated options don't take a value. + return Option.takes_value(self) and not self.deprecated + + def __init__(self, *args, **kwargs): + self.deprecated = False + self.required = False + Option.__init__(self, *args, **kwargs) diff --git a/mic/pykickstart/parser.py b/mic/pykickstart/parser.py new file mode 100644 index 0000000..771ca1e --- /dev/null +++ b/mic/pykickstart/parser.py @@ -0,0 +1,702 @@ +# +# parser.py: Kickstart file parser. +# +# Chris Lumens +# +# Copyright 2005, 2006, 2007, 2008, 2011 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +""" +Main kickstart file processing module. + +This module exports several important classes: + + Script - Representation of a single %pre, %post, or %traceback script. + + Packages - Representation of the %packages section. + + KickstartParser - The kickstart file parser state machine. +""" + +from collections import Iterator +import os +import shlex +import sys +import tempfile +from copy import copy +from optparse import * +from urlgrabber import urlread +import urlgrabber.grabber as grabber + +import constants +from errors import KickstartError, KickstartParseError, KickstartValueError, formatErrorMsg +from ko import KickstartObject +from sections import * +import version + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +STATE_END = "end" +STATE_COMMANDS = "commands" + +ver = version.DEVEL + +def _preprocessStateMachine (lineIter): + l = None + lineno = 0 + + # Now open an output kickstart file that we are going to write to one + # line at a time. + (outF, outName) = tempfile.mkstemp("-ks.cfg", "", "/tmp") + + while True: + try: + l = lineIter.next() + except StopIteration: + break + + # At the end of the file? + if l == "": + break + + lineno += 1 + url = None + + ll = l.strip() + if not ll.startswith("%ksappend"): + os.write(outF, l) + continue + + # Try to pull down the remote file. + try: + ksurl = ll.split(' ')[1] + except: + raise KickstartParseError, formatErrorMsg(lineno, msg=_("Illegal url for %%ksappend: %s") % ll) + + try: + url = grabber.urlopen(ksurl) + except grabber.URLGrabError, e: + raise KickstartError, formatErrorMsg(lineno, msg=_("Unable to open %%ksappend file: %s") % e.strerror) + else: + # Sanity check result. Sometimes FTP doesn't catch a file + # is missing. + try: + if url.size < 1: + raise KickstartError, formatErrorMsg(lineno, msg=_("Unable to open %%ksappend file")) + except: + raise KickstartError, formatErrorMsg(lineno, msg=_("Unable to open %%ksappend file")) + + # If that worked, write the remote file to the output kickstart + # file in one burst. Then close everything up to get ready to + # read ahead in the input file. This allows multiple %ksappend + # lines to exist. + if url is not None: + os.write(outF, url.read()) + url.close() + + # All done - close the temp file and return its location. + os.close(outF) + return outName + +def preprocessFromString (s): + """Preprocess the kickstart file, provided as the string str. This + method is currently only useful for handling %ksappend lines, + which need to be fetched before the real kickstart parser can be + run. Returns the location of the complete kickstart file. + """ + i = iter(s.splitlines(True) + [""]) + rc = _preprocessStateMachine (i.next) + return rc + +def preprocessKickstart (f): + """Preprocess the kickstart file, given by the filename file. This + method is currently only useful for handling %ksappend lines, + which need to be fetched before the real kickstart parser can be + run. Returns the location of the complete kickstart file. + """ + try: + fh = urlopen(f) + except grabber.URLGrabError, e: + raise KickstartError, formatErrorMsg(0, msg=_("Unable to open input kickstart file: %s") % e.strerror) + + rc = _preprocessStateMachine (iter(fh.readlines())) + fh.close() + return rc + +class PutBackIterator(Iterator): + def __init__(self, iterable): + self._iterable = iter(iterable) + self._buf = None + + def __iter__(self): + return self + + def put(self, s): + self._buf = s + + def next(self): + if self._buf: + retval = self._buf + self._buf = None + return retval + else: + return self._iterable.next() + +### +### SCRIPT HANDLING +### +class Script(KickstartObject): + """A class representing a single kickstart script. If functionality beyond + just a data representation is needed (for example, a run method in + anaconda), Script may be subclassed. Although a run method is not + provided, most of the attributes of Script have to do with running the + script. Instances of Script are held in a list by the Version object. + """ + def __init__(self, script, *args , **kwargs): + """Create a new Script instance. Instance attributes: + + errorOnFail -- If execution of the script fails, should anaconda + stop, display an error, and then reboot without + running any other scripts? + inChroot -- Does the script execute in anaconda's chroot + environment or not? + interp -- The program that should be used to interpret this + script. + lineno -- The line number this script starts on. + logfile -- Where all messages from the script should be logged. + script -- A string containing all the lines of the script. + type -- The type of the script, which can be KS_SCRIPT_* from + pykickstart.constants. + """ + KickstartObject.__init__(self, *args, **kwargs) + self.script = "".join(script) + + self.interp = kwargs.get("interp", "/bin/sh") + self.inChroot = kwargs.get("inChroot", False) + self.lineno = kwargs.get("lineno", None) + self.logfile = kwargs.get("logfile", None) + self.errorOnFail = kwargs.get("errorOnFail", False) + self.type = kwargs.get("type", constants.KS_SCRIPT_PRE) + + def __str__(self): + """Return a string formatted for output to a kickstart file.""" + retval = "" + + if self.type == constants.KS_SCRIPT_PRE: + retval += '\n%pre' + elif self.type == constants.KS_SCRIPT_POST: + retval += '\n%post' + elif self.type == constants.KS_SCRIPT_TRACEBACK: + retval += '\n%traceback' + + if self.interp != "/bin/sh" and self.interp != "": + retval += " --interpreter=%s" % self.interp + if self.type == constants.KS_SCRIPT_POST and not self.inChroot: + retval += " --nochroot" + if self.logfile != None: + retval += " --logfile %s" % self.logfile + if self.errorOnFail: + retval += " --erroronfail" + + if self.script.endswith("\n"): + if ver >= version.F8: + return retval + "\n%s%%end\n" % self.script + else: + return retval + "\n%s\n" % self.script + else: + if ver >= version.F8: + return retval + "\n%s\n%%end\n" % self.script + else: + return retval + "\n%s\n" % self.script + + +## +## PACKAGE HANDLING +## +class Group: + """A class representing a single group in the %packages section.""" + def __init__(self, name="", include=constants.GROUP_DEFAULT): + """Create a new Group instance. Instance attributes: + + name -- The group's identifier + include -- The level of how much of the group should be included. + Values can be GROUP_* from pykickstart.constants. + """ + self.name = name + self.include = include + + def __str__(self): + """Return a string formatted for output to a kickstart file.""" + if self.include == constants.GROUP_REQUIRED: + return "@%s --nodefaults" % self.name + elif self.include == constants.GROUP_ALL: + return "@%s --optional" % self.name + else: + return "@%s" % self.name + + def __cmp__(self, other): + if self.name < other.name: + return -1 + elif self.name > other.name: + return 1 + return 0 + +class Packages(KickstartObject): + """A class representing the %packages section of the kickstart file.""" + def __init__(self, *args, **kwargs): + """Create a new Packages instance. Instance attributes: + + addBase -- Should the Base group be installed even if it is + not specified? + default -- Should the default package set be selected? + excludedList -- A list of all the packages marked for exclusion in + the %packages section, without the leading minus + symbol. + excludeDocs -- Should documentation in each package be excluded? + groupList -- A list of Group objects representing all the groups + specified in the %packages section. Names will be + stripped of the leading @ symbol. + excludedGroupList -- A list of Group objects representing all the + groups specified for removal in the %packages + section. Names will be stripped of the leading + -@ symbols. + handleMissing -- If unknown packages are specified in the %packages + section, should it be ignored or not? Values can + be KS_MISSING_* from pykickstart.constants. + packageList -- A list of all the packages specified in the + %packages section. + instLangs -- A list of languages to install. + """ + KickstartObject.__init__(self, *args, **kwargs) + + self.addBase = True + self.default = False + self.excludedList = [] + self.excludedGroupList = [] + self.excludeDocs = False + self.groupList = [] + self.handleMissing = constants.KS_MISSING_PROMPT + self.packageList = [] + self.instLangs = None + + def __str__(self): + """Return a string formatted for output to a kickstart file.""" + pkgs = "" + + if not self.default: + grps = self.groupList + grps.sort() + for grp in grps: + pkgs += "%s\n" % grp.__str__() + + p = self.packageList + p.sort() + for pkg in p: + pkgs += "%s\n" % pkg + + grps = self.excludedGroupList + grps.sort() + for grp in grps: + pkgs += "-%s\n" % grp.__str__() + + p = self.excludedList + p.sort() + for pkg in p: + pkgs += "-%s\n" % pkg + + if pkgs == "": + return "" + + retval = "\n%packages" + + if self.default: + retval += " --default" + if self.excludeDocs: + retval += " --excludedocs" + if not self.addBase: + retval += " --nobase" + if self.handleMissing == constants.KS_MISSING_IGNORE: + retval += " --ignoremissing" + if self.instLangs: + retval += " --instLangs=%s" % self.instLangs + + if ver >= version.F8: + return retval + "\n" + pkgs + "\n%end\n" + else: + return retval + "\n" + pkgs + "\n" + + def _processGroup (self, line): + op = OptionParser() + op.add_option("--nodefaults", action="store_true", default=False) + op.add_option("--optional", action="store_true", default=False) + + (opts, extra) = op.parse_args(args=line.split()) + + if opts.nodefaults and opts.optional: + raise KickstartValueError, _("Group cannot specify both --nodefaults and --optional") + + # If the group name has spaces in it, we have to put it back together + # now. + grp = " ".join(extra) + + if opts.nodefaults: + self.groupList.append(Group(name=grp, include=constants.GROUP_REQUIRED)) + elif opts.optional: + self.groupList.append(Group(name=grp, include=constants.GROUP_ALL)) + else: + self.groupList.append(Group(name=grp, include=constants.GROUP_DEFAULT)) + + def add (self, pkgList): + """Given a list of lines from the input file, strip off any leading + symbols and add the result to the appropriate list. + """ + existingExcludedSet = set(self.excludedList) + existingPackageSet = set(self.packageList) + newExcludedSet = set() + newPackageSet = set() + + excludedGroupList = [] + + for pkg in pkgList: + stripped = pkg.strip() + + if stripped[0] == "@": + self._processGroup(stripped[1:]) + elif stripped[0] == "-": + if stripped[1] == "@": + excludedGroupList.append(Group(name=stripped[2:])) + else: + newExcludedSet.add(stripped[1:]) + else: + newPackageSet.add(stripped) + + # Groups have to be excluded in two different ways (note: can't use + # sets here because we have to store objects): + excludedGroupNames = map(lambda g: g.name, excludedGroupList) + + # First, an excluded group may be cancelling out a previously given + # one. This is often the case when using %include. So there we should + # just remove the group from the list. + self.groupList = filter(lambda g: g.name not in excludedGroupNames, self.groupList) + + # Second, the package list could have included globs which are not + # processed by pykickstart. In that case we need to preserve a list of + # excluded groups so whatever tool doing package/group installation can + # take appropriate action. + self.excludedGroupList.extend(excludedGroupList) + + existingPackageSet = (existingPackageSet - newExcludedSet) | newPackageSet + existingExcludedSet = (existingExcludedSet - existingPackageSet) | newExcludedSet + + self.packageList = list(existingPackageSet) + self.excludedList = list(existingExcludedSet) + + +### +### PARSER +### +class KickstartParser: + """The kickstart file parser class as represented by a basic state + machine. To create a specialized parser, make a subclass and override + any of the methods you care about. Methods that don't need to do + anything may just pass. However, _stateMachine should never be + overridden. + """ + def __init__ (self, handler, followIncludes=True, errorsAreFatal=True, + missingIncludeIsFatal=True): + """Create a new KickstartParser instance. Instance attributes: + + errorsAreFatal -- Should errors cause processing to halt, or + just print a message to the screen? This + is most useful for writing syntax checkers + that may want to continue after an error is + encountered. + followIncludes -- If %include is seen, should the included + file be checked as well or skipped? + handler -- An instance of a BaseHandler subclass. If + None, the input file will still be parsed + but no data will be saved and no commands + will be executed. + missingIncludeIsFatal -- Should missing include files be fatal, even + if errorsAreFatal is False? + """ + self.errorsAreFatal = errorsAreFatal + self.followIncludes = followIncludes + self.handler = handler + self.currentdir = {} + self.missingIncludeIsFatal = missingIncludeIsFatal + + self._state = STATE_COMMANDS + self._includeDepth = 0 + self._line = "" + + self.version = self.handler.version + + global ver + ver = self.version + + self._sections = {} + self.setupSections() + + def _reset(self): + """Reset the internal variables of the state machine for a new kickstart file.""" + self._state = STATE_COMMANDS + self._includeDepth = 0 + + def getSection(self, s): + """Return a reference to the requested section (s must start with '%'s), + or raise KeyError if not found. + """ + return self._sections[s] + + def handleCommand (self, lineno, args): + """Given the list of command and arguments, call the Version's + dispatcher method to handle the command. Returns the command or + data object returned by the dispatcher. This method may be + overridden in a subclass if necessary. + """ + if self.handler: + self.handler.currentCmd = args[0] + self.handler.currentLine = self._line + retval = self.handler.dispatcher(args, lineno) + + return retval + + def registerSection(self, obj): + """Given an instance of a Section subclass, register the new section + with the parser. Calling this method means the parser will + recognize your new section and dispatch into the given object to + handle it. + """ + if not obj.sectionOpen: + raise TypeError, "no sectionOpen given for section %s" % obj + + if not obj.sectionOpen.startswith("%"): + raise TypeError, "section %s tag does not start with a %%" % obj.sectionOpen + + self._sections[obj.sectionOpen] = obj + + def _finalize(self, obj): + """Called at the close of a kickstart section to take any required + actions. Internally, this is used to add scripts once we have the + whole body read. + """ + obj.finalize() + self._state = STATE_COMMANDS + + def _handleSpecialComments(self, line): + """Kickstart recognizes a couple special comments.""" + if self._state != STATE_COMMANDS: + return + + # Save the platform for s-c-kickstart. + if line[:10] == "#platform=": + self.handler.platform = self._line[11:] + + def _readSection(self, lineIter, lineno): + obj = self._sections[self._state] + + while True: + try: + line = lineIter.next() + if line == "": + # This section ends at the end of the file. + if self.version >= version.F8: + raise KickstartParseError, formatErrorMsg(lineno, msg=_("Section does not end with %%end.")) + + self._finalize(obj) + except StopIteration: + break + + lineno += 1 + + # Throw away blank lines and comments, unless the section wants all + # lines. + if self._isBlankOrComment(line) and not obj.allLines: + continue + + if line.startswith("%"): + args = shlex.split(line) + + if args and args[0] == "%end": + # This is a properly terminated section. + self._finalize(obj) + break + elif args and args[0] == "%ksappend": + continue + elif args and (self._validState(args[0]) or args[0] in ["%include", "%ksappend"]): + # This is an unterminated section. + if self.version >= version.F8: + raise KickstartParseError, formatErrorMsg(lineno, msg=_("Section does not end with %%end.")) + + # Finish up. We do not process the header here because + # kicking back out to STATE_COMMANDS will ensure that happens. + lineIter.put(line) + lineno -= 1 + self._finalize(obj) + break + else: + # This is just a line within a section. Pass it off to whatever + # section handles it. + obj.handleLine(line) + + return lineno + + def _validState(self, st): + """Is the given section tag one that has been registered with the parser?""" + return st in self._sections.keys() + + def _tryFunc(self, fn): + """Call the provided function (which doesn't take any arguments) and + do the appropriate error handling. If errorsAreFatal is False, this + function will just print the exception and keep going. + """ + try: + fn() + except Exception as msg: + if self.errorsAreFatal: + raise + else: + print msg + + def _isBlankOrComment(self, line): + return line.isspace() or line == "" or line.lstrip()[0] == '#' + + def _stateMachine(self, lineIter): + # For error reporting. + lineno = 0 + + while True: + # Get the next line out of the file, quitting if this is the last line. + try: + self._line = lineIter.next() + if self._line == "": + break + except StopIteration: + break + + lineno += 1 + + # Eliminate blank lines, whitespace-only lines, and comments. + if self._isBlankOrComment(self._line): + self._handleSpecialComments(self._line) + continue + + # Remove any end-of-line comments. + sanitized = self._line.split("#")[0] + + # Then split the line. + args = shlex.split(sanitized.rstrip()) + + if args[0] == "%include": + # This case comes up primarily in ksvalidator. + if not self.followIncludes: + continue + + if len(args) == 1 or not args[1]: + raise KickstartParseError, formatErrorMsg(lineno) + + self._includeDepth += 1 + + try: + self.readKickstart(args[1], reset=False) + except KickstartError: + # Handle the include file being provided over the + # network in a %pre script. This case comes up in the + # early parsing in anaconda. + if self.missingIncludeIsFatal: + raise + + self._includeDepth -= 1 + continue + + # Now on to the main event. + if self._state == STATE_COMMANDS: + if args[0] == "%ksappend": + # This is handled by the preprocess* functions, so continue. + continue + elif args[0][0] == '%': + # This is the beginning of a new section. Handle its header + # here. + newSection = args[0] + if not self._validState(newSection): + raise KickstartParseError, formatErrorMsg(lineno, msg=_("Unknown kickstart section: %s" % newSection)) + + self._state = newSection + obj = self._sections[self._state] + self._tryFunc(lambda: obj.handleHeader(lineno, args)) + + # This will handle all section processing, kicking us back + # out to STATE_COMMANDS at the end with the current line + # being the next section header, etc. + lineno = self._readSection(lineIter, lineno) + else: + # This is a command in the command section. Dispatch to it. + self._tryFunc(lambda: self.handleCommand(lineno, args)) + elif self._state == STATE_END: + break + + def readKickstartFromString (self, s, reset=True): + """Process a kickstart file, provided as the string str.""" + if reset: + self._reset() + + # Add a "" to the end of the list so the string reader acts like the + # file reader and we only get StopIteration when we're after the final + # line of input. + i = PutBackIterator(s.splitlines(True) + [""]) + self._stateMachine (i) + + def readKickstart(self, f, reset=True): + """Process a kickstart file, given by the filename f.""" + if reset: + self._reset() + + # an %include might not specify a full path. if we don't try to figure + # out what the path should have been, then we're unable to find it + # requiring full path specification, though, sucks. so let's make + # the reading "smart" by keeping track of what the path is at each + # include depth. + if not os.path.exists(f): + if self.currentdir.has_key(self._includeDepth - 1): + if os.path.exists(os.path.join(self.currentdir[self._includeDepth - 1], f)): + f = os.path.join(self.currentdir[self._includeDepth - 1], f) + + cd = os.path.dirname(f) + if not cd.startswith("/"): + cd = os.path.abspath(cd) + self.currentdir[self._includeDepth] = cd + + try: + s = urlread(f) + except grabber.URLGrabError, e: + raise KickstartError, formatErrorMsg(0, msg=_("Unable to open input kickstart file: %s") % e.strerror) + + self.readKickstartFromString(s, reset=False) + + def setupSections(self): + """Install the sections all kickstart files support. You may override + this method in a subclass, but should avoid doing so unless you know + what you're doing. + """ + self._sections = {} + + # Install the sections all kickstart files support. + self.registerSection(PreScriptSection(self.handler, dataObj=Script)) + self.registerSection(PostScriptSection(self.handler, dataObj=Script)) + self.registerSection(TracebackScriptSection(self.handler, dataObj=Script)) + self.registerSection(PackageSection(self.handler)) diff --git a/mic/pykickstart/sections.py b/mic/pykickstart/sections.py new file mode 100644 index 0000000..44df856 --- /dev/null +++ b/mic/pykickstart/sections.py @@ -0,0 +1,244 @@ +# +# sections.py: Kickstart file sections. +# +# Chris Lumens +# +# Copyright 2011 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +""" +This module exports the classes that define a section of a kickstart file. A +section is a chunk of the file starting with a %tag and ending with a %end. +Examples of sections include %packages, %pre, and %post. + +You may use this module to define your own custom sections which will be +treated just the same as a predefined one by the kickstart parser. All that +is necessary is to create a new subclass of Section and call +parser.registerSection with an instance of your new class. +""" +from constants import * +from options import KSOptionParser +from version import * + +class Section(object): + """The base class for defining kickstart sections. You are free to + subclass this as appropriate. + + Class attributes: + + allLines -- Does this section require the parser to call handleLine + for every line in the section, even blanks and comments? + sectionOpen -- The string that denotes the start of this section. You + must start your tag with a percent sign. + timesSeen -- This attribute is for informational purposes only. It is + incremented every time handleHeader is called to keep + track of the number of times a section of this type is + seen. + """ + allLines = False + sectionOpen = "" + timesSeen = 0 + + def __init__(self, handler, **kwargs): + """Create a new Script instance. At the least, you must pass in an + instance of a baseHandler subclass. + + Valid kwargs: + + dataObj -- + """ + self.handler = handler + + self.version = self.handler.version + + self.dataObj = kwargs.get("dataObj", None) + + def finalize(self): + """This method is called when the %end tag for a section is seen. It + is not required to be provided. + """ + pass + + def handleLine(self, line): + """This method is called for every line of a section. Take whatever + action is appropriate. While this method is not required to be + provided, not providing it does not make a whole lot of sense. + + Arguments: + + line -- The complete line, with any trailing newline. + """ + pass + + def handleHeader(self, lineno, args): + """This method is called when the opening tag for a section is seen. + Not all sections will need this method, though all provided with + kickstart include one. + + Arguments: + + args -- A list of all strings passed as arguments to the section + opening tag. + """ + self.timesSeen += 1 + +class NullSection(Section): + """This defines a section that pykickstart will recognize but do nothing + with. If the parser runs across a %section that has no object registered, + it will raise an error. Sometimes, you may want to simply ignore those + sections instead. This class is useful for that purpose. + """ + def __init__(self, *args, **kwargs): + """Create a new NullSection instance. You must pass a sectionOpen + parameter (including a leading '%') for the section you wish to + ignore. + """ + Section.__init__(self, *args, **kwargs) + self.sectionOpen = kwargs.get("sectionOpen") + +class ScriptSection(Section): + allLines = True + + def __init__(self, *args, **kwargs): + Section.__init__(self, *args, **kwargs) + self._script = {} + self._resetScript() + + def _getParser(self): + op = KSOptionParser(self.version) + op.add_option("--erroronfail", dest="errorOnFail", action="store_true", + default=False) + op.add_option("--interpreter", dest="interpreter", default="/bin/sh") + op.add_option("--log", "--logfile", dest="log") + return op + + def _resetScript(self): + self._script = {"interp": "/bin/sh", "log": None, "errorOnFail": False, + "lineno": None, "chroot": False, "body": []} + + def handleLine(self, line): + self._script["body"].append(line) + + def finalize(self): + if " ".join(self._script["body"]).strip() == "": + return + + kwargs = {"interp": self._script["interp"], + "inChroot": self._script["chroot"], + "lineno": self._script["lineno"], + "logfile": self._script["log"], + "errorOnFail": self._script["errorOnFail"], + "type": self._script["type"]} + + s = self.dataObj (self._script["body"], **kwargs) + self._resetScript() + + if self.handler: + self.handler.scripts.append(s) + + def handleHeader(self, lineno, args): + """Process the arguments to a %pre/%post/%traceback header for later + setting on a Script instance once the end of the script is found. + This method may be overridden in a subclass if necessary. + """ + Section.handleHeader(self, lineno, args) + op = self._getParser() + + (opts, extra) = op.parse_args(args=args[1:], lineno=lineno) + + self._script["interp"] = opts.interpreter + self._script["lineno"] = lineno + self._script["log"] = opts.log + self._script["errorOnFail"] = opts.errorOnFail + if hasattr(opts, "nochroot"): + self._script["chroot"] = not opts.nochroot + +class PreScriptSection(ScriptSection): + sectionOpen = "%pre" + + def _resetScript(self): + ScriptSection._resetScript(self) + self._script["type"] = KS_SCRIPT_PRE + +class PostScriptSection(ScriptSection): + sectionOpen = "%post" + + def _getParser(self): + op = ScriptSection._getParser(self) + op.add_option("--nochroot", dest="nochroot", action="store_true", + default=False) + return op + + def _resetScript(self): + ScriptSection._resetScript(self) + self._script["chroot"] = True + self._script["type"] = KS_SCRIPT_POST + +class TracebackScriptSection(ScriptSection): + sectionOpen = "%traceback" + + def _resetScript(self): + ScriptSection._resetScript(self) + self._script["type"] = KS_SCRIPT_TRACEBACK + +class PackageSection(Section): + sectionOpen = "%packages" + + def handleLine(self, line): + if not self.handler: + return + + (h, s, t) = line.partition('#') + line = h.rstrip() + + self.handler.packages.add([line]) + + def handleHeader(self, lineno, args): + """Process the arguments to the %packages header and set attributes + on the Version's Packages instance appropriate. This method may be + overridden in a subclass if necessary. + """ + Section.handleHeader(self, lineno, args) + op = KSOptionParser(version=self.version) + op.add_option("--excludedocs", dest="excludedocs", action="store_true", + default=False) + op.add_option("--ignoremissing", dest="ignoremissing", + action="store_true", default=False) + op.add_option("--nobase", dest="nobase", action="store_true", + default=False) + op.add_option("--ignoredeps", dest="resolveDeps", action="store_false", + deprecated=FC4, removed=F9) + op.add_option("--resolvedeps", dest="resolveDeps", action="store_true", + deprecated=FC4, removed=F9) + op.add_option("--default", dest="defaultPackages", action="store_true", + default=False, introduced=F7) + op.add_option("--instLangs", dest="instLangs", type="string", + default="", introduced=F9) + + (opts, extra) = op.parse_args(args=args[1:], lineno=lineno) + + self.handler.packages.excludeDocs = opts.excludedocs + self.handler.packages.addBase = not opts.nobase + if opts.ignoremissing: + self.handler.packages.handleMissing = KS_MISSING_IGNORE + else: + self.handler.packages.handleMissing = KS_MISSING_PROMPT + + if opts.defaultPackages: + self.handler.packages.default = True + + if opts.instLangs: + self.handler.packages.instLangs = opts.instLangs diff --git a/mic/pykickstart/version.py b/mic/pykickstart/version.py new file mode 100644 index 0000000..102cc37 --- /dev/null +++ b/mic/pykickstart/version.py @@ -0,0 +1,197 @@ +# +# Chris Lumens +# +# Copyright 2006, 2007, 2008, 2009, 2010 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing to use, modify, +# copy, or redistribute it subject to the terms and conditions of the GNU +# General Public License v.2. This program is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the +# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 51 +# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Any Red Hat +# trademarks that are incorporated in the source code or documentation are not +# subject to the GNU General Public License and may only be used or replicated +# with the express permission of Red Hat, Inc. +# +""" +Methods for working with kickstart versions. + +This module defines several symbolic constants that specify kickstart syntax +versions. Each version corresponds roughly to one release of Red Hat Linux, +Red Hat Enterprise Linux, or Fedora Core as these are where most syntax +changes take place. + +This module also exports several functions: + + makeVersion - Given a version number, return an instance of the + matching handler class. + + returnClassForVersion - Given a version number, return the matching + handler class. This does not return an + instance of that class, however. + + stringToVersion - Convert a string representation of a version number + into the symbolic constant. + + versionToString - Perform the reverse mapping. + + versionFromFile - Read a kickstart file and determine the version of + syntax it uses. This requires the kickstart file to + have a version= comment in it. +""" +import imputil, re, sys +from urlgrabber import urlopen + +import gettext +_ = lambda x: gettext.ldgettext("pykickstart", x) + +from pykickstart.errors import KickstartVersionError + +# Symbolic names for internal version numbers. +RHEL3 = 900 +FC3 = 1000 +RHEL4 = 1100 +FC4 = 2000 +FC5 = 3000 +FC6 = 4000 +RHEL5 = 4100 +F7 = 5000 +F8 = 6000 +F9 = 7000 +F10 = 8000 +F11 = 9000 +F12 = 10000 +F13 = 11000 +RHEL6 = 11100 +F14 = 12000 +F15 = 13000 +F16 = 14000 + +# This always points at the latest version and is the default. +DEVEL = F16 + +# A one-to-one mapping from string representations to version numbers. +versionMap = { + "DEVEL": DEVEL, + "FC3": FC3, "FC4": FC4, "FC5": FC5, "FC6": FC6, "F7": F7, "F8": F8, + "F9": F9, "F10": F10, "F11": F11, "F12": F12, "F13": F13, + "F14": F14, "F15": F15, "F16": F16, + "RHEL3": RHEL3, "RHEL4": RHEL4, "RHEL5": RHEL5, "RHEL6": RHEL6 +} + +def stringToVersion(s): + """Convert string into one of the provided version constants. Raises + KickstartVersionError if string does not match anything. + """ + # First try these short forms. + try: + return versionMap[s.upper()] + except KeyError: + pass + + # Now try the Fedora versions. + m = re.match("^fedora.* (\d+)$", s, re.I) + + if m and m.group(1): + if versionMap.has_key("FC" + m.group(1)): + return versionMap["FC" + m.group(1)] + elif versionMap.has_key("F" + m.group(1)): + return versionMap["F" + m.group(1)] + else: + raise KickstartVersionError(_("Unsupported version specified: %s") % s) + + # Now try the RHEL versions. + m = re.match("^red hat enterprise linux.* (\d+)([\.\d]*)$", s, re.I) + + if m and m.group(1): + if versionMap.has_key("RHEL" + m.group(1)): + return versionMap["RHEL" + m.group(1)] + else: + raise KickstartVersionError(_("Unsupported version specified: %s") % s) + + # If nothing else worked, we're out of options. + raise KickstartVersionError(_("Unsupported version specified: %s") % s) + +def versionToString(version, skipDevel=False): + """Convert version into a string representation of the version number. + This is the reverse operation of stringToVersion. Raises + KickstartVersionError if version does not match anything. + """ + if not skipDevel and version == versionMap["DEVEL"]: + return "DEVEL" + + for (key, val) in versionMap.iteritems(): + if key == "DEVEL": + continue + elif val == version: + return key + + raise KickstartVersionError(_("Unsupported version specified: %s") % version) + +def versionFromFile(f): + """Given a file or URL, look for a line starting with #version= and + return the version number. If no version is found, return DEVEL. + """ + v = DEVEL + + fh = urlopen(f) + + while True: + try: + l = fh.readline() + except StopIteration: + break + + # At the end of the file? + if l == "": + break + + if l.isspace() or l.strip() == "": + continue + + if l[:9] == "#version=": + v = stringToVersion(l[9:].rstrip()) + break + + fh.close() + return v + +def returnClassForVersion(version=DEVEL): + """Return the class of the syntax handler for version. version can be + either a string or the matching constant. Raises KickstartValueError + if version does not match anything. + """ + try: + version = int(version) + module = "%s" % versionToString(version, skipDevel=True) + except ValueError: + module = "%s" % version + version = stringToVersion(version) + + module = module.lower() + + try: + import pykickstart.handlers + sys.path.extend(pykickstart.handlers.__path__) + found = imputil.imp.find_module(module) + loaded = imputil.imp.load_module(module, found[0], found[1], found[2]) + + for (k, v) in loaded.__dict__.iteritems(): + if k.lower().endswith("%shandler" % module): + return v + except: + raise KickstartVersionError(_("Unsupported version specified: %s") % version) + +def makeVersion(version=DEVEL): + """Return a new instance of the syntax handler for version. version can be + either a string or the matching constant. This function is useful for + standalone programs which just need to handle a specific version of + kickstart syntax (as provided by a command line argument, for example) + and need to instantiate the correct object. + """ + cl = returnClassForVersion(version) + return cl() diff --git a/mic/utils/errors.py b/mic/utils/errors.py index 7d7c69d..3b0c861 100644 --- a/mic/utils/errors.py +++ b/mic/utils/errors.py @@ -29,7 +29,7 @@ class CreatorError(Exception): def __init__(self, msg): Exception.__init__(self, msg) -class KickstartError(CreatorError): +class KsError(CreatorError): pass class MountError(CreatorError): pass diff --git a/plugins/backend/yumpkgmgr.py b/plugins/backend/yumpkgmgr.py index 9f3ddfb..916781b 100644 --- a/plugins/backend/yumpkgmgr.py +++ b/plugins/backend/yumpkgmgr.py @@ -23,7 +23,7 @@ import logging import yum import rpmUtils -from mic.kickstart.pykickstart import parser as ksparser +from pykickstart import parser as ksparser import urlparse import urllib2 as u2 diff --git a/setup.py b/setup.py index 1d3a17a..fe045c7 100644 --- a/setup.py +++ b/setup.py @@ -36,9 +36,9 @@ PACKAGES = [MOD_NAME, MOD_NAME + '/pluginbase', MOD_NAME + '/kickstart', MOD_NAME + '/kickstart/custom_commands', - MOD_NAME + '/kickstart/pykickstart', - MOD_NAME + '/kickstart/pykickstart/commands', - MOD_NAME + '/kickstart/pykickstart/handlers', + MOD_NAME + '/pykickstart', + MOD_NAME + '/pykickstart/commands', + MOD_NAME + '/pykickstart/handlers', ] setup(name=MOD_NAME,