crushmap.py 文件源码

python
阅读 25 收藏 0 点赞 0 评论 0

项目:core-python 作者: yidao620c 项目源码 文件源码
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
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号