def find_osd_weight(crush_file, hdd_osds, ssd_osds):
"""
:param crush_file:
:param hdd_osds
hhd???osd??????[('1', 'node0001'), ('3', 'node0002')]
:param ssd_osds
ssd???osd??????[('0', 'node0002'), ('2', 'node0002')]
:return:
"""
result_dict = dict()
osd_list = []
if hdd_osds:
osd_list.extend([osd_num for osd_num, _ in hdd_osds ])
if ssd_osds:
osd_list.extend([osd_num for osd_num, _ in ssd_osds ])
with open(crush_file) as f:
content_list = f.readlines()
for osd_num in osd_list:
id_pattern = re.compile(r'^\s*item osd.{} weight (\d+\.\d+)'.format(osd_num), re.MULTILINE)
for line in content_list:
m = id_pattern.match(line)
if m:
result_dict[osd_num] = m.group(1)
break
return result_dict
评论列表
文章目录