def detect_infiniband(hw_lst): '''Detect Infiniband devinces. To detect if an IB device is present, we search for a pci device. This pci device shall be from vendor Mellanox (15b3) form class 0280 Class 280 stands for a Network Controller while ethernet device are 0200''' status, _ = cmd("lspci -d 15b3: -n|awk '{print $2}'|grep -q '0280'") if status == 0: ib_card = 0 for devices in range(ib_card, len(ib.ib_card_drv())): card_type = ib.ib_card_drv()[devices] ib_infos = ib.ib_global_info(card_type) nb_ports = ib_infos['nb_ports'] hw_lst.append(('infiniband', 'card%i' % ib_card, 'card_type', card_type)) hw_lst.append(('infiniband', 'card%i' % ib_card, 'device_type', ib_infos['device_type'])) hw_lst.append(('infiniband', 'card%i' % ib_card, 'fw_version', ib_infos['fw_ver'])) hw_lst.append(('infiniband', 'card%i' % ib_card, 'hw_version', ib_infos['hw_ver'])) hw_lst.append(('infiniband', 'card%i' % ib_card, 'nb_ports', nb_ports)) hw_lst.append(('infiniband', 'card%i' % ib_card, 'sys_guid', ib_infos['sys_guid'])) hw_lst.append(('infiniband', 'card%i' % ib_card, 'node_guid', ib_infos['node_guid'])) for port in range(1, int(nb_ports)+1): ib_port_infos = ib.ib_port_info(card_type, port) hw_lst.append(('infiniband', 'card%i_port%i' % (ib_card, port), 'state', ib_port_infos['state'])) hw_lst.append(('infiniband', 'card%i_port%i' % (ib_card, port), 'physical_state', ib_port_infos['physical_state'])) hw_lst.append(('infiniband', 'card%i_port%i' % (ib_card, port), 'rate', ib_port_infos['rate'])) hw_lst.append(('infiniband', 'card%i_port%i' % (ib_card, port), 'base_lid', ib_port_infos['base_lid'])) hw_lst.append(('infiniband', 'card%i_port%i' % (ib_card, port), 'lmc', ib_port_infos['lmc'])) hw_lst.append(('infiniband', 'card%i_port%i' % (ib_card, port), 'sm_lid', ib_port_infos['sm_lid'])) hw_lst.append(('infiniband', 'card%i_port%i' % (ib_card, port), 'port_guid', ib_port_infos['port_guid'])) return True else: sys.stderr.write('Info: No Infiniband device found\n') return False
def detect_infiniband(hw_lst): '''Detect Infiniband devinces. To detect if an IB device is present, we search for a pci device. This pci device shall be from vendor Mellanox (15b3) form class 0280 Class 280 stands for a Network Controller while ethernet device are 0200''' status, _ = cmd("lspci -d 15b3: -n|awk '{print $2}'|grep -q '0280'") if status == 0: ib_card = 0 for devices in range(ib_card, len(ib.ib_card_drv())): card_type = ib.ib_card_drv()[devices] ib_infos = ib.ib_global_info(card_type) nb_ports = ib_infos['nb_ports'] hw_lst.append( ('infiniband', 'card%i' % ib_card, 'card_type', card_type)) hw_lst.append(('infiniband', 'card%i' % ib_card, 'device_type', ib_infos['device_type'])) hw_lst.append(('infiniband', 'card%i' % ib_card, 'fw_version', ib_infos['fw_ver'])) hw_lst.append(('infiniband', 'card%i' % ib_card, 'hw_version', ib_infos['hw_ver'])) hw_lst.append( ('infiniband', 'card%i' % ib_card, 'nb_ports', nb_ports)) hw_lst.append(('infiniband', 'card%i' % ib_card, 'sys_guid', ib_infos['sys_guid'])) hw_lst.append(('infiniband', 'card%i' % ib_card, 'node_guid', ib_infos['node_guid'])) for port in range(1, int(nb_ports) + 1): ib_port_infos = ib.ib_port_info(card_type, port) hw_lst.append(('infiniband', 'card%i_port%i' % (ib_card, port), 'state', ib_port_infos['state'])) hw_lst.append( ('infiniband', 'card%i_port%i' % (ib_card, port), 'physical_state', ib_port_infos['physical_state'])) hw_lst.append(('infiniband', 'card%i_port%i' % (ib_card, port), 'rate', ib_port_infos['rate'])) hw_lst.append(('infiniband', 'card%i_port%i' % (ib_card, port), 'base_lid', ib_port_infos['base_lid'])) hw_lst.append(('infiniband', 'card%i_port%i' % (ib_card, port), 'lmc', ib_port_infos['lmc'])) hw_lst.append(('infiniband', 'card%i_port%i' % (ib_card, port), 'sm_lid', ib_port_infos['sm_lid'])) hw_lst.append(('infiniband', 'card%i_port%i' % (ib_card, port), 'port_guid', ib_port_infos['port_guid'])) return True else: sys.stderr.write('Info: No Infiniband device found\n') return False