leapp-repository/SOURCES/0028-ceph-luks-Fix-ceph-cephvolumescan-for-cephadm.patch
2025-12-01 09:14:24 +00:00

132 lines
5.7 KiB
Diff

From ddefdee20a97d9b5e08502e4348d92212a702cc7 Mon Sep 17 00:00:00 2001
From: Lukas Bezdicka <lbezdick@redhat.com>
Date: Fri, 16 Feb 2024 14:58:02 +0100
Subject: [PATCH 28/55] [ceph][luks] Fix ceph cephvolumescan for cephadm
For cephadm the containers are named ceph-<hash>-osd... while
ceph-ansible still uses the ceph-osd-...
Other issue is that OSDs can have multiple volumes in them so filtering
just for the first one is wrong and we need to check each volume for
the encryption.
Resolves: rhbz#2264543
Fixes: https://issues.redhat.com/browse/RHEL-25838
---
.../libraries/cephvolumescan.py | 5 +-
.../tests/test_cephvolumescan.py | 50 +++++++++++++++++--
2 files changed, 50 insertions(+), 5 deletions(-)
diff --git a/repos/system_upgrade/common/actors/cephvolumescan/libraries/cephvolumescan.py b/repos/system_upgrade/common/actors/cephvolumescan/libraries/cephvolumescan.py
index b2364104..a9bff005 100644
--- a/repos/system_upgrade/common/actors/cephvolumescan/libraries/cephvolumescan.py
+++ b/repos/system_upgrade/common/actors/cephvolumescan/libraries/cephvolumescan.py
@@ -8,7 +8,7 @@ from leapp.libraries.stdlib import api, CalledProcessError, run
from leapp.models import InstalledRPM
CEPH_CONF = "/etc/ceph/ceph.conf"
-CONTAINER = "ceph-osd"
+CONTAINER = "ceph-.*osd"
def select_osd_container(engine):
@@ -63,7 +63,8 @@ def encrypted_osds_list():
output = get_ceph_lvm_list()
if output is not None:
try:
- result = [output[key][0]['lv_uuid'] for key in output if output[key][0]['tags']['ceph.encrypted']]
+ for key in output:
+ result.extend([element['lv_uuid'] for element in output[key] if element['tags']['ceph.encrypted']])
except KeyError:
# TODO: possibly raise a report item with a medium risk factor
# TODO: possibly create list of problematic osds, extend the cephinfo
diff --git a/repos/system_upgrade/common/actors/cephvolumescan/tests/test_cephvolumescan.py b/repos/system_upgrade/common/actors/cephvolumescan/tests/test_cephvolumescan.py
index f3811c45..168b8fc2 100644
--- a/repos/system_upgrade/common/actors/cephvolumescan/tests/test_cephvolumescan.py
+++ b/repos/system_upgrade/common/actors/cephvolumescan/tests/test_cephvolumescan.py
@@ -8,6 +8,8 @@ from leapp.reporting import Report
CONT_PS_COMMAND_OUTPUT = {
"stdout":
"""CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
+ b5a3d8ef25b9 undercloud-0.ctlplane.redhat.local:8787/rh-osbs/rhceph:5 "-n osd.8 -f --set..." \
+ 2 hours ago Up 2 hours ago ceph-bea1a933-0846-4aaa-8223-62cb8cb2873c-osd-8
50d96fe72019 registry.redhat.io/rhceph/rhceph-4-rhel8:latest "/opt/ceph-contain..." \
2 weeks ago Up 2 weeks ceph-osd-0
f93c17b49c40 registry.redhat.io/rhceph/rhceph-4-rhel8:latest "/opt/ceph-contain..." \
@@ -41,6 +43,32 @@ CEPH_VOLUME_OUTPUT = {
"type":"block",
"vg_name":"ceph-a696c40d-6b1d-448d-a40e-fadca22b64bc"
}
+ ],
+ "8":[
+ {
+ "devices": [
+ "/dev/nvme0n1"
+ ],
+ "lv_name": "osd-db-b04857a0-a2a2-40c3-a490-cbe1f892a76c",
+ "lv_uuid": "zcvGix-drzz-JwzP-6ktU-Od6W-N5jL-kxRFa3",
+ "tags":{
+ "ceph.encrypted":"1"
+ },
+ "type": "db",
+ "vg_name": "ceph-b78309b3-bd80-4399-87a3-ac647b216b63"
+ },
+ {
+ "devices": [
+ "/dev/sdb"
+ ],
+ "lv_name": "osd-block-477c303f-5eaf-4be8-b5cc-f6073eb345bf",
+ "lv_uuid": "Mz1dep-D715-Wxh1-zUuS-0cOA-mKXE-UxaEM3",
+ "tags":{
+ "ceph.encrypted":"1"
+ },
+ "type": "block",
+ "vg_name": "ceph-e3e0345b-8be1-40a7-955a-378ba967f954"
+ }
]
}"""
}
@@ -51,7 +79,19 @@ CEPH_LVM_LIST = {
'lv_uuid': 'Tyc0TH-RDxr-ebAF-9mWF-Kh5R-YnvJ-cEcGVn',
'tags': {'ceph.encrypted': '1'},
'type': 'block',
- 'vg_name': 'ceph-a696c40d-6b1d-448d-a40e-fadca22b64bc'}]
+ 'vg_name': 'ceph-a696c40d-6b1d-448d-a40e-fadca22b64bc'}],
+ '8': [{'devices': ['/dev/nvme0n1'],
+ 'lv_name': 'osd-db-b04857a0-a2a2-40c3-a490-cbe1f892a76c',
+ 'lv_uuid': 'zcvGix-drzz-JwzP-6ktU-Od6W-N5jL-kxRFa3',
+ 'tags': {'ceph.encrypted': '1'},
+ 'type': 'db',
+ 'vg_name': 'ceph-b78309b3-bd80-4399-87a3-ac647b216b63'},
+ {'devices': ['/dev/sdb'],
+ 'lv_name': 'osd-block-477c303f-5eaf-4be8-b5cc-f6073eb345bf',
+ 'lv_uuid': 'Mz1dep-D715-Wxh1-zUuS-0cOA-mKXE-UxaEM3',
+ 'tags': {'ceph.encrypted': '1'},
+ 'type': 'block',
+ 'vg_name': 'ceph-e3e0345b-8be1-40a7-955a-378ba967f954'}]
}
@@ -60,7 +100,7 @@ def test_select_osd_container(m_run):
m_run.return_value = CONT_PS_COMMAND_OUTPUT
- assert cephvolumescan.select_osd_container('docker') == "ceph-osd-0"
+ assert cephvolumescan.select_osd_container('docker') == "ceph-bea1a933-0846-4aaa-8223-62cb8cb2873c-osd-8"
@patch('leapp.libraries.actor.cephvolumescan.has_package')
@@ -82,4 +122,8 @@ def test_encrypted_osds_list(m_get_ceph_lvm_list, m_isfile):
m_get_ceph_lvm_list.return_value = CEPH_LVM_LIST
m_isfile.return_value = True
- assert cephvolumescan.encrypted_osds_list() == ['Tyc0TH-RDxr-ebAF-9mWF-Kh5R-YnvJ-cEcGVn']
+ assert cephvolumescan.encrypted_osds_list() == [
+ 'Tyc0TH-RDxr-ebAF-9mWF-Kh5R-YnvJ-cEcGVn',
+ 'zcvGix-drzz-JwzP-6ktU-Od6W-N5jL-kxRFa3',
+ 'Mz1dep-D715-Wxh1-zUuS-0cOA-mKXE-UxaEM3'
+ ]
--
2.51.1