示例#1
0
def gfs_volume_info(gvol):
    cmd = "gluster volume info %s" % gvol
    code, result = psutil_shell(cmd, 30)
    if code != 0:
        return False
    result = result.strip('\n').split('\n')
    info_list = []
    info_dict = dict()
    info_dict['bricks'] = []
    for item in result:
        if item == ' ':
            continue
        key, value = item.split(":", 1)
        if value == '':
            continue

        if key.startswith("Brick"):
            info_dict['bricks'].append(value.strip(' '))
        else:
            if key == 'Number of Bricks':
                info_dict[key.replace(' ', '')] = value.split('=')[-1]
            else:
                info_dict[key.replace(' ', '')] = value.strip(' ')
    # print(info_dict)
    return info_dict
示例#2
0
def get_raid_info_all():
    """
    mdadm -Q /dev/md* |tr ":" " " |awk '{print $1,$2,$3,$4}'
    mdadm -D -Y /dev/md*
    :return:
    """
    cmd = "mdadm -Q /dev/md* |tr \":\" \" \" |awk '{print $1,$2,$3,$4}'"
    code, result = psutil_shell(cmd, 10)
    print(result)
    if code == 0:
        # print('{}. get success.'.format(cmd))
        raid_list = list()
        for blk_info in result.split('\n'):

            raid_dict = dict()
            info_list = list(filter(None, blk_info.split(' ')))
            if len(info_list) < 3:
                continue

            raid_dict['id'] = info_list[0]
            raid_dict['name'] = info_list[0]
            raid_dict['size'] = info_list[1]
            raid_dict['type'] = info_list[2]
            raid_dict['nums'] = info_list[3]
            # blk_dict['type'] = info_list[2]
            raid_list.append(raid_dict)
        # import operator
        # blk_list_sorted = sorted(blk_list, key=operator.itemgetter('device'))  # blk list sort
        blk_list_sorted = sorted(raid_list, key=lambda x: x['id'])
        return blk_list_sorted
    else:
        print('{}. get fail.{}'.format(cmd, result))
        return code, result
示例#3
0
def gfs_volume_all():
    cmd = "gluster volume list"
    code, result = psutil_shell(cmd, 30)

    if code != 0:
        return False
    result = result.strip('\n').split('\n')
    return result
示例#4
0
def gfs_peer_probe(hostname):
    cmd = "gluster peer probe %s" % hostname
    code, result = psutil_shell(cmd, 30)
    if code != 0:
        print(hostname, result)
        return False, result
    else:
        return True, result
示例#5
0
def gfs_volume_start(vol):
    cmd = "gluster volume start %s force" % vol
    code, result = psutil_shell(cmd, 30)
    print(result)
    if code != 0:
        print(vol, result)
        return False, result
    else:
        return True, result
示例#6
0
def gfs_peer_detach(hostname):
    cmd = "echo y | gluster peer detach %s force" % hostname
    code, result = psutil_shell(cmd, 30)
    print(result)
    if code != 0:
        print(hostname, result)
        return False, result
    else:
        return True, result
示例#7
0
def gfs_volume_stop(vol):
    cmd = "echo y | gluster volume stop %s force" % vol
    code, result = psutil_shell(cmd, 30)
    # print(result)
    if code != 0:
        # print(vol, result)
        return False, result
    else:
        return True, result
示例#8
0
def get_raid_info_size(raid_name):
    """
    :param raid_name: /dev/md0
    :return: 20952064   KB
    """
    cmd = "mdadm -D %s | grep 'Array Size' | awk '{print $4}'" % raid_name
    code, result = psutil_shell(cmd, TIMEOUT)

    if code == 0:
        return result.strip()
    else:
        return None
示例#9
0
def get_raid_info_uuid(raid_name):
    """
    :param raid_name: /dev/md0
    :return:
    """
    cmd = "mdadm -D %s | grep UUID | awk '{print $3}'" % raid_name
    code, result = psutil_shell(cmd, TIMEOUT)

    if code == 0:
        return result.strip()
    else:
        return None
示例#10
0
def get_raid_disks_by_name(raid_name):
    """
    mdadm -D /dev/md67 | grep /dev/sd | awk '{print $7}' | xargs
    :param raid_name:
    :return:
    """
    cmd = "mdadm -D %s | grep /dev/sd | awk '{print $7}' | xargs" % raid_name
    code, result = psutil_shell(cmd, TIMEOUT)
    # print(result)
    if code == 0:
        return result.strip().split(' ')
    else:
        return None
示例#11
0
def delete_raid(raid_name):
    """
    mdadm -S /dev/md2
    :param raid_name: /dev/md2
    :return:
    """
    shell_name = 'shells/raid_delete.sh'
    cmdstr = "{} {} ".format(shell_name, raid_name)
    code, result = psutil_shell(cmdstr, 10)
    if code == 0:
        print('{}. success.'.format(cmdstr))
    else:
        print('{}. fail.{}'.format(cmdstr, result))
    return code, result
示例#12
0
def gfs_pool_list():
    cmd = "gluster pool list | awk '{if (NR>1) {print $1,$2,$3}}'"

    code, result = psutil_shell(cmd, 30)
    pool = []
    if code != 0:
        return False
    result = result.strip('\n').split('\n')
    for item in result:
        info = item.split(' ')
        pool_dict = dict()
        pool_dict['hostname'] = info[1]
        pool_dict['uuid'] = info[0]
        pool_dict['state'] = info[2]
        pool.append(pool_dict)
    return pool
示例#13
0
def create_raid(raid_name, raid_level, dev_num, dev_list):
    """
    mdadm -C /dev/md2 -l 5 -n 3 /dev/sdd /dev/sde /dev/sdf -x /dev/sdg  # raid5
    :param raid_name: /dev/md2
    :param raid_level: 5
    :param dev_num: 3
    :param dev_str: /dev/sdd /dev/sde /dev/sdf
    :return:
    """
    shell_name = 'shells/raid_create.sh'
    cmdstr = "{} {} {} {} \'{}\'".format(shell_name, raid_name, raid_level,
                                         dev_num, ' '.join(dev_list))
    print(cmdstr)
    code, result = psutil_shell(cmdstr, 10)
    if code == 0:
        print('{}. success.'.format(cmdstr))
    else:
        print('{}. fail.{}'.format(cmdstr, result))
    return code, result