[PATCH 1/2] Add --list= mode to clearpart for explicit list of partitions to remove.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



---
 pykickstart/commands/clearpart.py |   26 +++++++++++++++++++++++++-
 pykickstart/constants.py          |    1 +
 pykickstart/handlers/control.py   |    2 +-
 tests/commands/clearpart.py       |    6 ++++++
 4 files changed, 33 insertions(+), 2 deletions(-)

diff --git a/pykickstart/commands/clearpart.py b/pykickstart/commands/clearpart.py
index a8089fc..f918f5a 100644
--- a/pykickstart/commands/clearpart.py
+++ b/pykickstart/commands/clearpart.py
@@ -1,7 +1,7 @@
 #
 # Chris Lumens <clumens@xxxxxxxxxx>
 #
-# Copyright 2005, 2006, 2007 Red Hat, Inc.
+# Copyright 2005, 2006, 2007, 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
@@ -84,3 +84,27 @@ class FC3_ClearPart(KickstartCommand):
         (opts, extra) = self.op.parse_args(args=args, lineno=self.lineno)
         self._setToSelf(self.op, opts)
         return self
+
+class F17_ClearPart(FC3_ClearPart):
+    def __init__(self, *args, **kwargs):
+        super(F17_ClearPart, self).__init__(*args, **kwargs)
+        self.devices = kwargs.get("devices", [])
+
+    def __str__(self):
+        s = super(F17_ClearPart, self).__str__()
+        if s and len(self.devices) > 0:
+            s = s.rstrip()
+            s += " --list=" + ",".join(self.devices)
+            s += "\n"
+        return s
+
+    def _getParser(self):
+        op = super(F17_ClearPart, self)._getParser()
+        def list_cb (option, opt_str, value, parser):
+            self.type = CLEARPART_TYPE_LIST
+            for d in value.split(','):
+                parser.values.ensure_value(option.dest, []).append(d)
+
+        op.add_option("--list", dest="devices", action="callback",
+                      callback=list_cb, nargs=1, type="string")
+        return op
diff --git a/pykickstart/constants.py b/pykickstart/constants.py
index d6fb9d4..d476c49 100644
--- a/pykickstart/constants.py
+++ b/pykickstart/constants.py
@@ -20,6 +20,7 @@
 CLEARPART_TYPE_LINUX = 0
 CLEARPART_TYPE_ALL = 1
 CLEARPART_TYPE_NONE = 2
+CLEARPART_TYPE_LIST = 3
 
 AUTOPART_TYPE_PLAIN = 0
 AUTOPART_TYPE_BTRFS = 1
diff --git a/pykickstart/handlers/control.py b/pykickstart/handlers/control.py
index 31385f7..db9acc5 100644
--- a/pykickstart/handlers/control.py
+++ b/pykickstart/handlers/control.py
@@ -832,7 +832,7 @@ commandMap = {
         "bootloader": bootloader.F17_Bootloader,
         "btrfs": btrfs.F17_BTRFS,
         "cdrom": method.F14_Method,
-        "clearpart": clearpart.FC3_ClearPart,
+        "clearpart": clearpart.F17_ClearPart,
         "cmdline": displaymode.FC3_DisplayMode,
         "device": device.F8_Device,
         "deviceprobe": deviceprobe.FC3_DeviceProbe,
diff --git a/tests/commands/clearpart.py b/tests/commands/clearpart.py
index 4409033..7f441e6 100644
--- a/tests/commands/clearpart.py
+++ b/tests/commands/clearpart.py
@@ -29,5 +29,11 @@ class FC3_TestCase(CommandTest):
         # nonsensical parameter test
         self.assert_parse_error("clearpart --cheese")
 
+class F17_TestCase(FC3_TestCase):
+    def runTest(self):
+        FC3_TestCase.runTest(self)
+        self.assert_parse("clearpart --list=sda2,sda3,disk/by-label/foo",
+                          "clearpart --list=sda2,sda3,disk/by-label/foo\n")
+
 if __name__ == "__main__":
     unittest.main()
-- 
1.7.7.6

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list


[Index of Archives]     [Kickstart]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]
  Powered by Linux