leapp-repository/0090-Fix-detection-when-a-bootable-partition-in-on-RAID.patch
Toshio Kuratomi d9029cec24 CTC2 candidate 1 (Release for 8.10/9.5)
- Improve set_systemd_services_states logging
- [IPU 7 -> 8] Fix detection of bootable device on RAID
- Fix detection of valid sshd config with internal-sftp subsystem in Leapp
- Handle a false positive GPG check error when TargetUserSpaceInfo is missing
- Fix failing "update-ca-trust" command caused by missing util-linux package
- Improve report when a system is unsupported
- Fix handling of versions in RHUI configuration for ELS and SAP upgrades
- Add missing RHUI GCP config info for RHEL for SAP

- Resolves: RHEL-33902, RHEL-30573, RHEL-43978, RHEL-39046, RHEL-39047, RHEL-39049
2024-07-25 00:55:43 -07:00

83 lines
4.4 KiB
Diff

From 7cd469bab1e19f206f0f558fd89d9c4a6d9db07d Mon Sep 17 00:00:00 2001
From: Michael Scherer <misc@redhat.com>
Date: Wed, 3 Jul 2024 14:32:12 +0200
Subject: [PATCH 90/92] Fix detection when a bootable partition in on RAID
On my server, leapp preupgrade fail with the following error:
Traceback (most recent call last):
File "/usr/lib64/python2.7/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/lib64/python2.7/multiprocessing/process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "/usr/lib/python2.7/site-packages/leapp/repository/actor_definition.py", line 74, in _do_run
actor_instance.run(*args, **kwargs)
File "/usr/lib/python2.7/site-packages/leapp/actors/__init__.py", line 289, in run
self.process(*args)
File "/usr/share/leapp-repository/repositories/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/actor.py", line 18, in process
scan_layout_lib.scan_grub_device_partition_layout()
File "/usr/share/leapp-repository/repositories/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/libraries/scan_layout.py", line 91, in scan_grub_device_partition_layout
dev_info = get_partition_layout(device)
File "/usr/share/leapp-repository/repositories/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/libraries/scan_layout.py", line 79, in get_partition_layout
part_start = int(part_info[2]) if len(part_info) == len(part_all_attrs) else int(part_info[1])
ValueError: invalid literal for int() with base 10: '*'
This is caused by the following line:
/dev/sda1 * 2048 1026047 512000 fd Linux raid autodetect
I have my server on EL7 with / using a Linux RAID so len(part_info) != len(part_all_attrs), hence why
it try to convert '*' to int.
---
.../scangrubdevpartitionlayout/libraries/scan_layout.py | 3 +--
.../tests/test_scan_partition_layout.py | 5 +++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/repos/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/libraries/scan_layout.py b/repos/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/libraries/scan_layout.py
index f51bcda4..83d02656 100644
--- a/repos/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/libraries/scan_layout.py
+++ b/repos/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/libraries/scan_layout.py
@@ -64,7 +64,6 @@ def get_partition_layout(device):
if not line.startswith('Device'):
continue
- part_all_attrs = split_on_space_segments(line)
break
partitions = []
@@ -75,7 +74,7 @@ def get_partition_layout(device):
# If the partition is not bootable, the Boot column might be empty
part_device = part_info[0]
- part_start = int(part_info[2]) if len(part_info) == len(part_all_attrs) else int(part_info[1])
+ part_start = int(part_info[2]) if part_info[1] == '*' else int(part_info[1])
partitions.append(PartitionInfo(part_device=part_device, start_offset=part_start*unit))
return GRUBDevicePartitionLayout(device=device, partitions=partitions)
diff --git a/repos/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/tests/test_scan_partition_layout.py b/repos/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/tests/test_scan_partition_layout.py
index 54025379..743ca71f 100644
--- a/repos/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/tests/test_scan_partition_layout.py
+++ b/repos/system_upgrade/el7toel8/actors/scangrubdevpartitionlayout/tests/test_scan_partition_layout.py
@@ -31,7 +31,8 @@ Partition = namedtuple('Partition', ['name', 'start_offset'])
)
]
)
-def test_get_partition_layout(monkeypatch, devices):
+@pytest.mark.parametrize('fs', ('Linux', 'Linux raid autodetect'))
+def test_get_partition_layout(monkeypatch, devices, fs):
device_to_fdisk_output = {}
for device in devices:
fdisk_output = [
@@ -45,7 +46,7 @@ def test_get_partition_layout(monkeypatch, devices):
' Device Boot Start End Blocks Id System',
]
for part in device.partitions:
- part_line = '{0} * {1} 2099199 1048576 83 Linux'.format(part.name, part.start_offset)
+ part_line = '{0} * {1} 2099199 1048576 83 {2}'.format(part.name, part.start_offset, fs)
fdisk_output.append(part_line)
device_to_fdisk_output[device.name] = fdisk_output
--
2.42.0