From: Patrick Donnelly Date: Wed, 22 Apr 2026 17:24:53 +0000 (-0400) Subject: Merge PR #68108 into tentacle X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d6ece982c0095c7998fec4285b5cf51d702f1937;p=ceph.git Merge PR #68108 into tentacle * refs/pull/68108/head: ceph-volume: skip virtual cdrom devices in inventory Reviewed-by: Patrick Donnelly --- d6ece982c0095c7998fec4285b5cf51d702f1937 diff --cc src/ceph-volume/ceph_volume/tests/util/test_disk.py index 68eb944a34c6,05bbb4575464..bd4b6a2be348 --- a/src/ceph-volume/ceph_volume/tests/util/test_disk.py +++ b/src/ceph-volume/ceph_volume/tests/util/test_disk.py @@@ -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', [