Exemple #1
0
    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')
Exemple #2
0
    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)
Exemple #4
0
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