[pykickstart][PATCH][rhel6] Add cipher option for encrypted autopart.

David Lehman dlehman at redhat.com
Fri Oct 12 19:54:47 UTC 2012


Related: rhbz#843174
---
 pykickstart/commands/autopart.py | 26 +++++++++++++++++++++++++-
 pykickstart/handlers/control.py  |  2 +-
 tests/commands/autopart.py       | 13 +++++++++++++
 3 files changed, 39 insertions(+), 2 deletions(-)

diff --git a/pykickstart/commands/autopart.py b/pykickstart/commands/autopart.py
index cf28b5c..2885ad4 100644
--- a/pykickstart/commands/autopart.py
+++ b/pykickstart/commands/autopart.py
@@ -1,7 +1,7 @@
 #
 # Chris Lumens <clumens at redhat.com>
 #
-# Copyright 2005, 2006, 2007, 2008 Red Hat, Inc.
+# Copyright 2005, 2006, 2007, 2008, 2012 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
@@ -117,3 +117,27 @@ class F12_AutoPart(F9_AutoPart):
         op.add_option("--escrowcert")
         op.add_option("--backuppassphrase", action="store_true", default=False)
         return op
+
+class RHEL6_AutoPart(F12_AutoPart):
+    removedKeywords = F12_AutoPart.removedKeywords
+    removedAttrs = F12_AutoPart.removedAttrs
+
+    def __init__(self, writePriority=100, *args, **kwargs):
+        F12_AutoPart.__init__(self, writePriority=writePriority, *args, **kwargs)
+        self.cipher = kwargs.get("cipher", "")
+
+    def __str__(self):
+        retval = F12_AutoPart.__str__(self)
+
+        if self.encrypted and self.cipher:
+            # remove any trailing newline
+            retval = retval.strip()
+            retval += " --cipher=\"%s\"" % self.cipher
+            retval += "\n"
+
+        return retval
+
+    def _getParser(self):
+        op = F12_AutoPart._getParser(self)
+        op.add_option("--cipher")
+        return op
diff --git a/pykickstart/handlers/control.py b/pykickstart/handlers/control.py
index cf24586..aa1ad39 100644
--- a/pykickstart/handlers/control.py
+++ b/pykickstart/handlers/control.py
@@ -813,7 +813,7 @@ commandMap = {
     RHEL6: {
         "auth": authconfig.FC3_Authconfig,
         "authconfig": authconfig.FC3_Authconfig,
-        "autopart": autopart.F12_AutoPart,
+        "autopart": autopart.RHEL6_AutoPart,
         "autostep": autostep.FC3_AutoStep,
         "bootloader": bootloader.RHEL6_Bootloader,
         "cdrom": method.RHEL6_Method,
diff --git a/tests/commands/autopart.py b/tests/commands/autopart.py
index 98b5e8a..6285fec 100644
--- a/tests/commands/autopart.py
+++ b/tests/commands/autopart.py
@@ -75,5 +75,18 @@ class F12_TestCase(F9_TestCase):
         self.assert_parse_error("autopart --backuppassphrase=False")
         self.assert_parse_error("autopart --backuppassphrase=True")
 
+class RHEL6_TestCase(F12_TestCase):
+    def runTest(self):
+        F12_TestCase.runTest(self)
+
+        # pass
+        self.assert_parse("autopart --cipher=foo", "autopart\n")
+        self.assert_parse("autopart --encrypted --cipher=3-rot13",
+                          "autopart --encrypted --cipher=\"3-rot13\"\n")
+
+        # fail
+        self.assert_parse_error("autopart --cipher")
+        self.assert_parse_error("autopart --encrypted --cipher")
+
 if __name__ == "__main__":
     unittest.main()
-- 
1.7.11.4



More information about the anaconda-patches mailing list