#!/bin/bash
set +x
G_MML_FILE_PATH="/opt/huawei/snas/script/inspect_mml"
. $G_MML_FILE_PATH/CheckItems
G_SCRIPT_PATH="/opt/inspect"
CurInspectNum="316"
CurInspectFun="$(GetInspectType $CurInspectNum)"
RESULTFILE="/tmp/tmpResult${CurInspectFun}"
LOG_FILE="/var/log/inspect.log"
>${RESULTFILE}

G_ISPASS=0

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

function checkInfoqualizerSwitch()
{
    local tmpdir=/tmp/_tmp${CurInspectFun}

    # V500R007C10SPC400V100R006C30SPC900ֱ˳
    version=$( cat /opt/huawei/deploy/package/version | grep ProductVersion | awk -F= '{print $2}' | sed "s/^ *//g" | sed "s/ *$//g" )
    if [ X"${version}" != X"V500R007C10SPC400" -a X"${version}" != X"V100R006C30SPC900" ]; then
        LOG "[$LINENO]current version is ${version},no need to check."
        return
    fi

    mkdir -p ${tmpdir}

    touch ${tmpdir}/nas.sh
    if [ $? -ne 0 ]; then
        echo "[ERR]INFO:Failed to get touch ${tmpdir}/nas.sh." >>${RESULTFILE}
        LOG "[$LINENO]Failed to get touch ${tmpdir}/nas.sh."
    fi

    echo '#!/bin/bash' > ${tmpdir}/nas.sh
    echo '$*' >> ${tmpdir}/nas.sh
    echo ' ' >> ${tmpdir}/nas.sh
    chmod +x ${tmpdir}/nas.sh
    cd ${tmpdir}
    ./nas.sh "cat /mnt/fs/system/nas_proto/InfoEqualizer/config.xml" | grep cluster_dynip_balance_mode >  ${tmpdir}/tmpResultinfo_switch 2>&1
    infoSwitch=$( awk -F ">" '{print $2}' ${tmpdir}/tmpResultinfo_switch | awk -F "<" '{print $1}' )
    if [ "X2" == "X${infoSwitch}" -o "X3" == "X${infoSwitch}" ];then
        echo "[ERR]INFO:InfoEqualizer switch cluster_dynip_balance_mode value is(${infoSwitch}),change the value to the default value 0 or 1 before the upgrade." >>${RESULTFILE}
        G_ISPASS=1
    fi

    rm -rf ${tmpdir} >/dev/null 2>&1 
    return
}

function CheckIOStatus()
{
    local strcmd="/usr/local/bin/nas_proto_pum -m nas_vfs -c get_timeout_stat"
    local tmpinfo=""
    local tmLineNum=0
    local Operation="--"
    local Timeout="--"
    local Status="--"

    tmpinfo="$(${strcmd})"
    #ûлȡֶOperationʾЭִʧ
    echo "${tmpinfo}" | grep -wq "Operation"  >/dev/null
    if [ $? -ne 0 ];then
        G_ISPASS=1
        echo "[ERR]INFO:Failed to get information from command(/usr/local/bin/nas_proto_pum -m nas_vfs -c get_timeout_stat)." >>${RESULTFILE}
        LOG "[$LINENO]Failed to get information,tmpinfo=${tmpinfo}"
        return
    fi
    #ִеĽڵ2У˵Timeoutһ
    tmLineNum=$(echo "${tmpinfo}" | wc -l)
    if [ ${tmLineNum} -lt 2 ];then
        echo "Operation:${Operation}||Timeout:${Timeout}||Status:${Status}" >>${RESULTFILE}
    else
        G_ISPASS=1
        LOG "[$LINENO]num=${tmLineNum}"
        set_ifs
        for line in `echo "${tmpinfo}" | grep -v "Operation"`
        do
           Operation=$(echo "${line}" | awk '{print $1}')
           Timeout=$(echo "${line}" | awk '{print $2}')
           Status=$(echo "${line}" | awk '{print $3}')
           echo "Operation:${Operation}||Timeout:${Timeout}||Status:${Status}" >>${RESULTFILE}
        done
        restore_ifs
        echo "[ERR]INFO:There is timeout I/O." >>${RESULTFILE}
    fi

    return
}

CheckIOStatus

# ЭInfoEqulizer״̬01ô7.1.1.SPC1V100R006C30SPC900汾⣬Ҫֶرտ
checkInfoqualizerSwitch

echo "${CurInspectFun}_Pass ${G_ISPASS}" >>${RESULTFILE}
exit 0
