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
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
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
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
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
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
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
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
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
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
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
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
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