diff --git a/pyanaconda/modules/payloads/payload/rpm_ostree/installation.py b/pyanaconda/modules/payloads/payload/rpm_ostree/installation.py index 61ec015d325..15ba48e0973 100644 --- a/pyanaconda/modules/payloads/payload/rpm_ostree/installation.py +++ b/pyanaconda/modules/payloads/payload/rpm_ostree/installation.py @@ -30,7 +30,7 @@ BootloaderInstallationError from pyanaconda.modules.common.task import Task from pyanaconda.modules.common.constants.objects import DEVICE_TREE, BOOTLOADER -from pyanaconda.modules.common.constants.services import STORAGE +from pyanaconda.modules.common.constants.services import STORAGE, LOCALIZATION from pyanaconda.modules.common.structures.storage import DeviceData from pyanaconda.modules.payloads.payload.rpm_ostree.util import have_bootupd @@ -563,6 +563,7 @@ def _set_kargs(self): bootloader = STORAGE.get_proxy(BOOTLOADER) device_tree = STORAGE.get_proxy(DEVICE_TREE) + localization = LOCALIZATION.get_proxy() root_id = device_tree.GetRootDevice() root_data = DeviceData.from_structure( @@ -572,6 +573,7 @@ def _set_kargs(self): set_kargs_args = ["admin", "instutil", "set-kargs"] set_kargs_args.extend(bootloader.GetArguments()) set_kargs_args.append("root=" + device_tree.GetFstabSpec(root_id)) + set_kargs_args.append("vconsole.keymap=" + localization.VirtualConsoleKeymap) if root_data.type == "btrfs subvolume": set_kargs_args.append("rootflags=subvol=" + root_data.name) diff --git a/tests/unit_tests/pyanaconda_tests/modules/payloads/payload/test_rpm_ostree_tasks.py b/tests/unit_tests/pyanaconda_tests/modules/payloads/payload/test_rpm_ostree_tasks.py index 87bd704d4dc..bf282ad0924 100644 --- a/tests/unit_tests/pyanaconda_tests/modules/payloads/payload/test_rpm_ostree_tasks.py +++ b/tests/unit_tests/pyanaconda_tests/modules/payloads/payload/test_rpm_ostree_tasks.py @@ -677,16 +677,20 @@ class ConfigureBootloaderTaskTestCase(unittest.TestCase): @patch("pyanaconda.modules.payloads.payload.rpm_ostree.installation.execWithRedirect") @patch("pyanaconda.modules.payloads.payload.rpm_ostree.installation.os.rename") @patch("pyanaconda.modules.payloads.payload.rpm_ostree.installation.os.symlink") + @patch("pyanaconda.modules.payloads.payload.rpm_ostree.installation.LOCALIZATION") @patch("pyanaconda.modules.payloads.payload.rpm_ostree.installation.STORAGE") @patch("pyanaconda.modules.payloads.payload.rpm_ostree.installation.DeviceData") - def test_btrfs_run(self, devdata_mock, storage_mock, symlink_mock, rename_mock, exec_mock): + def test_btrfs_run(self, devdata_mock, storage_mock, localization_mock, + symlink_mock, rename_mock, exec_mock): """Test OSTree bootloader config task, no BTRFS""" exec_mock.return_value = 0 - proxy_mock = storage_mock.get_proxy() - proxy_mock.GetArguments.return_value = ["BOOTLOADER-ARGS"] - proxy_mock.GetFstabSpec.return_value = "FSTAB-SPEC" - proxy_mock.GetRootDevice.return_value = "device-id" + storage_proxy_mock = storage_mock.get_proxy() + storage_proxy_mock.GetArguments.return_value = ["BOOTLOADER-ARGS"] + storage_proxy_mock.GetFstabSpec.return_value = "FSTAB-SPEC" + storage_proxy_mock.GetRootDevice.return_value = "device-id" + localization_proxy_mock = localization_mock.get_proxy() + localization_proxy_mock.VirtualConsoleKeymap = "cs" devdata_mock.from_structure.return_value.type = "btrfs subvolume" devdata_mock.from_structure.return_value.name = "device-name" @@ -707,24 +711,35 @@ def test_btrfs_run(self, devdata_mock, storage_mock, symlink_mock, rename_mock, ) exec_mock.assert_called_once_with( "ostree", - ["admin", "instutil", "set-kargs", "BOOTLOADER-ARGS", "root=FSTAB-SPEC", - "rootflags=subvol=device-name", "rw"], + ["admin", + "instutil", + "set-kargs", + "BOOTLOADER-ARGS", + "root=FSTAB-SPEC", + "vconsole.keymap=cs", + "rootflags=subvol=device-name", + "rw" + ], root=sysroot ) @patch("pyanaconda.modules.payloads.payload.rpm_ostree.installation.execWithRedirect") @patch("pyanaconda.modules.payloads.payload.rpm_ostree.installation.os.rename") @patch("pyanaconda.modules.payloads.payload.rpm_ostree.installation.os.symlink") + @patch("pyanaconda.modules.payloads.payload.rpm_ostree.installation.LOCALIZATION") @patch("pyanaconda.modules.payloads.payload.rpm_ostree.installation.STORAGE") @patch("pyanaconda.modules.payloads.payload.rpm_ostree.installation.DeviceData") - def test_nonbtrfs_run(self, devdata_mock, storage_mock, symlink_mock, rename_mock, exec_mock): + def test_nonbtrfs_run(self, devdata_mock, storage_mock, localization_mock, + symlink_mock, rename_mock, exec_mock): """Test OSTree bootloader config task, no BTRFS""" exec_mock.return_value = 0 - proxy_mock = storage_mock.get_proxy() - proxy_mock.GetArguments.return_value = ["BOOTLOADER-ARGS"] - proxy_mock.GetFstabSpec.return_value = "FSTAB-SPEC" - proxy_mock.GetRootDevice.return_value = "device-id" + storage_proxy_mock = storage_mock.get_proxy() + storage_proxy_mock.GetArguments.return_value = ["BOOTLOADER-ARGS"] + storage_proxy_mock.GetFstabSpec.return_value = "FSTAB-SPEC" + storage_proxy_mock.GetRootDevice.return_value = "device-id" + localization_proxy_mock = localization_mock.get_proxy() + localization_proxy_mock.VirtualConsoleKeymap = "cs" devdata_mock.from_structure.return_value.type = "something-non-btrfs-subvolume-ish" devdata_mock.from_structure.return_value.name = "device-name" @@ -745,7 +760,14 @@ def test_nonbtrfs_run(self, devdata_mock, storage_mock, symlink_mock, rename_moc ) exec_mock.assert_called_once_with( "ostree", - ["admin", "instutil", "set-kargs", "BOOTLOADER-ARGS", "root=FSTAB-SPEC", "rw"], + ["admin", + "instutil", + "set-kargs", + "BOOTLOADER-ARGS", + "root=FSTAB-SPEC", + "vconsole.keymap=cs", + "rw" + ], root=sysroot ) @@ -753,20 +775,23 @@ def test_nonbtrfs_run(self, devdata_mock, storage_mock, symlink_mock, rename_moc @patch("pyanaconda.modules.payloads.payload.rpm_ostree.installation.execWithRedirect") @patch("pyanaconda.modules.payloads.payload.rpm_ostree.installation.os.rename") @patch("pyanaconda.modules.payloads.payload.rpm_ostree.installation.os.symlink") + @patch("pyanaconda.modules.payloads.payload.rpm_ostree.installation.LOCALIZATION") @patch("pyanaconda.modules.payloads.payload.rpm_ostree.installation.STORAGE") @patch("pyanaconda.modules.payloads.payload.rpm_ostree.installation.DeviceData") - def test_bootupd_run(self, devdata_mock, storage_mock, symlink_mock, rename_mock, exec_mock, - have_bootupd_mock): + def test_bootupd_run(self, devdata_mock, storage_mock, localization_mock, symlink_mock, + rename_mock, exec_mock, have_bootupd_mock): """Test OSTree bootloader config task, bootupd""" exec_mock.return_value = 0 have_bootupd_mock.return_value = True - proxy_mock = storage_mock.get_proxy() - proxy_mock.GetArguments.return_value = ["BOOTLOADER-ARGS"] - proxy_mock.GetFstabSpec.return_value = "FSTAB-SPEC" - proxy_mock.GetRootDevice.return_value = "device-id" - proxy_mock.Drive = "btldr-drv" - proxy_mock.KeepBootOrder = False + storage_proxy_mock = storage_mock.get_proxy() + storage_proxy_mock.GetArguments.return_value = ["BOOTLOADER-ARGS"] + storage_proxy_mock.GetFstabSpec.return_value = "FSTAB-SPEC" + storage_proxy_mock.GetRootDevice.return_value = "device-id" + storage_proxy_mock.Drive = "btldr-drv" + storage_proxy_mock.KeepBootOrder = False + localization_proxy_mock = localization_mock.get_proxy() + localization_proxy_mock.VirtualConsoleKeymap = "cs" devdata_mock.from_structure.return_value.type = "something-non-btrfs-subvolume-ish" devdata_mock.from_structure.return_value.path = "/dev/btldr-drv" devdata_mock.from_structure.return_value.name = "device-name" @@ -787,7 +812,14 @@ def test_bootupd_run(self, devdata_mock, storage_mock, symlink_mock, rename_mock ), call( "ostree", - ["admin", "instutil", "set-kargs", "BOOTLOADER-ARGS", "root=FSTAB-SPEC", "rw"], + ["admin", + "instutil", + "set-kargs", + "BOOTLOADER-ARGS", + "root=FSTAB-SPEC", + "vconsole.keymap=cs", + "rw" + ], root=sysroot ) ]) @@ -796,20 +828,24 @@ def test_bootupd_run(self, devdata_mock, storage_mock, symlink_mock, rename_mock @patch("pyanaconda.modules.payloads.payload.rpm_ostree.installation.execWithRedirect") @patch("pyanaconda.modules.payloads.payload.rpm_ostree.installation.os.rename") @patch("pyanaconda.modules.payloads.payload.rpm_ostree.installation.os.symlink") + @patch("pyanaconda.modules.payloads.payload.rpm_ostree.installation.LOCALIZATION") @patch("pyanaconda.modules.payloads.payload.rpm_ostree.installation.STORAGE") @patch("pyanaconda.modules.payloads.payload.rpm_ostree.installation.DeviceData") - def test_bootupd_run_with_leavebootorder(self, devdata_mock, storage_mock, symlink_mock, - rename_mock, exec_mock, have_bootupd_mock): + def test_bootupd_run_with_leavebootorder(self, devdata_mock, storage_mock, localization_mock, + symlink_mock, rename_mock, exec_mock, + have_bootupd_mock): """Test OSTree bootloader config task, bootupd""" exec_mock.return_value = 0 have_bootupd_mock.return_value = True - proxy_mock = storage_mock.get_proxy() - proxy_mock.GetArguments.return_value = ["BOOTLOADER-ARGS"] - proxy_mock.GetFstabSpec.return_value = "FSTAB-SPEC" - proxy_mock.GetRootDevice.return_value = "device-name" - proxy_mock.Drive = "btldr-drv" - proxy_mock.KeepBootOrder = True + storage_proxy_mock = storage_mock.get_proxy() + storage_proxy_mock.GetArguments.return_value = ["BOOTLOADER-ARGS"] + storage_proxy_mock.GetFstabSpec.return_value = "FSTAB-SPEC" + storage_proxy_mock.GetRootDevice.return_value = "device-name" + storage_proxy_mock.Drive = "btldr-drv" + storage_proxy_mock.KeepBootOrder = True + localization_proxy_mock = localization_mock.get_proxy() + localization_proxy_mock.VirtualConsoleKeymap = "cs" devdata_mock.from_structure.return_value.type = "something-non-btrfs-subvolume-ish" devdata_mock.from_structure.return_value.path = "/dev/btldr-drv" @@ -829,7 +865,14 @@ def test_bootupd_run_with_leavebootorder(self, devdata_mock, storage_mock, symli ), call( "ostree", - ["admin", "instutil", "set-kargs", "BOOTLOADER-ARGS", "root=FSTAB-SPEC", "rw"], + ["admin", + "instutil", + "set-kargs", + "BOOTLOADER-ARGS", + "root=FSTAB-SPEC", + "vconsole.keymap=cs", + "rw" + ], root=sysroot ) ])