mirror of
https://github.com/ceph/ceph
synced 2025-02-24 11:37:37 +00:00
ceph-volume: filter RBD devices from the device inventory
Avoid running `blkid` or deploying OSDs on RBD devices by ensuring they do not appear in the `ceph-volume inventory` Fixes: https://tracker.ceph.com/issues/53846 Signed-off-by: Michael Fritch <mfritch@suse.com>
This commit is contained in:
parent
7112b9a47f
commit
47325ec3ec
@ -331,6 +331,15 @@ class TestGetDevices(object):
|
||||
result = disk.get_devices(_sys_block_path=block_path)
|
||||
assert result[sda_path]['rotational'] == '1'
|
||||
|
||||
def test_is_ceph_rbd(self, tmpfile, tmpdir, patched_get_block_devs_lsblk):
|
||||
rbd_path = '/dev/rbd0'
|
||||
patched_get_block_devs_lsblk.return_value = [[rbd_path, rbd_path, 'disk']]
|
||||
block_path = self.setup_path(tmpdir)
|
||||
block_rbd_path = os.path.join(block_path, 'rbd0')
|
||||
os.makedirs(block_rbd_path)
|
||||
result = disk.get_devices(_sys_block_path=block_path)
|
||||
assert rbd_path not in result
|
||||
|
||||
|
||||
class TestSizeCalculations(object):
|
||||
|
||||
|
@ -361,6 +361,13 @@ def is_partition(dev):
|
||||
return False
|
||||
|
||||
|
||||
def is_ceph_rbd(dev):
|
||||
"""
|
||||
Boolean to determine if a given device is a ceph RBD device, like /dev/rbd0
|
||||
"""
|
||||
return dev.startswith(('/dev/rbd'))
|
||||
|
||||
|
||||
class BaseFloatUnit(float):
|
||||
"""
|
||||
Base class to support float representations of size values. Suffix is
|
||||
@ -764,6 +771,10 @@ def get_devices(_sys_block_path='/sys/block'):
|
||||
sysdir = os.path.join(_sys_block_path, devname)
|
||||
metadata = {}
|
||||
|
||||
# If the device is ceph rbd it gets excluded
|
||||
if is_ceph_rbd(diskname):
|
||||
continue
|
||||
|
||||
# If the mapper device is a logical volume it gets excluded
|
||||
if is_mapper_device(diskname):
|
||||
if lvm.get_device_lvs(diskname):
|
||||
|
Loading…
Reference in New Issue
Block a user