On 09/30/2014 07:06 PM, mulhern wrote:
Do not allow selection unless btrfs filesystem type is supported.
Signed-off-by: mulhern <amulhern(a)redhat.com>
---
pyanaconda/ui/gui/spokes/custom.py | 22 ++++++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/pyanaconda/ui/gui/spokes/custom.py b/pyanaconda/ui/gui/spokes/custom.py
index e19d920..f46c6f6 100644
--- a/pyanaconda/ui/gui/spokes/custom.py
+++ b/pyanaconda/ui/gui/spokes/custom.py
@@ -1275,6 +1275,25 @@ class CustomPartitioningSpoke(NormalSpoke, StorageChecker):
device.originalFormat.type not in self._fs_types:
self._fsCombo.append_text(device.originalFormat.name)
+ def _btrfs_in_typecombo(self, device):
+ """ Whether BTRFS should appear in device type combo box.
+
+ :param device: the device being displayed
+ :type device: :class:`blivet.devices.StorageDevice`
+ :rtype: bool
+ :returns: True if BTRFS should appear, otherwise False
+ """
+ device = device.raw_device
Shouldn't matter since it is impossible to encrypt a btrfs volume or
subvolume -- you can only encrypt the member devices. Shouldn't hurt,
either, I guess.
+
+ # The device is btrfs, so btrfs must be shown.
+ if device.type == "btrfs":
+ return True
You probably want device.type.startswith("btrfs") since it could be any
of "btrfs", "btrfs volume", "btrfs subvolume", "btrfs
snapshot". I think
you could also check device.format.type for "btrfs".
+
+ # Return True if btrfs filesystem is both allowed and supported.
+ fmt = getFormat("btrfs")
+ return fmt.supported and fmt.formattable and \
+ device.format.type not in PARTITION_ONLY_FORMAT_TYPES + ("swap",)
+
Device existence doesn't factor in because of other logic, I assume.
def _setup_device_type_combo(self, device, use_dev,
device_name):
# these device types should always be listed
should_appear = {"DEVICE_TYPE_PARTITION",
"DEVICE_TYPE_LVM", "DEVICE_TYPE_LVM_THINP"}
@@ -1283,8 +1302,7 @@ class CustomPartitioningSpoke(NormalSpoke, StorageChecker):
if (use_dev.type == "mdarray" or len(self._clearpartDevices) >
1):
should_appear.add("DEVICE_TYPE_MD")
- # if the format is swap the device type can't be btrfs
- if use_dev.format.type not in PARTITION_ONLY_FORMAT_TYPES +
("swap",):
+ if self._btrfs_in_typecombo(device):
should_appear.add("DEVICE_TYPE_BTRFS")
# only include disk if the current device is a disk
Looks good otherwise.
David