def test_parse_lsblk(self): out = """NAME="sda" TYPE="disk" SIZE="5G" TRAN="iscsi" NAME="36005076802810d504800000000002ede" TYPE="mpath" SIZE="5G" TRAN="" NAME="sdb" TYPE="disk" SIZE="5G" TRAN="iscsi" NAME="sdb1" TYPE="part" SIZE="5G" TRAN="" NAME="sdc" TYPE="disk" SIZE="5G" TRAN="iscsi" NAME="sdc1" TYPE="part" SIZE="10M" TRAN="" NAME="sdd" TYPE="disk" SIZE="20G" TRAN="fc" NAME="36005076802810d504800000000002c1e" TYPE="mpath" SIZE="20G" TRAN="" NAME="sde" TYPE="disk" SIZE="20G" TRAN="fc" NAME="36005076802810d504800000000002c1e" TYPE="mpath" SIZE="20G" TRAN="" NAME="dasda" TYPE="disk" SIZE="22.5G" TRAN="" NAME="dasda1" TYPE="part" SIZE="22.5G" TRAN="" """ ret_dict = utils.parse_lsblk_out(out) self.assertEqual(ret_dict['sda']['transport'], 'iscsi') self.assertEqual(ret_dict['sde']['transport'], 'fc') self.assertEqual(ret_dict['sde']['size'], '20G')
def test_parse_lsblk(self): out = """NAME="sda" TYPE="disk" SIZE="5368709120" TRAN="iscsi" NAME="36005076802810d504800000000002ede" TYPE="mpath" SIZE="5368709120" TRAN="" NAME="sdb" TYPE="disk" SIZE="5368709120" TRAN="iscsi" NAME="sdb1" TYPE="part" SIZE="5368709120" TRAN="" NAME="sdc" TYPE="disk" SIZE="5368709120" TRAN="iscsi" NAME="sdc1" TYPE="part" SIZE="10485760" TRAN="" NAME="sdd" TYPE="disk" SIZE="21474836480" TRAN="fc" NAME="36005076802810d504800000000002c1e" TYPE="mpath" SIZE="21474836480" \ TRAN="" NAME="sde" TYPE="disk" SIZE="21474836480" TRAN="fc" NAME="36005076802810d504800000000002c1e" TYPE="mpath" SIZE="21474836480" \ TRAN="" NAME="dasda" TYPE="disk" SIZE="24153292800" TRAN="" NAME="dasda1" TYPE="part" SIZE="24153292800" TRAN="" """ ret_dict = utils.parse_lsblk_out(out) self.assertEqual(ret_dict['sda']['transport'], 'iscsi') self.assertEqual(ret_dict['sde']['transport'], 'fc') self.assertEqual(ret_dict['sde']['size'], 20480)
def test_parse_lsblk(self): out = """NAME="sda" TYPE="disk" SIZE="5368709120" TRAN="iscsi" NAME="36005076802810d504800000000002ede" TYPE="mpath" SIZE="5368709120" TRAN="" NAME="sdb" TYPE="disk" SIZE="5368709120" TRAN="iscsi" NAME="sdb1" TYPE="part" SIZE="5368709120" TRAN="" NAME="sdc" TYPE="disk" SIZE="5368709120" TRAN="iscsi" NAME="sdc1" TYPE="part" SIZE="10485760" TRAN="" NAME="sdd" TYPE="disk" SIZE="21474836480" TRAN="fc" NAME="36005076802810d504800000000002c1e" TYPE="mpath" SIZE="21474836480" \ TRAN="" NAME="sde" TYPE="disk" SIZE="21474836480" TRAN="fc" NAME="36005076802810d504800000000002c1e" TYPE="mpath" SIZE="21474836480" \ TRAN="" NAME="dasda" TYPE="disk" SIZE="24153292800" TRAN="" NAME="dasda1" TYPE="part" SIZE="24153292800" TRAN="" """ ret_dict = utils.parse_lsblk_out(out) self.assertEqual(ret_dict['sda']['transport'], 'iscsi') self.assertEqual(ret_dict['sde']['transport'], 'fc') self.assertEqual(ret_dict['sde']['size'], 20480)
def get_final_list(): """ Comprehensive list of storage devices found on the system :return:List of dictionaries containing the information about individual disk """ try: out = get_lsblk_keypair_out(True) except OperationFailed: out = get_lsblk_keypair_out(False) final_list = [] try: dasds = get_dasd_devs() if dasds: final_list = dasds blk_dict = parse_lsblk_out(out) out = get_disks_by_id_out() ll_dict, ll_id_dict = parse_ll_out(out) fc_blk_dict = get_fc_path_elements() for blk in blk_dict: final_dict = {} if blk in ll_dict: final_dict['id'] = ll_dict[blk] if final_dict['id'].startswith('ccw-'): continue block_dev_list = ll_id_dict[final_dict['id']] max_slaves = 1 for block_dev in block_dev_list: slaves = os.listdir('/sys/block/' + block_dev + '/slaves/') if max_slaves < len(slaves): max_slaves = len(slaves) final_dict['mpath_count'] = max_slaves final_dict['name'] = blk final_dict['size'] = blk_dict[blk]['size'] final_dict['type'] = blk_dict[blk]['transport'] if final_dict['type'] == 'iscsi': final_dict['status'] = '' if final_dict['type'] == 'fc': final_dict['hba_id'] = fc_blk_dict[blk].get('hba_id', '') final_dict['wwpn'] = fc_blk_dict[blk].get('wwpn', '') final_dict['fcp_lun'] = fc_blk_dict[blk].get('fcp_lun', '') final_dict['vport'] = fc_blk_dict[blk].get('vport', '') final_dict['status'] = '' if 'id' in final_dict: if final_dict['id'] in ll_id_dict: final_dict['name'] = ll_id_dict[final_dict['id']][0] if 'hba_id' in final_dict.keys(): if final_dict['hba_id']: final_list.append(final_dict) else: final_list.append(final_dict) except Exception as e: raise OperationFailed("GINSD00005E", {'err': e.message}) return final_list