def test_get_device_slave_knames(self): # # /sys/class/block/wark/slaves/foo -> ../../foo # /sys/class/block/foo # # should return 'bar' cfg = OrderedDict([ ('wark', ['foo']), ('foo', []), ]) device = "/dev/wark" slaves = ["foo"] self._prepare_mocks(device, cfg) knames = block.get_device_slave_knames(device) self.assertEqual(slaves, knames)
def volpath_is_iscsi(volume_path): """ Determine if the volume_path's kname is backed by iSCSI. Recursively check volume_path's slave devices as well in case volume_path is a stacked block device (like LVM/MD) returns a boolean """ if not volume_path: raise ValueError("Invalid input for volume_path: '%s'", volume_path) volume_path_slaves = get_device_slave_knames(volume_path) LOG.debug('volume_path=%s found slaves: %s', volume_path, volume_path_slaves) knames = [path_to_kname(volume_path)] + volume_path_slaves return any([kname_is_iscsi(kname) for kname in knames])
def test_get_device_slave_knames_stacked(self): # # /sys/class/block/wark/slaves/foo -> ../../foo # /sys/class/block/wark/slaves/bar -> ../../bar # /sys/class/block/foo # /sys/class/block/bar # # should return ['foo', 'bar'] cfg = OrderedDict([ ('wark', ['foo', 'bar']), ('foo', []), ('bar', []), ]) device = 'wark' slaves = ['foo', 'bar'] self._prepare_mocks(device, cfg) knames = block.get_device_slave_knames(device) self.assertEqual(slaves, knames)
def test_get_device_slave_knames_double_stacked(self): # /sys/class/block/wark/slaves/foo -> ../../foo # /sys/class/block/wark/slaves/bar -> ../../bar # /sys/class/block/foo # /sys/class/block/bar/slaves/zip -> ../../zip # /sys/class/block/zip # # mapping of device: cfg = OrderedDict([ ('wark', ['foo', 'bar']), ('foo', []), ('bar', ['zip']), ('zip', []), ]) device = 'wark' slaves = ['foo', 'zip'] self._prepare_mocks(device, cfg) knames = block.get_device_slave_knames(device) self.assertEqual(slaves, knames)