Skip to content

Commit

Permalink
Merge pull request #5952 from jkonecny12/master-fix-vconsole-on-ostree
Browse files Browse the repository at this point in the history
Fix vconsole layout doesn't work for ostree
  • Loading branch information
jkonecny12 authored Oct 22, 2024
2 parents 45bf6e5 + 78ae5fd commit c633d35
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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(
Expand All @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand All @@ -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"

Expand All @@ -745,28 +760,38 @@ 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
)

@patch("pyanaconda.modules.payloads.payload.rpm_ostree.installation.have_bootupd")
@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"
Expand All @@ -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
)
])
Expand All @@ -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"

Expand All @@ -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
)
])
Expand Down

0 comments on commit c633d35

Please sign in to comment.