def md_present(mdname): """Check if mdname is present in /proc/mdstat""" if not mdname: raise ValueError('md_present requires a valid md name') try: mdstat = util.load_file('/proc/mdstat') except IOError as e: if util.is_file_not_found_exc(e): LOG.warning('Failed to read /proc/mdstat; ' 'md modules might not be loaded') return False else: raise e md_kname = dev_short(mdname) # Find lines like: # md10 : active raid1 vdc1[1] vda2[0] present = [ line for line in mdstat.splitlines() if line.split(":")[0].rstrip() == md_kname ] if len(present) > 0: return True return False
def test_md_sysfs_attr(self, mock_isfile, mock_sysblock): mdname = "/dev/md0" attr_name = 'array_state' sysfs_path = '/sys/class/block/{}/md/{}'.format(dev_short(mdname), attr_name) mock_sysblock.side_effect = ['/sys/class/block/md0/md'] mock_isfile.side_effect = [True] mdadm.md_sysfs_attr(mdname, attr_name) self.mock_util.load_file.assert_called_with(sysfs_path) mock_sysblock.assert_called_with(mdname, 'md') mock_isfile.assert_called_with(sysfs_path)
def md_device_key_dev(devname): if not devname: raise ValueError('Missing parameter devname') return 'MD_DEVICE_' + dev_short(devname) + '_DEV'