- 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
83 lines
4.4 KiB
Diff
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
|
|
|