---
pykickstart/commands/method.py | 65 ++++++++++++++++++++++++++++++++++++++++-
pykickstart/handlers/control.py | 8 ++---
tests/commands/method.py | 20 +++++++++++++
3 files changed, 88 insertions(+), 5 deletions(-)
diff --git a/pykickstart/commands/method.py b/pykickstart/commands/method.py
index b1a24f6..f91bf59 100644
--- a/pykickstart/commands/method.py
+++ b/pykickstart/commands/method.py
@@ -196,7 +196,7 @@ class F13_Method(FC6_Method):
class F14_Method(F13_Method):
removedKeywords = F13_Method.removedKeywords
- removedAttrs = F13_Method.removedAttrs
+ removedAttrs = F13_Method.removedAttrs
def __init__(self, *args, **kwargs):
F13_Method.__init__(self, *args, **kwargs)
@@ -230,3 +230,66 @@ class F14_Method(F13_Method):
return op
RHEL6_Method = F14_Method
+
+class F18_Method(F14_Method):
+ removedKeywords = F14_Method.removedKeywords
+ removedAttrs = F14_Method.removedAttrs
+
+ def __init__(self, *args, **kwargs):
+ F14_Method.__init__(self, *args, **kwargs)
+ self.mirrorlist = None
+
+ def __eq__(self, other):
+ if not F14_Method.__eq__(self, other):
+ return False
+
+ if self.method == "url":
+ return self.mirrorlist == other.mirrorlist
+ else:
+ return True
+
+ def __str__(self):
+ if self.method == "url":
+ retval = KickstartCommand.__str__(self)
+ retval += "# Use network installation\n"
+
+ if self.url:
+ retval += "url --url=\"%s\"" % self.url
+ elif self.mirrorlist:
+ retval += "url --mirrorlist=\"%s\"" %
self.mirrorlist
+
+ if self.proxy:
+ retval += " --proxy=\"%s\"" % self.proxy
+
+ if self.noverifyssl:
+ retval += " --noverifyssl"
+
+ return retval + "\n"
+ else:
+ retval = F14_Method.__str__(self)
+
+ return retval
+
+ def _getParser(self):
+ op = F14_Method._getParser(self)
+
+ if self.currentCmd == "url":
+ # This overrides the option set in the superclass's _getParser
+ # method. --url is no longer required because you could do
+ # --mirrorlist instead.
+ op.add_option("--url", dest="url")
+ op.add_option("--mirrorlist", dest="mirrorlist")
+
+ return op
+
+ def parse(self, args):
+ retval = F14_Method.parse(self, args)
+
+ if self.currentCmd == "url":
+ 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
diff --git a/pykickstart/handlers/control.py b/pykickstart/handlers/control.py
index fb1424d..a3d6408 100644
--- a/pykickstart/handlers/control.py
+++ b/pykickstart/handlers/control.py
@@ -892,7 +892,7 @@ commandMap = {
"autostep": autostep.FC3_AutoStep,
"bootloader": bootloader.F18_Bootloader,
"btrfs": btrfs.F17_BTRFS,
- "cdrom": method.F14_Method,
+ "cdrom": method.F18_Method,
"clearpart": clearpart.F17_ClearPart,
"cmdline": displaymode.FC3_DisplayMode,
"device": device.F8_Device,
@@ -905,7 +905,7 @@ commandMap = {
"graphical": displaymode.FC3_DisplayMode,
"group": group.F12_Group,
"halt": reboot.F18_Reboot,
- "harddrive": method.F14_Method,
+ "harddrive": method.F18_Method,
"ignoredisk": ignoredisk.F14_IgnoreDisk,
"install": upgrade.F11_Upgrade,
"iscsi": iscsi.F17_Iscsi,
@@ -917,7 +917,7 @@ commandMap = {
"mediacheck": mediacheck.FC4_MediaCheck,
"multipath": multipath.FC6_MultiPath,
"network": network.F18_Network,
- "nfs": method.F14_Method,
+ "nfs": method.F18_Method,
"part": partition.F18_Partition,
"partition": partition.F18_Partition,
"poweroff": reboot.F18_Reboot,
@@ -935,7 +935,7 @@ commandMap = {
"timezone": timezone.F18_Timezone,
"updates": updates.F7_Updates,
"upgrade": upgrade.F11_Upgrade,
- "url": method.F14_Method,
+ "url": method.F18_Method,
"user": user.F12_User,
"vnc": vnc.F9_Vnc,
"volgroup": volgroup.FC16_VolGroup,
diff --git a/tests/commands/method.py b/tests/commands/method.py
index fe138e8..b80ca5e 100644
--- a/tests/commands/method.py
+++ b/tests/commands/method.py
@@ -112,6 +112,26 @@ class F14_TestCase(F13_TestCase):
# fail
self.assert_parse_error("cdrom --noverifyssl", KickstartParseError)
+class F18_TestCase(F14_TestCase):
+ def runTest(self):
+ # run F14 test case.
+ F14_TestCase.runTest(self)
+
+ # pass
+ self.assert_parse("url --mirrorlist=http://www.wherever.com/mirror",
+ "url
--mirrorlist=\"http://www.wherever.com/mirror\"\n")
+
+ # fail
+ # missing one of required options --url or --mirrorlist
+ self.assert_parse_error("url", KickstartValueError)
+ self.assert_parse_error("url --mirrorlist", KickstartParseError)
+
+ # It's --url, not --baseurl.
+ self.assert_parse_error("url --baseurl=www.wherever.com",
KickstartParseError)
+
+ # only one of --url or --mirrorlist may be specified
+ self.assert_parse_error("url --url=www.wherever.com
--mirrorlist=www.wherever.com",
+ KickstartValueError)
if __name__ == "__main__":
unittest.main()
--
1.7.11.2