[pykickstart] Add autopart --fstype support (#1112697)
Brian C. Lane
bcl at redhat.com
Sat Jun 28 00:58:52 UTC 2014
This will allow the user to specify the filesystem type to use instead
of the default when auto-partitioning.
---
pykickstart/commands/autopart.py | 41 ++++++++++++++++++++++++++++++++++++++++
pykickstart/handlers/f21.py | 2 +-
tests/commands/autopart.py | 19 +++++++++++++++++++
3 files changed, 61 insertions(+), 1 deletion(-)
diff --git a/pykickstart/commands/autopart.py b/pykickstart/commands/autopart.py
index e19a89f..19fb266 100644
--- a/pykickstart/commands/autopart.py
+++ b/pykickstart/commands/autopart.py
@@ -336,3 +336,44 @@ class F20_AutoPart(F18_AutoPart):
conflicting_command
raise KickstartParseError(formatErrorMsg(self.lineno, msg=errorMsg))
return retval
+
+class F21_AutoPart(F20_AutoPart):
+ removedKeywords = F20_AutoPart.removedKeywords
+ removedAttrs = F20_AutoPart.removedAttrs
+
+ def __init__(self, writePriority=100, *args, **kwargs):
+ F20_AutoPart.__init__(self, writePriority=writePriority, *args, **kwargs)
+ self.fstype = kwargs.get("fstype", "")
+
+ def __str__(self):
+ retval = F20_AutoPart.__str__(self)
+ if not self.autopart:
+ return retval
+
+ if self.fstype:
+ # remove any trailing newline
+ retval = retval.strip()
+ retval += " --fstype=%s" % self.fstype
+ retval += "\n"
+
+ return retval
+
+ def _getParser(self):
+ op = F20_AutoPart._getParser(self)
+ op.add_option("--fstype")
+ return op
+
+ def parse(self, args):
+ # call the overriden command to do it's job first
+ retval = F20_AutoPart.parse(self, args)
+
+ # btrfs is not a valid filesystem type
+ if self.fstype == "btrfs":
+ raise KickstartParseError(formatErrorMsg(self.lineno,
+ msg=_("autopart --fstype=btrfs is not valid fstype, use --type=btrfs instead")))
+
+ if self._typeAsStr() == "btrfs" and self.fstype:
+ raise KickstartParseError(formatErrorMsg(self.lineno,
+ msg=_("autopart --fstype cannot be used with --type=btrfs")))
+
+ return retval
diff --git a/pykickstart/handlers/f21.py b/pykickstart/handlers/f21.py
index 23220ca..cac66bc 100644
--- a/pykickstart/handlers/f21.py
+++ b/pykickstart/handlers/f21.py
@@ -29,7 +29,7 @@ class F21Handler(BaseHandler):
commandMap = {
"auth": commands.authconfig.FC3_Authconfig,
"authconfig": commands.authconfig.FC3_Authconfig,
- "autopart": commands.autopart.F20_AutoPart,
+ "autopart": commands.autopart.F21_AutoPart,
"autostep": commands.autostep.FC3_AutoStep,
"bootloader": commands.bootloader.F21_Bootloader,
"btrfs": commands.btrfs.F17_BTRFS,
diff --git a/tests/commands/autopart.py b/tests/commands/autopart.py
index 962b02a..311f253 100644
--- a/tests/commands/autopart.py
+++ b/tests/commands/autopart.py
@@ -147,8 +147,27 @@ class F18_TestCase(F17_TestCase):
class F20_TestCase(F18_TestCase):
def runTest(self):
+ F18_TestCase.runTest(self)
+
self.assert_parse("autopart --type=thinp",
"autopart --type=thinp\n")
+class F21_TestCase(F20_TestCase):
+ def runTest(self):
+ F20_TestCase.runTest(self)
+
+ # pass
+ self.assert_parse("autopart --fstype=ext4",
+ 'autopart --fstype=ext4\n')
+ self.assert_parse("autopart --encrypted --fstype=ext4",
+ 'autopart --encrypted --fstype=ext4\n')
+ self.assert_parse("autopart --type=lvm --fstype=xfs",
+ "autopart --type=lvm --fstype=xfs\n")
+
+ # fail
+ self.assert_parse_error("autopart --fstype")
+ self.assert_parse_error("autopart --fstype=btrfs")
+ self.assert_parse_error("autopart --type=btrfs --fstype=xfs")
+
if __name__ == "__main__":
unittest.main()
--
1.9.3
More information about the anaconda-patches
mailing list