From bf9681f5d5b9c949999462a206a3e74b69bd6d44 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Janne=20He=C3=9F?= Date: Mon, 28 Apr 2025 11:04:25 +0200 Subject: [PATCH] ceph-volume: Fix splitting with too many parts MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The data can be anything and also contain a `=`, causing the line to fail with `Too many values to unpack`. In my case, it failed with `ID_FS_LABEL=pvc_name=rook-ceph-lvm-data-44f2gc`. Regression was introduced here: https://github.com/ceph/ceph/pull/60006 Fixes: https://tracker.ceph.com/issues/71101 Signed-off-by: Janne Heß (cherry picked from commit 315fb96243549afba316c60a8d74c24c9417c18e) --- src/ceph-volume/ceph_volume/tests/util/test_disk.py | 3 ++- src/ceph-volume/ceph_volume/util/disk.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/ceph-volume/ceph_volume/tests/util/test_disk.py b/src/ceph-volume/ceph_volume/tests/util/test_disk.py index c103ddb5a6280..c6244fca4d339 100644 --- a/src/ceph-volume/ceph_volume/tests/util/test_disk.py +++ b/src/ceph-volume/ceph_volume/tests/util/test_disk.py @@ -682,6 +682,7 @@ E:DM_LV_NAME=fake-lv1 E:DM_LV_LAYER= E:NVME_HOST_IFACE=none E:SYSTEMD_READY=1 +E:ENV_WITH_EQUALS_SIGN=test=abc G:systemd Q:systemd V:1""" @@ -763,4 +764,4 @@ V:1""" @patch('ceph_volume.util.disk.os.minor', Mock(return_value=0)) @patch('ceph_volume.util.disk.os.major', Mock(return_value=999)) def test_dashed_path_with_bare_device(self) -> None: - assert disk.UdevData(self.fake_device).dashed_path == '/dev/cephtest' \ No newline at end of file + assert disk.UdevData(self.fake_device).dashed_path == '/dev/cephtest' diff --git a/src/ceph-volume/ceph_volume/util/disk.py b/src/ceph-volume/ceph_volume/util/disk.py index e272ada900d36..1d8867019bcf9 100644 --- a/src/ceph-volume/ceph_volume/util/disk.py +++ b/src/ceph-volume/ceph_volume/util/disk.py @@ -1397,7 +1397,7 @@ class UdevData: if data_type == 'I': self.id = data if data_type == 'E': - key, value = data.split('=') + key, value = data.split('=', maxsplit=1) self.environment[key] = value if data_type == 'G': self.group = data -- 2.39.5