def init_infiniband()

in src/worker/exporters/net_exporter.py [0:0]


def init_infiniband(args):
    sysfs_path = args.inifiband_sysfs
    for hca in os.listdir(sysfs_path):
        sys_image_guid = ''
        with open(os.path.join(sysfs_path, hca, 'sys_image_guid')) as f:
            sys_image_guid = f.readline().strip().replace(':', '')
        for port in os.listdir(os.path.join(sysfs_path, hca, 'ports')):

            counter_path = os.path.join(sysfs_path, hca, 'ports', port,
                                        'counters')
            counter_file = {}
            counters = {}

            for field_name in IB_COUNTERS:
                if field_name == 'port_physical_state':
                    state_path = os.path.join(sysfs_path, hca, 'ports', port)
                    counter_file[field_name] = open(os.path.join(state_path, 'phys_state'), 'r')
                    counters[field_name] = PORT_STATE[counter_file[field_name].readline().split()[1].strip()]
                    continue
                counter_file[field_name] = open(
                    os.path.join(counter_path, field_name), 'r')
                counters[field_name] = int(
                    counter_file[field_name].readline().strip())
            config['ib_port']['{}:{}'.format(hca, port)] = {
                'sys_image_guid': sys_image_guid,
                'counter_path': counter_path,
                'counter_file': counter_file,
                'counters': counters,
            }