#!/bin/bash
set +x
LOG_FILE="/var/log/inspect.log"
G_MML_FILE_PATH="/opt/huawei/snas/script/inspect_mml"
source $G_MML_FILE_PATH/CheckItems
source $G_MML_FILE_PATH/CommonFunc.sh
CurInspectNum="126"
CurInspectFun="$(GetInspectType $CurInspectNum)"
RESULTFILE="/tmp/tmpResult${CurInspectFun}"
LOCAL_BACK_IP=""
isPass=0
>${RESULTFILE}

function LOG
{
    time=$(date)
    echo [${time}][$$][$CurInspectFun]$@ >> $LOG_FILE
}


function checkExpBoardStatus()
{
    local status=""
    local ExpBoardInfo=""
    local ControlBoardID=""
    local healthStatus=""
    local runningStatus=""
    local ProductType=$(cat "/opt/huawei/snas/etc/snas.ini"|grep productType|awk -F= '{print $2}')

    LOCAL_BACK_IP=`GetLocalIp`
    if [ "${LOCAL_BACK_IP}X" == "X" ];then
        echo "[ERR]Node:$(hostname)||INFO:Can't get backend IP." >> ${RESULTFILE} 2>&1
        LOG "[ERR]Node:$(hostname) ||INFO:Command exec faild."
        isPass=1
        return
    fi

    cat /opt/huawei/deploy/etc/deploy.ini | grep devicename | grep "9000 C72 Node" >/dev/null 2>&1
    if [ $? -ne 0 ]; then
        echo "Node:$LOCAL_BACK_IP(Not C72 node)||ExpBoard:Do not involve." >> ${RESULTFILE} 2>&1
        LOG "Node:$LOCAL_BACK_IP(Not C72 node)||INFO:No need to check."
        return
    fi
    > /tmp/checkExpBoardStatus_StatusInfo
    $G_MML_FILE_PATH/ShowInspectMml $LOCAL_BACK_IP 4016 'cm hardwareinfo show' >> /tmp/checkExpBoardStatus_StatusInfo 2>&1
    isMmlOK=$?
    sleep 3
    ipmitool fru >> /tmp/checkExpBoardStatus_StatusInfo 2>&1
    isPass=$?
    if [ ${isPass} -ne 0 -o ${isMmlOK} -ne 0 ]; then
        echo "[ERR]Node:$LOCAL_BACK_IP ||INFO:Failed to execute command(MmlBatch 4016 'cm hardwareinfo show' / ipmitool fru)." >> ${RESULTFILE} 2>&1
        LOG "[ERR]Node:$LOCAL_BACK_IP ||INFO:Command exec faild."
        isPass=1
        return
    fi
    iNum=$(cat /tmp/checkExpBoardStatus_StatusInfo | wc -l)
    if [ ${iNum} -eq 0 ]; then
        return
    fi

    set_ifs
    cat /tmp/checkExpBoardStatus_StatusInfo >> $LOG_FILE 2>&1

    ExpBoardInfo=$(cat /tmp/checkExpBoardStatus_StatusInfo | grep "ExpBoard:no"|wc -l)
    if [ $ExpBoardInfo -ne 0 ];then
        isPass=1
        echo "[ERR]Node:$LOCAL_BACK_IP(C72 node)||INFO:There is no ExpBoard." >>${RESULTFILE} 2>&1
        LOG "Node:$LOCAL_BACK_IP(C72 node)||INFO:There is no ExpBoard."
        restore_ifs
        return
    fi

    ControlBoardID=$(cat /tmp/checkExpBoardStatus_StatusInfo | grep "Board Slot ID" | awk '{print $5}')
    #取对应级联板信息
    ExpBoardInfo=$(cat /tmp/checkExpBoardStatus_StatusInfo | grep -A2 "ExpBoard:" | grep "Board_ID: $ControlBoardID")
    ExpBoardInfo_num=$(cat /tmp/checkExpBoardStatus_StatusInfo | grep -A2 "ExpBoard:" | grep "Board_ID: $ControlBoardID"|wc -l)
    if [ $ExpBoardInfo_num -eq 0 ];then
        isPass=1
        echo "[ERR]Node:$LOCAL_BACK_IP(C72 node)||INFO:There is no ExpBoard." >>${RESULTFILE} 2>&1
        LOG "Node:$LOCAL_BACK_IP(C72 node)||INFO:There is no ExpBoard."
    else
        healthStatus=`echo $ExpBoardInfo | awk '{print $5}'`
        runningStatus=`echo $ExpBoardInfo | awk '{print $8}'`
        if [ "$healthStatus" = "1" ] && [ "$runningStatus" = "1" -o "$runningStatus" = "2" ]; then
            echo "Node:$LOCAL_BACK_IP(C72 node)||$ExpBoardInfo" >>${RESULTFILE} 2>&1
        else
            isPass=1
            ExpBoardErrorInfo="BoardID:${ControlBoardID}, healthStatus:${healthStatus}, runningStatus:${runningStatus}"
            echo "[ERR]Node:$LOCAL_BACK_IP(C72 node)||INFO:${ExpBoardErrorInfo}" >>${RESULTFILE} 2>&1
            LOG "Node:$LOCAL_BACK_IP(C72 node)||INFO:${ExpBoardErrorInfo}"
        fi
    fi

    restore_ifs

}

checkExpBoardStatus
echo "${CurInspectFun}_Pass $isPass" >>${RESULTFILE} 2>&1

