本文整理汇总了Python中pykickstart._函数的典型用法代码示例。如果您正苦于以下问题:Python _函数的具体用法?Python _怎么用?Python _使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了_函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: parse
def parse(self, args):
(opts, extra) = self.op.parse_args(args=args, lineno=self.lineno)
data = self.handler.BTRFSData()
self._setToObj(self.op, opts, data)
data.lineno = self.lineno
if len(extra) == 0:
raise KickstartValueError(formatErrorMsg(self.lineno, msg=_("btrfs must be given a mountpoint")))
if len(extra) == 1 and not data.subvol:
raise KickstartValueError(formatErrorMsg(self.lineno, msg=_("btrfs must be given a list of partitions")))
elif len(extra) == 1:
raise KickstartValueError(formatErrorMsg(self.lineno, msg=_("btrfs subvol requires specification of parent volume")))
if data.subvol and not data.name:
raise KickstartValueError(formatErrorMsg(self.lineno, msg=_("btrfs subvolume requires a name")))
data.mountpoint = extra[0]
data.devices = extra[1:]
# Check for duplicates in the data list.
if data in self.dataList():
warnings.warn(_("A btrfs volume with the mountpoint %s has already been defined.") % data.label)
return data
示例2: formatErrorMsg
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
示例3: _parseJoin
def _parseJoin(self, args):
try:
# We only support these args
opts, remaining = getopt.getopt(args, "", ("client-software=",
"server-software=",
"membership-software=",
"one-time-password=",
"no-password",
"computer-ou="))
except getopt.GetoptError as ex:
raise KickstartValueError(formatErrorMsg(self.lineno, msg=_(
"Invalid realm arguments: %s") % ex))
if len(remaining) != 1:
raise KickstartValueError(formatErrorMsg(self.lineno, msg=_(
"Specify only one realm to join")))
# Parse successful, just use this as the join command
self.join_realm = remaining[0]
self.join_args = args
# Build a discovery command
self.discover_options = []
supported_discover_options = ("--client-software",
"--server-software",
"--membership-software")
for (o, a) in opts:
if o in supported_discover_options:
self.discover_options.append("%s=%s" % (o, a))
示例4: check_values
def check_values (self, values, args):
def seen(option):
return option in self.option_seen
def usedTooNew(option):
return option.introduced and option.introduced > self.version
def usedDeprecated(option):
return option.deprecated
def usedRemoved(option):
return option.removed and option.removed <= self.version
for option in [o for o in self.option_list if isinstance(o, Option)]:
if option.required and not seen(option):
raise KickstartValueError(formatErrorMsg(self.lineno, _("Option %s is required") % option))
elif seen(option) and usedTooNew(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(option) and usedRemoved(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(option) and usedDeprecated(option) and self.version >= option.deprecated:
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)
示例5: stringToVersion
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(r"^fedora.* (\d+)$", s, re.I)
if m and m.group(1):
if "FC" + m.group(1) in versionMap:
return versionMap["FC" + m.group(1)]
elif "F" + m.group(1) in versionMap:
return versionMap["F" + m.group(1)]
else:
raise KickstartVersionError(_("Unsupported version specified: %s") % s)
# Now try the RHEL versions.
m = re.match(r"^red hat enterprise linux.* (\d+)([\.\d]*)$", s, re.I)
if m and m.group(1):
if "RHEL" + m.group(1) in versionMap:
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)
示例6: _preprocessStateMachine
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 = next(lineIter)
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:
if '://' in ksurl:
url = urlopen(ksurl)
else:
url = open(ksurl, 'r')
except (URLError, IOError) as e:
raise KickstartError(formatErrorMsg(lineno, msg=_("Unable to open %%ksappend file: %s") % str(e)))
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
示例7: parse
def parse(self, args):
retval = F14_Url.parse(self, args)
if self.url and self.mirrorlist:
raise KickstartValueError(formatErrorMsg(self.lineno, msg=_("Only one of --url and --mirrorlist may be specified for url command.")))
if not self.url and not self.mirrorlist:
raise KickstartValueError(formatErrorMsg(self.lineno, msg=_("One of --url or --mirrorlist must be specified for url command.")))
return retval
示例8: parse
def parse(self, args):
(opts, extra) = self.op.parse_args(args=args, lineno=self.lineno)
self._setToSelf(self.op, opts)
if len(extra) != 0:
raise KickstartValueError(formatErrorMsg(self.lineno, msg=_("Kickstart command %s does not take any arguments") % "eula"))
if not self.agreed:
raise KickstartValueError(formatErrorMsg(self.lineno, msg=_("Kickstart command eula expects the --agreed option")))
return self
示例9: _parseArguments
def _parseArguments(self, string):
if self.join_realm:
raise KickstartParseError(formatErrorMsg(self.lineno, msg=_(
"The realm command 'join' should only be specified once")))
args = shlex.split(string)
if not args:
raise KickstartValueError(formatErrorMsg(self.lineno, msg=_(
"Missing realm command arguments")))
command = args.pop(0)
if command == "join":
self._parseJoin(args)
else:
raise KickstartValueError(formatErrorMsg(self.lineno, msg=_(
"Unsupported realm '%s' command" % command)))
示例10: parse
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
示例11: handleHeader
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, deprecated=F18)
op.add_option("--nocore", dest="nocore", action="store_true",
default=False, introduced=F21)
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)
op.add_option("--multilib", dest="multiLib", action="store_true",
default=False, introduced=F18)
(opts, _extra) = op.parse_args(args=args[1:], lineno=lineno)
if opts.defaultPackages and opts.nobase:
raise KickstartParseError(formatErrorMsg(lineno, msg=_("--default and --nobase cannot be used together")))
elif opts.defaultPackages and opts.nocore:
raise KickstartParseError(formatErrorMsg(lineno, msg=_("--default and --nocore cannot be used together")))
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
self.handler.packages.nocore = opts.nocore
self.handler.packages.multiLib = opts.multiLib
self.handler.packages.seen = True
示例12: parse
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
示例13: parse
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))
return self
示例14: readKickstart
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._includeDepth - 1 in self.currentdir:
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 = open(f, 'r').read()
except IOError as e:
raise KickstartError(formatErrorMsg(0, msg=_("Unable to open input kickstart file: %s") % str(e)))
self.readKickstartFromString(s, reset=False)
示例15: dispatcher
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 cmd not in self.commands:
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
self.commands[cmd].seen = True
# 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