ceph_volume: Rejecting Read-only devices

If a devices is said to be read-only, there is no chance we can actually
use it. So let's report it as unusable.

Signed-off-by: Erwan Velu <erwan@redhat.com>
This commit is contained in:
Erwan Velu 2018-10-09 22:02:31 +02:00
parent d8fdf0b753
commit f1a9435006
3 changed files with 16 additions and 0 deletions

View File

@ -162,6 +162,18 @@ class TestCephDiskDevice(object):
disk = device.Device("/dev/sdb")
assert disk.is_valid
def test_reject_readonly_device(self, device_info):
data = {"/dev/cdrom": {"ro": 1}}
device_info(devices=data)
disk = device.Device("/dev/cdrom")
assert not disk.is_valid
def test_accept_non_readonly_device(self, device_info):
data = {"/dev/sda": {"ro": 0}}
device_info(devices=data)
disk = device.Device("/dev/sda")
assert disk.is_valid
@pytest.mark.parametrize("label", ceph_partlabels)
def test_is_member_lsblk(self, device_info, label):
lsblk = {"PARTLABEL": label}

View File

@ -141,6 +141,7 @@ class Device(object):
except KeyError:
pass
reject_device('removable', 1, 'removable')
reject_device('ro', 1, 'read-only')
self._valid = len(self._rejected_reasons) == 0
return self._valid

View File

@ -695,6 +695,9 @@ def get_devices(_sys_block_path='/sys/block', _dev_path='/dev', _mapper_path='/d
continue
metadata['removable'] = get_file_contents(os.path.join(sysdir, 'removable'))
# Is the device read-only ?
metadata['ro'] = get_file_contents(os.path.join(sysdir, 'ro'))
for key in ['vendor', 'model', 'sas_address', 'sas_device_handle']:
metadata[key] = get_file_contents(sysdir + "/device/" + key)