#! /usr/bin/python
#
# Query for IPMI FRU devices and print their output.
#

import os
import sys

import isi.hw.hal as hal
import isi.app.lib.procs as procs

known_devs = [
    { 'addr' : '0xA1', 'bus' : '0x82' },
    { 'addr' : '0xA3', 'bus' : '0x82' },
    { 'addr' : '0xA9', 'bus' : '0x82' },
    { 'addr' : '0xAB', 'bus' : '0x82' },
    { 'addr' : '0xA9', 'bus' : '0x00' },
    { 'addr' : '0xAB', 'bus' : '0x00' },
    { 'addr' : '0xAD', 'bus' : '0x00' },
    { 'addr' : '0xAF', 'bus' : '0x00' },
    ]

IPMI_FRU_CMD = '/usr/bin/isi_hwtools/isi_ipmifru'

def main(argv = None):
    if argv is None:
        argv = sys.argv

    for fru_dev in known_devs:
        busn = fru_dev['bus']
        addr = fru_dev['addr']
    
        cmd = ('%s -a %s -b %s -B -C -P -M' % (IPMI_FRU_CMD, addr,
            busn))

        (error, output) = procs.get_cmd_output(cmd)
        if error:
            continue

        print ('Found IPMI FRU Device (addr %s bus %s):' % 
            (fru_dev['addr'], fru_dev['bus']))

        for line in output:
            print '%s' % line

if __name__ == "__main__":
    sys.exit(main())
