]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
ceph-volume: fix UdevData initialisation from empty /run/udev/data/* file
authorMatteo Paramatti <paramattimatteo@gmail.com>
Tue, 16 Sep 2025 23:53:55 +0000 (00:53 +0100)
committerYuri Weinstein <yweinste@redhat.com>
Wed, 15 Oct 2025 17:32:57 +0000 (17:32 +0000)
Fixes: https://tracker.ceph.com/issues/73061
Signed-off-by: Matteo Paramatti <paramattimatteo@gmail.com>
(cherry picked from commit a4010a0f272e7e7b8e19cc3b2de2d355b8a809b2)
(cherry picked from commit 8ac65948b9d167fd9cfc3548c63d1e405c593813)

src/ceph-volume/ceph_volume/tests/util/test_disk.py
src/ceph-volume/ceph_volume/util/disk.py

index 09c4f5d7360af3854ccd7075a9ac100bbe85ddcf..6abe8571b4e86cddfdd14397689bde5b91ee4124 100644 (file)
@@ -696,6 +696,7 @@ V:1"""
         self.fs.create_file(self.fake_device, st_mode=(stat.S_IFBLK | 0o600))
         self.fs.create_file('/run/udev/data/b999:0', create_missing_dirs=True, contents=udev_data_bare_device)
         self.fs.create_file('/run/udev/data/b998:1', create_missing_dirs=True, contents=udev_data_lv_device)
+        self.fs.create_file('/run/udev/data/b997:2', create_missing_dirs=True, contents="")
 
     def test_device_not_found(self) -> None:
         self.fs.remove(self.fake_device)
@@ -710,6 +711,13 @@ V:1"""
         with pytest.raises(RuntimeError):
             disk.UdevData(self.fake_device)
 
+    @patch('ceph_volume.util.disk.os.stat', MagicMock())
+    @patch('ceph_volume.util.disk.os.minor', Mock(return_value=2))
+    @patch('ceph_volume.util.disk.os.major', Mock(return_value=997))
+    def test_empty_data(self) -> None:
+        # no exception should be raised when a /run/udev/data/* file is empty
+        _ = disk.UdevData(self.fake_device)
+
     @patch('ceph_volume.util.disk.os.stat', MagicMock())
     @patch('ceph_volume.util.disk.os.minor', Mock(return_value=0))
     @patch('ceph_volume.util.disk.os.major', Mock(return_value=999))
index 3b2d2df359e10788f1b4fef9437b12a90be647b6..31b35bb566df2c18225717614e686275e927d0b1 100644 (file)
@@ -1374,7 +1374,7 @@ class UdevData:
 
         with open(self.udev_data_path, 'r') as f:
             content: str = f.read().strip()
-            self.raw_data: List[str] = content.split('\n')
+            self.raw_data: List[str] = content.split('\n') if content else []
 
         for line in self.raw_data:
             data_type, data = line.split(':', 1)