diff --git a/Add-crashkernel-auto-for-Arm.patch b/Add-crashkernel-auto-for-Arm.patch new file mode 100644 index 0000000..c8f8204 --- /dev/null +++ b/Add-crashkernel-auto-for-Arm.patch @@ -0,0 +1,314 @@ +From fb83e0d26a2f6a64820ddd5724aa270f1600f288 Mon Sep 17 00:00:00 2001 +From: huzunhao +Date: Tue, 4 Apr 2023 15:47:51 +0800 +Subject: [PATCH] Add crashkernel auto for Arm + +--- + com_redhat_kdump/common.py | 7 ++- + com_redhat_kdump/gui/spokes/kdump.glade | 54 ++++++++++++++++++++++++ + com_redhat_kdump/gui/spokes/kdump.py | 43 ++++++++++++++++--- + com_redhat_kdump/service/installation.py | 2 +- + com_redhat_kdump/service/kdump.py | 4 +- + com_redhat_kdump/service/kickstart.py | 27 ++++++------ + com_redhat_kdump/tui/spokes/kdump.py | 4 +- + po/zh_CN.po | 12 +++--- + 8 files changed, 123 insertions(+), 30 deletions(-) + +diff --git a/com_redhat_kdump/common.py b/com_redhat_kdump/common.py +index 1b79186..b8450c8 100644 +--- a/com_redhat_kdump/common.py ++++ b/com_redhat_kdump/common.py +@@ -65,10 +65,15 @@ def getMemoryBounds(): + + totalMemory = getTotalMemory() + +- if blivet.arch.get_arch() == 'ppc64': ++ arch = blivet.arch.get_arch() ++ if arch.startswith('ppc64'): + lowerBound = 256 + minUsable = 1024 + step = 1 ++ elif arch == 'aarch64': ++ lowerBound = 768 ++ minUsable = 768 ++ step = 1 + else: + lowerBound = 128 + minUsable = 256 +diff --git a/com_redhat_kdump/gui/spokes/kdump.glade b/com_redhat_kdump/gui/spokes/kdump.glade +index fdcfdfb..aebc211 100644 +--- a/com_redhat_kdump/gui/spokes/kdump.glade ++++ b/com_redhat_kdump/gui/spokes/kdump.glade +@@ -14,6 +14,7 @@ + 6 + + ++ nav-box + False + + +@@ -190,6 +191,59 @@ + 1 + + ++ ++ ++ True ++ False ++ 0 ++ Kdump Memory Reservation: ++ ++ ++ 0 ++ 2 ++ 1 ++ 1 ++ ++ ++ ++ ++ _Automatic ++ True ++ True ++ False ++ True ++ 0 ++ True ++ True ++ ++ ++ ++ 1 ++ 2 ++ 1 ++ 1 ++ ++ ++ ++ ++ _Manual ++ True ++ True ++ False ++ True ++ 0 ++ True ++ True ++ autoButton ++ ++ ++ ++ 2 ++ 2 ++ 1 ++ 1 ++ ++ + + + +diff --git a/com_redhat_kdump/gui/spokes/kdump.py b/com_redhat_kdump/gui/spokes/kdump.py +index 9420755..c229485 100644 +--- a/com_redhat_kdump/gui/spokes/kdump.py ++++ b/com_redhat_kdump/gui/spokes/kdump.py +@@ -66,6 +66,9 @@ class KdumpSpoke(NormalSpoke): + self._fadumpButton.show() + else: + self._fadumpButton.hide() ++ self._reservationTypeLabel = self.builder.get_object("reservationTypeLabel") ++ self._autoButton = self.builder.get_object("autoButton") ++ self._manualButton = self.builder.get_object("manualButton") + self._toBeReservedLabel = self.builder.get_object("toBeReservedLabel") + self._toBeReservedSpin = self.builder.get_object("toBeReservedSpin") + self._totalMemLabel = self.builder.get_object("totalMemLabel") +@@ -82,11 +85,12 @@ class KdumpSpoke(NormalSpoke): + def refresh(self): + # If a reserve amount is requested, set it in the spin button + # Strip the trailing 'M' +- reserveMB = self._proxy.ReservedMemory +- if reserveMB and reserveMB[-1] == 'M': +- reserveMB = reserveMB[:-1] +- if reserveMB: +- self._toBeReservedSpin.set_value(int(reserveMB)) ++ if self._proxy.ReservedMemory != "auto": ++ reserveMB = self._proxy.ReservedMemory ++ if reserveMB and reserveMB[-1] == 'M': ++ reserveMB = reserveMB[:-1] ++ if reserveMB: ++ self._toBeReservedSpin.set_value(int(reserveMB)) + + # Set the various labels. Use the spin button signal handler to set the + # usable memory label once the other two have been set. +@@ -97,6 +101,13 @@ class KdumpSpoke(NormalSpoke): + # the sensitivities on the related widgets. Set the radio button first, + # since the radio buttons' bailiwick is a subset of that of the + # enable/disable checkbox. ++ if self._proxy.ReservedMemory == "auto": ++ self._autoButton.set_active(True) ++ self._manualButton.set_active(False) ++ else: ++ self._autoButton.set_active(False) ++ self._manualButton.set_active(True) ++ + if self._proxy.KdumpEnabled: + self._enableButton.set_active(True) + else: +@@ -110,7 +121,10 @@ class KdumpSpoke(NormalSpoke): + def apply(self): + # Copy the GUI state into the AddonData object + self._proxy.KdumpEnabled = self._enableButton.get_active() +- self._proxy.ReservedMemory = "%dM" % self._toBeReservedSpin.get_value_as_int() ++ if self._autoButton.get_active(): ++ self._proxy.ReservedMemory = "auto" ++ else: ++ self._proxy.ReservedMemory = "%dM" % self._toBeReservedSpin.get_value_as_int() + self._proxy.FadumpEnabled = self._fadumpButton.get_active() + + @property +@@ -147,10 +161,27 @@ class KdumpSpoke(NormalSpoke): + self._totalMemMB.set_sensitive(status) + self._usableMemLabel.set_sensitive(status) + self._usableMemMB.set_sensitive(status) ++ self._autoButton.set_sensitive(status) ++ self._manualButton.set_sensitive(status) + self._fadumpButton.set_sensitive(status) + if not status: + self._fadumpButton.set_active(False) + ++ if status: ++ self._autoButton.emit("toggled") ++ ++ def on_reservation_toggled(self, radiobutton, user_data=None): ++ status = self._manualButton.get_active() ++ ++ # If setting to auto, disable the manual config spinner and ++ # the total/usable memory labels ++ fancy_set_sensitive(self._toBeReservedSpin, status) ++ self._totalMemLabel.set_sensitive(status) ++ self._totalMemMB.set_sensitive(status) ++ self._usableMemLabel.set_sensitive(status) ++ self._usableMemMB.set_sensitive(status) ++ ++ + def on_enable_fadump_toggled(self, checkbutton, user_data=None): + if self._enableButton.get_active(): + self.enablefadump = self._fadumpButton.get_active() +diff --git a/com_redhat_kdump/service/installation.py b/com_redhat_kdump/service/installation.py +index d2f4d75..64638a9 100644 +--- a/com_redhat_kdump/service/installation.py ++++ b/com_redhat_kdump/service/installation.py +@@ -58,7 +58,7 @@ class KdumpConfigurationTask(Task): + # Copy our reserved amount to the bootloader arguments. + if self._kdump_enabled: + # Ensure that the amount is an amount in MB. +- if self._reserved_memory[-1] != 'M': ++ if self._reserved_memory != "auto" and self._reserved_memory[-1] != 'M': + self._reserved_memory += 'M' + + args.append('crashkernel=%s' % self._reserved_memory) +diff --git a/com_redhat_kdump/service/kdump.py b/com_redhat_kdump/service/kdump.py +index f4811df..ff902b7 100644 +--- a/com_redhat_kdump/service/kdump.py ++++ b/com_redhat_kdump/service/kdump.py +@@ -41,14 +41,14 @@ class KdumpService(KickstartService): + def __init__(self): + """Create a service.""" + super().__init__() +- self._kdump_enabled = False ++ self._kdump_enabled = True + self.kdump_enabled_changed = Signal() + + self._fadump_enabled = False + self.fadump_enabled_changed = Signal() + ++ self.reserveMB = "auto" + lower, upper, step = getMemoryBounds() +- self._reserved_memory = "%d" % lower + self.reserved_memory_changed = Signal() + + def publish(self): +diff --git a/com_redhat_kdump/service/kickstart.py b/com_redhat_kdump/service/kickstart.py +index 41ba6eb..28d8a23 100644 +--- a/com_redhat_kdump/service/kickstart.py ++++ b/com_redhat_kdump/service/kickstart.py +@@ -88,19 +88,20 @@ class KdumpKickstartData(AddonData): + + opts = op.parse_args(args=args, lineno=line_number) + +- # Validate the reserve-mb argument +- # Allow a final 'M' for consistency with the crashkernel kernel +- # parameter. Strip it if found. And strip quotes. +- opts.reserve_mb = opts.reserve_mb.strip("'\"") +- +- if opts.reserve_mb and opts.reserve_mb[-1] == 'M': +- opts.reserve_mb = opts.reserve_mb[:-1] +- +- try: +- _test = int(opts.reserve_mb) +- except ValueError: +- msg = _("Invalid value '%s' for --reserve-mb") % opts.reserve_mb +- raise KickstartParseError(msg, lineno=line_number) ++ if opts.reserve_mb != "auto": ++ # Validate the reserve-mb argument ++ # Allow a final 'M' for consistency with the crashkernel kernel ++ # parameter. Strip it if found. And strip quotes. ++ opts.reserve_mb = opts.reserve_mb.strip("'\"") ++ ++ if opts.reserve_mb and opts.reserve_mb[-1] == 'M': ++ opts.reserve_mb = opts.reserve_mb[:-1] ++ ++ try: ++ _test = int(opts.reserve_mb) ++ except ValueError: ++ msg = _("Invalid value '%s' for --reserve-mb") % opts.reserve_mb ++ raise KickstartParseError(msg, lineno=line_number) + + # Store the parsed arguments + self.enabled = opts.enabled +diff --git a/com_redhat_kdump/tui/spokes/kdump.py b/com_redhat_kdump/tui/spokes/kdump.py +index 58106ba..dc1d73d 100644 +--- a/com_redhat_kdump/tui/spokes/kdump.py ++++ b/com_redhat_kdump/tui/spokes/kdump.py +@@ -48,7 +48,7 @@ class KdumpSpoke(NormalTUISpoke): + + self._lower, self._upper, self._step = getMemoryBounds() + # Allow a string of digits optionally followed by 'M' +- self._reserve_check_re = re.compile(r'^(\d+M?)$') ++ self._reserve_check_re = re.compile(r'^((auto)|(\d+M?))$') + + self._proxy = KDUMP.get_proxy() + +@@ -116,6 +116,8 @@ class KdumpSpoke(NormalTUISpoke): + + def _check_reserve_valid(self, key, report_func): + if self._reserve_check_re.match(key): ++ if key == "auto": ++ return True + if key[-1] == 'M': + key = key[:-1] + key = int(key) +diff --git a/po/zh_CN.po b/po/zh_CN.po +index ed13cbd..fb63e9b 100644 +--- a/po/zh_CN.po ++++ b/po/zh_CN.po +@@ -79,11 +79,11 @@ msgstr "启用 kdump(_E)" + msgid "_Enable dump mode fadump" + msgstr "启用转储模式 fadump(_E)" + +-#~ msgid "Kdump Memory Reservation:" +-#~ msgstr "为 Kdump 保留的内存:" ++msgid "Kdump Memory Reservation:" ++msgstr "为 Kdump 保留的内存:" + +-#~ msgid "_Automatic" +-#~ msgstr "自动(_A)" ++msgid "_Automatic" ++msgstr "自动(_A)" + +-#~ msgid "_Manual" +-#~ msgstr "手动(_M)" ++msgid "_Manual" ++msgstr "手动(_M)" +-- +2.19.1 + diff --git a/enable-kdump-and-set-default-reserve-memory-512M.patch b/enable-kdump-and-set-default-reserve-memory-512M.patch new file mode 100644 index 0000000..f9363c3 --- /dev/null +++ b/enable-kdump-and-set-default-reserve-memory-512M.patch @@ -0,0 +1,45 @@ +From 09ab1debcc752ed7d9dbff5731450f9a0df7761a Mon Sep 17 00:00:00 2001 +From: zhangqiumiao +Date: Wed, 23 Sep 2020 11:23:11 +0800 +Subject: [PATCH] enable kdump and set default reserve memory 512M + +--- + com_redhat_kdump/common.py | 2 +- + com_redhat_kdump/service/kdump.py | 7 ++++++- + 2 files changed, 7 insertions(+), 2 deletions(-) + +diff --git a/com_redhat_kdump/common.py b/com_redhat_kdump/common.py +index b8450c8..992d63e 100644 +--- a/com_redhat_kdump/common.py ++++ b/com_redhat_kdump/common.py +@@ -71,7 +71,7 @@ def getMemoryBounds(): + minUsable = 1024 + step = 1 + elif arch == 'aarch64': +- lowerBound = 768 ++ lowerBound = 512 + minUsable = 768 + step = 1 + else: +diff --git a/com_redhat_kdump/service/kdump.py b/com_redhat_kdump/service/kdump.py +index ff902b7..2764e6a 100644 +--- a/com_redhat_kdump/service/kdump.py ++++ b/com_redhat_kdump/service/kdump.py +@@ -47,8 +47,13 @@ class KdumpService(KickstartService): + self._fadump_enabled = False + self.fadump_enabled_changed = Signal() + +- self.reserveMB = "auto" + lower, upper, step = getMemoryBounds() ++ # set default reserveMB ++ # ensure that 512M is not out of MemoryBounds ++ if (upper > 512): ++ self._reserved_memory = "512" ++ else: ++ self._reserved_memory = "%d" % lower + self.reserved_memory_changed = Signal() + + def publish(self): +-- +2.19.1 + diff --git a/fix-test-failed-due-to-default-value-change-1.patch b/fix-test-failed-due-to-default-value-change-1.patch new file mode 100644 index 0000000..86f9895 --- /dev/null +++ b/fix-test-failed-due-to-default-value-change-1.patch @@ -0,0 +1,46 @@ +From bdbe716c042bac9fd7c4cfb422403ef61884b86e Mon Sep 17 00:00:00 2001 +From: sun_hai_10 +Date: Tue, 4 Apr 2023 12:39:06 +0800 +Subject: [PATCH] fix test failed due to default value change + +--- + test/unit_tests/test_common.py | 2 +- + test/unit_tests/test_kickstart.py | 6 +++--- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/test/unit_tests/test_common.py b/test/unit_tests/test_common.py +index 16c973c..92a2ba3 100644 +--- a/test/unit_tests/test_common.py ++++ b/test/unit_tests/test_common.py +@@ -54,7 +54,7 @@ class KdumpCommonTestCase(TestCase): + @patch("builtins.open", MockFileRead(AARCH64_INFO_FIXTURE)) + @patch("blivet.arch.get_arch", return_value="aarch64") + def test_memory_bound_aarch64(self, _mock_read): +- self.assertEqual((128, 64 * 1024 - 256, 1), common.getMemoryBounds()) ++ self.assertEqual((512, 64 * 1024 - 768, 1), common.getMemoryBounds()) + + @patch("builtins.open", MockFileRead(PPC64_INFO_FIXTURE)) + @patch("blivet.arch.get_arch", return_value="ppc64") +diff --git a/test/unit_tests/test_kickstart.py b/test/unit_tests/test_kickstart.py +index 0dd78ed..058c9ae 100644 +--- a/test/unit_tests/test_kickstart.py ++++ b/test/unit_tests/test_kickstart.py +@@ -26,12 +26,12 @@ class KdumpKickstartTestCase(TestCase): + self.assertEqual(output.strip(), dedent(ks_out).strip()) + + def test_ks_default(self): +- self.assertEqual(self._service.kdump_enabled, False) ++ self.assertEqual(self._service.kdump_enabled, True) + self.assertEqual(self._service.fadump_enabled, False) +- self.assertEqual(self._service.reserved_memory, "128") ++ self.assertEqual(self._service.reserved_memory, "512") + + self._check_ks_output(""" +- %addon com_redhat_kdump --disable ++ %addon com_redhat_kdump --enable --reserve-mb='512' + + %end + """) +-- +2.33.0 + diff --git a/fix-test-failed-due-to-default-value-change.patch b/fix-test-failed-due-to-default-value-change.patch new file mode 100644 index 0000000..fd3fc0c --- /dev/null +++ b/fix-test-failed-due-to-default-value-change.patch @@ -0,0 +1,128 @@ +From bdbe716c042bac9fd7c4cfb422403ef61884b86e Mon Sep 17 00:00:00 2001 +From: sun_hai_10 +Date: Tue, 4 Apr 2023 12:39:06 +0800 +Subject: [PATCH] fix test failed due to default value change + +--- + test/unit_tests/test_common.py | 2 +- + test/unit_tests/test_installation.py | 6 ++- + test/unit_tests/test_kickstart.py | 60 ++++++++++++++++++++++++++-- + 3 files changed, 62 insertions(+), 6 deletions(-) + +diff --git a/test/unit_tests/test_common.py b/test/unit_tests/test_common.py +index 16c973c..92a2ba3 100644 +--- a/test/unit_tests/test_common.py ++++ b/test/unit_tests/test_common.py +@@ -54,7 +54,7 @@ class KdumpCommonTestCase(TestCase): + @patch("builtins.open", MockFileRead(AARCH64_INFO_FIXTURE)) + @patch("blivet.arch.get_arch", return_value="aarch64") + def test_memory_bound_aarch64(self, _mock_read): +- self.assertEqual((128, 64 * 1024 - 256, 1), common.getMemoryBounds()) ++ self.assertEqual((512, 64 * 1024 - 768, 1), common.getMemoryBounds()) + + @patch("builtins.open", MockFileRead(PPC64_INFO_FIXTURE)) + @patch("blivet.arch.get_arch", return_value="ppc64") +diff --git a/test/unit_tests/test_installation.py b/test/unit_tests/test_installation.py +index b2deb4b..92c0954 100644 +--- a/test/unit_tests/test_installation.py ++++ b/test/unit_tests/test_installation.py +@@ -69,7 +69,11 @@ class KdumpInstallationTestCase(TestCase): + kdump_enabled=False + ) + task.run() +- mock_util.execWithRedirect.assert_not_called() ++ mock_util.execWithRedirect.assert_called_once_with( ++ "systemctl", ++ ["disable", "kdump.service"], ++ root="/mnt/sysroot" ++ ) + + @patch("com_redhat_kdump.service.installation.util") + def test_installation_kdump_enabled(self, mock_util): +diff --git a/test/unit_tests/test_kickstart.py b/test/unit_tests/test_kickstart.py +index 0dd78ed..69b57d0 100644 +--- a/test/unit_tests/test_kickstart.py ++++ b/test/unit_tests/test_kickstart.py +@@ -1,8 +1,45 @@ + from textwrap import dedent + from unittest.case import TestCase ++from unittest.mock import patch, MagicMock + from com_redhat_kdump import common + from com_redhat_kdump.service.kdump import KdumpService + ++SYS_CRASH_SIZE = '/sys/kernel/kexec_crash_size' ++PROC_MEMINFO = '/proc/meminfo' ++ ++X86_INFO_FIXTURE = { ++ SYS_CRASH_SIZE: "167772160", # 160MB ++ PROC_MEMINFO:"""MemTotal: 4030464 kB ++""" # 4GB - 160MB ++} ++ ++AARCH64_INFO_FIXTURE = { ++ SYS_CRASH_SIZE: "536870912", # 512MB ++ PROC_MEMINFO:"""MemTotal: 66584576 kB ++""" # 64GB - 512MB ++} ++ ++PPC64_INFO_FIXTURE = { ++ SYS_CRASH_SIZE: "1073741824", # 1024MB ++ PROC_MEMINFO:"""MemTotal: 66060288 kB ++""" # 64GB - 1GB ++} ++ ++class MockFileRead(MagicMock): ++ def __init__(self, file_read_map): ++ MagicMock.__init__(self, name=open, spec=open) ++ self.file_read_map = file_read_map ++ ++ handle = MagicMock() ++ handle.__enter__.return_value = handle ++ handle.read.return_value = None ++ ++ def reset_choose_file(filename, *args, **kwargs): ++ handle.read.return_value = self.file_read_map[filename] ++ return handle ++ ++ self.side_effect = reset_choose_file ++ + + class KdumpKickstartTestCase(TestCase): + +@@ -25,13 +62,28 @@ class KdumpKickstartTestCase(TestCase): + output = self._service.generate_kickstart() + self.assertEqual(output.strip(), dedent(ks_out).strip()) + +- def test_ks_default(self): +- self.assertEqual(self._service.kdump_enabled, False) ++ @patch("builtins.open", MockFileRead(X86_INFO_FIXTURE)) ++ @patch("blivet.arch.get_arch", return_value="x86_64") ++ def test_ks_default_x86(self, _mock_read): ++ self.assertEqual(self._service.kdump_enabled, True) + self.assertEqual(self._service.fadump_enabled, False) +- self.assertEqual(self._service.reserved_memory, "128") ++ self.assertEqual(self._service.reserved_memory, "512") + + self._check_ks_output(""" +- %addon com_redhat_kdump --disable ++ %addon com_redhat_kdump --enable --reserve-mb='512' ++ ++ %end ++ """) ++ ++ @patch("builtins.open", MockFileRead(AARCH64_INFO_FIXTURE)) ++ @patch("blivet.arch.get_arch", return_value="aarch64") ++ def test_ks_default_arrch64(self, _mock_read): ++ self.assertEqual(self._service.kdump_enabled, True) ++ self.assertEqual(self._service.fadump_enabled, False) ++ self.assertEqual(self._service.reserved_memory, "512") ++ ++ self._check_ks_output(""" ++ %addon com_redhat_kdump --enable --reserve-mb='512' + + %end + """) +-- +2.19.1 + + diff --git a/kdump-anaconda-addon.spec b/kdump-anaconda-addon.spec index 7696275..ca6dbc9 100644 --- a/kdump-anaconda-addon.spec +++ b/kdump-anaconda-addon.spec @@ -1,13 +1,24 @@ Name: kdump-anaconda-addon Version: 006 -Release: 1 +Release: 2 Summary: Anaconda addon for configuring kdump. License: GPLv2 URL: https://github.com/rhinstaller/kdump-anaconda-addon Source0: https://github.com/rhinstaller/kdump-anaconda-addon/archive/%{version}.tar.gz +Source1: set-addon-default-on-and-close-service-when-ks-set-disable.patch +Source2: fix-test-failed-due-to-default-value-change.patch Patch0: backport-use-pytest-to-run-the-unit-tests.patch +Patch1: Add-crashkernel-auto-for-Arm.patch +Patch2: enable-kdump-and-set-default-reserve-memory-512M.patch +%if %{?openEuler:1}0 +Patch3: fix-test-failed-due-to-default-value-change-1.patch +%else +Patch4: set-addon-default-on-and-close-service-when-ks-set-disable.patch +Patch5: fix-test-failed-due-to-default-value-change.patch +%endif + BuildRequires: intltool gettext python3-pytest python3-blivet anaconda Requires: anaconda >= 34.13 hicolor-icon-theme @@ -51,6 +62,14 @@ make unittest %{_datadir}/icons/hicolor/scalable/apps/kdump.svg %changelog +* Wed Mar 06 2024 yanglu - 006-2 +- Type:enhancement +- CVE:NA +- SUG:NA +- DESC:Add crashkernel auto for Arm + enable kdump and set default reserve memory 512MB + fix test failed due to default value change + * Tue Nov 08 2022 yanglu - 006-1 - DESC: update kdump-anaconda-addon version to 006 diff --git a/set-addon-default-on-and-close-service-when-ks-set-disable.patch b/set-addon-default-on-and-close-service-when-ks-set-disable.patch new file mode 100644 index 0000000..eb91e95 --- /dev/null +++ b/set-addon-default-on-and-close-service-when-ks-set-disable.patch @@ -0,0 +1,67 @@ +From f610873cd3590a0cb77287c01b7a025dc83a547a Mon Sep 17 00:00:00 2001 +From: sun_hai_10 +Date: Thu, 6 Apr 2023 18:26:19 +0800 +Subject: [PATCH] set addon defalut on and close service when ks set disable + +Signed-off-by: yangzhuangzhuang +Signed-off-by: zhangruifang +--- + com_redhat_kdump/service/initialization.py | 18 +++++++++++++++++- + com_redhat_kdump/service/installation.py | 8 +++++--- + 2 files changed, 22 insertions(+), 4 deletions(-) + +diff --git a/com_redhat_kdump/service/initialization.py b/com_redhat_kdump/service/initialization.py +index 2bdbe6e..310a504 100644 +--- a/com_redhat_kdump/service/initialization.py ++++ b/com_redhat_kdump/service/initialization.py +@@ -25,8 +25,24 @@ log = logging.getLogger(__name__) + __all__ = ["check_initial_conditions"] + + ++def kdump_is_enabled(): ++ """Return boolean value for the given argument. ++ ++ Rules: ++ - 0, off -> False ++ - the rest, not present -> True ++ """ ++ # None is stored when arg is present but had no value when parsing. ++ # So the "miss" value must be something else. ++ val = kernel_arguments.get("kdump_addon", True) ++ if val in ["0", "off"]: ++ return False ++ else: ++ return True ++ ++ + def check_initial_conditions(): + """Can the Kdump service run?""" +- if not kernel_arguments.is_enabled("kdump_addon"): ++ if not kdump_is_enabled(): + log.debug("The kdump add-on is disabled. Quit.") + sys.exit(1) +diff --git a/com_redhat_kdump/service/installation.py b/com_redhat_kdump/service/installation.py +index 64638a9..d93b51a 100644 +--- a/com_redhat_kdump/service/installation.py ++++ b/com_redhat_kdump/service/installation.py +@@ -85,12 +85,14 @@ class KdumpInstallationTask(Task): + + def run(self): + """Run the task.""" ++ action = "enable" + if not self._kdump_enabled: +- log.debug("Kdump is disabled. Skipping.") +- return ++ log.debug("Kdump is disabled.") ++ # unknow kdump.service default set ++ action = "disable" + + util.execWithRedirect( + "systemctl", +- ["enable", "kdump.service"], ++ [action, "kdump.service"], + root=self._sysroot + ) +-- +2.19.1 +