From adf4df4605970b07d637475a0d78cfddc4640eb9 Mon Sep 17 00:00:00 2001 From: Neal Gompa Date: Fri, 24 Oct 2025 09:07:23 -0400 Subject: [PATCH] btrfs: Restore support for Btrfs on RHEL10 Red Hat Enterprise Linux and baseline CentOS Stream have removed support for Btrfs, but we need it back for CentOS Hyperscale. --- pykickstart/commands/autopart.py | 32 +------------------------------ pykickstart/commands/btrfs.py | 9 +++------ pykickstart/commands/logvol.py | 2 +- pykickstart/commands/partition.py | 2 +- pykickstart/commands/raid.py | 6 +++--- tests/commands/autopart.py | 3 +-- tests/commands/btrfs.py | 7 ++----- 7 files changed, 12 insertions(+), 49 deletions(-) diff --git a/pykickstart/commands/autopart.py b/pykickstart/commands/autopart.py index d7b5c072..3e77e4f6 100644 --- a/pykickstart/commands/autopart.py +++ b/pykickstart/commands/autopart.py @@ -599,34 +599,4 @@ class F38_AutoPart(F29_AutoPart): return retval class RHEL10_AutoPart(F38_AutoPart): - removedKeywords = F38_AutoPart.removedKeywords - removedAttrs = F38_AutoPart.removedAttrs - - def parse(self, args): - # call the overriden command to do it's job first - retval = F38_AutoPart.parse(self, args) - - # btrfs is no more supported - if self._typeAsStr() == "btrfs": - raise KickstartParseError(_("autopart --type=btrfs is not supported"), - lineno=self.lineno) - - return retval - - def _getParser(self): - "Only necessary for the type change documentation" - op = F38_AutoPart._getParser(self) - for action in op._actions: - if "--type" in action.option_strings: - action.help += """ - - .. versionchanged:: %s - - Partitioning scheme 'btrfs' was removed.""" % versionToLongString(RHEL8) - if "--fstype" in action.option_strings: - action.help += """ - - .. versionchanged:: %s - - Partitioning scheme 'btrfs' was removed.""" % versionToLongString(RHEL8) - return op + pass diff --git a/pykickstart/commands/btrfs.py b/pykickstart/commands/btrfs.py index ac22c71f..a2825bf6 100644 --- a/pykickstart/commands/btrfs.py +++ b/pykickstart/commands/btrfs.py @@ -19,7 +19,7 @@ # with the express permission of Red Hat, Inc. # from pykickstart.version import F17, F23, RHEL8, RHEL10, versionToLongString -from pykickstart.base import BaseData, KickstartCommand, DeprecatedCommand, RemovedCommand +from pykickstart.base import BaseData, KickstartCommand, DeprecatedCommand from pykickstart.errors import KickstartParseError, KickstartParseWarning from pykickstart.options import KSOptionParser, mountpoint @@ -280,8 +280,5 @@ class RHEL8_BTRFS(DeprecatedCommand, F23_BTRFS): class RHEL9_BTRFS(RHEL8_BTRFS): pass -class RHEL10_BTRFS(RemovedCommand, RHEL8_BTRFS): - def _getParser(self): - op = RHEL8_BTRFS._getParser(self) - op.description += "\n\n.. versionremoved:: %s" % versionToLongString(RHEL10) - return op +class RHEL10_BTRFS(F23_BTRFS): + pass diff --git a/pykickstart/commands/logvol.py b/pykickstart/commands/logvol.py index 3a3b4e4a..8325918a 100644 --- a/pykickstart/commands/logvol.py +++ b/pykickstart/commands/logvol.py @@ -933,5 +933,5 @@ class RHEL8_LogVol(F29_LogVol): class RHEL9_LogVol(RHEL8_LogVol): pass -class RHEL10_LogVol(RHEL8_LogVol): +class RHEL10_LogVol(F29_LogVol): pass diff --git a/pykickstart/commands/partition.py b/pykickstart/commands/partition.py index c3ef7ab8..b86fe104 100644 --- a/pykickstart/commands/partition.py +++ b/pykickstart/commands/partition.py @@ -777,5 +777,5 @@ class RHEL9_Partition(F34_Partition): Btrfs support was removed.""" % versionToLongString(RHEL8) return op -class RHEL10_Partition(RHEL9_Partition): +class RHEL10_Partition(F34_Partition): pass diff --git a/pykickstart/commands/raid.py b/pykickstart/commands/raid.py index cc922167..9a0091d8 100644 --- a/pykickstart/commands/raid.py +++ b/pykickstart/commands/raid.py @@ -792,9 +792,9 @@ class RHEL8_Raid(F29_Raid): class RHEL9_Raid(RHEL8_Raid): pass -class RHEL10_Raid(RHEL8_Raid): - removedKeywords = RHEL8_Raid.removedKeywords - removedAttrs = RHEL8_Raid.removedAttrs +class RHEL10_Raid(F29_Raid): + removedKeywords = F29_Raid.removedKeywords + removedAttrs = F29_Raid.removedAttrs def _device_cb(self, value): # do not remove the "md" prefix from array name in RHEL10 and later diff --git a/tests/commands/autopart.py b/tests/commands/autopart.py index e7e8b220..81d459ee 100644 --- a/tests/commands/autopart.py +++ b/tests/commands/autopart.py @@ -165,7 +165,7 @@ class F17_TestCase(F16_TestCase): self.assert_parse("autopart --type=lvm", "autopart --type=lvm\n") - if self.__class__.__name__ not in ["RHEL8_TestCase", "RHEL10_TestCase"]: + if self.__class__.__name__ not in ["RHEL8_TestCase"]: self.assert_parse("autopart --type=btrfs", "autopart --type=btrfs\n") @@ -358,7 +358,6 @@ class F38_TestCase(F29_TestCase): class RHEL10_TestCase(F38_TestCase): def runTest(self): F38_TestCase.runTest(self) - self.assert_parse_error("autopart --type=btrfs") if __name__ == "__main__": unittest.main() diff --git a/tests/commands/btrfs.py b/tests/commands/btrfs.py index 8fee1f11..7e9043aa 100644 --- a/tests/commands/btrfs.py +++ b/tests/commands/btrfs.py @@ -20,7 +20,6 @@ import unittest from tests.baseclass import CommandTest, CommandSequenceTest -from pykickstart.base import RemovedCommand from pykickstart.commands.btrfs import F17_BTRFSData, F23_BTRFSData from pykickstart.errors import KickstartParseError, KickstartParseWarning from pykickstart.version import F17 @@ -199,11 +198,9 @@ class RHEL7_TestCase(F23_TestCase): def runTest(self): F23_TestCase.runTest(self) -class RHEL10_TestCase(RHEL7_TestCase): +class RHEL10_TestCase(F23_TestCase): def runTest(self): - # make sure we've been removed - parser = self.getParser("btrfs") - self.assertEqual(issubclass(parser.__class__, RemovedCommand), True) + F23_TestCase.runTest(self) if __name__ == "__main__": unittest.main() -- 2.51.0