]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
Merge PR #68108 into tentacle
authorPatrick Donnelly <pdonnell@ibm.com>
Wed, 22 Apr 2026 17:24:53 +0000 (13:24 -0400)
committerPatrick Donnelly <pdonnell@ibm.com>
Wed, 22 Apr 2026 17:24:53 +0000 (13:24 -0400)
* refs/pull/68108/head:
ceph-volume: skip virtual cdrom devices in inventory

Reviewed-by: Patrick Donnelly <pdonnell@ibm.com>
1  2 
src/ceph-volume/ceph_volume/tests/util/test_disk.py
src/ceph-volume/ceph_volume/util/disk.py

index 68eb944a34c68be24eeed8407b22673f7ebaca9f,05bbb4575464cac0bd4b796b85a36bbc028c6b3c..bd4b6a2be348f6a1ab17f5b1e6398abe2e972eeb
@@@ -344,29 -344,28 +344,50 @@@ class TestGetDevices(object)
              result = disk.get_devices()
          assert result[sda_path]['actuators'] == fake_actuator_nb
  
 +    def test_lvm_device_is_included(self, patched_get_block_devs_sysfs, fake_filesystem):
 +        lv_path = '/dev/vg_test/lv1'
 +        dm_path = '/dev/dm-0'
 +        mapper_path = '/dev/mapper/vg_test-lv1'
 +        patched_get_block_devs_sysfs.return_value = [
 +            [dm_path, mapper_path, 'lvm', dm_path]
 +        ]
 +        fake_filesystem.create_dir('/sys/block/dm-0/slaves')
 +        fake_filesystem.create_dir('/sys/block/dm-0/queue')
 +        fake_filesystem.create_file('/sys/block/dm-0/size', contents='204800')
 +        fake_filesystem.create_file('/sys/block/dm-0/queue/rotational', contents='1')
 +        fake_filesystem.create_file('/sys/block/dm-0/queue/hw_sector_size', contents='512')
 +        with patch("ceph_volume.util.disk.UdevData") as MockUdevData:
 +            mock_instance = MagicMock()
 +            mock_instance.slashed_path = lv_path
 +            mock_instance.environment = {}
 +            MockUdevData.return_value = mock_instance
 +            result = disk.get_devices()
 +        assert lv_path in result
 +        assert result[lv_path]['type'] == 'lvm'
 +        assert result[lv_path]['human_readable_size'] == '100.00 MB'
 +
  
+ class TestGetBlockDevsSysfs(object):
+     def test_optical_device_is_skipped(self, fake_filesystem):
+         # sr0 is a CDROM (IPMI/BMC virtual media),not a usable disk.
+         fake_filesystem.create_file('/dev/sr0')
+         fake_filesystem.create_dir('/sys/dev/block')
+         fake_filesystem.create_dir('/sys/block/sr0/holders')
+         fake_filesystem.create_dir('/sys/block/sr0/device')
+         fake_filesystem.create_file('/sys/block/sr0/device/type', contents='5\n')
+         assert disk.get_block_devs_sysfs(device='sr0') == []
+     def test_regular_device_is_not_skipped(self, fake_filesystem):
+         # normal disk should still be reported.
+         fake_filesystem.create_file('/dev/sda')
+         fake_filesystem.create_dir('/sys/dev/block')
+         fake_filesystem.create_dir('/sys/block/sda/holders')
+         result = disk.get_block_devs_sysfs(device='sda')
+         assert result == [['/dev/sda', '/dev/sda', 'disk', '/dev/sda']]
  class TestSizeCalculations(object):
  
      @pytest.mark.parametrize('aliases', [