]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-volume: Fix splitting with too many parts 63004/head
authorJanne Heß <janne@hess.ooo>
Mon, 28 Apr 2025 09:04:25 +0000 (11:04 +0200)
committerJanne Heß <janne@hess.ooo>
Mon, 28 Apr 2025 09:34:05 +0000 (11:34 +0200)
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ß <janne@hess.ooo>
src/ceph-volume/ceph_volume/tests/util/test_disk.py
src/ceph-volume/ceph_volume/util/disk.py

index c103ddb5a6280b83d28e92c34a38325d82054da2..c6244fca4d339c70fbe5625baa0ddf6b3178f5f5 100644 (file)
@@ -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'
index d70af2a2f33176d037070aef2aa9e4a25c2877ca..c0b354ef9b69a88f8eef08c1e5760356b2ef7b5e 100644 (file)
@@ -1396,7 +1396,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