assert disk.is_member is True
+ def test_reject_removable_device(self, device_info):
+ data = {"/dev/sdb": {"removable": 1}}
+ device_info(devices=data)
+ disk = device.Device("/dev/sdb")
+ assert not disk.is_valid
+
+ def test_accept_non_removable_device(self, device_info):
+ data = {"/dev/sdb": {"removable": 0}}
+ device_info(devices=data)
+ disk = device.Device("/dev/sdb")
+ assert disk.is_valid
+
@pytest.mark.parametrize("label", ceph_partlabels)
def test_is_member_lsblk(self, device_info, label):
lsblk = {"PARTLABEL": label}
assert result[dev_sda_path]['model'] == ''
assert result[dev_sda_path]['partitions'] == {}
- def test_sda_is_removable_gets_skipped(self, tmpfile, tmpdir):
- block_path, dev_path, mapper_path = self.setup_paths(tmpdir)
- dev_sda_path = os.path.join(dev_path, 'sda')
- block_sda_path = os.path.join(block_path, 'sda')
- os.makedirs(block_sda_path)
- os.makedirs(dev_sda_path)
-
- tmpfile('removable', contents='1', directory=block_sda_path)
- result = disk.get_devices(
- _sys_block_path=block_path,
- _dev_path=dev_path,
- _mapper_path=mapper_path)
- assert result == {}
def test_dm_device_is_not_used(self, monkeypatch, tmpdir):
# the link to the mapper is used instead
self.sys_api = {}
self._exists = None
self._is_lvm_member = None
+ self._valid = False
+ self._rejected_reasons = []
self._parse()
def _parse(self):
return any(osd_ids)
+ @property
+ def is_valid(self):
+ def reject_device(item, value, reason):
+ try:
+ if self.sys_api[item] == value:
+ self._rejected_reasons.append(reason)
+ except KeyError:
+ pass
+ reject_device('removable', 1, 'removable')
+
+ self._valid = len(self._rejected_reasons) == 0
+ return self._valid
+
+
class CephDiskDevice(object):
"""
Detect devices that have been created by ceph-disk, report their type
if lvm.is_lv(diskname):
continue
- # If the device reports itself as 'removable', get it excluded
metadata['removable'] = get_file_contents(os.path.join(sysdir, 'removable'))
- if metadata['removable'] == '1':
- continue
for key in ['vendor', 'model', 'sas_address', 'sas_device_handle']:
metadata[key] = get_file_contents(sysdir + "/device/" + key)