#!/bin/bash
set +x

cm_db_file="/opt/huawei/snas/etc/cm_conf.db"
cm_conf_file="/opt/huawei/snas/etc/cm.ini"
LOG_FILE="/var/log/inspect.log"

function LOG
{
    time=$(date)
    echo "[${time}][$$]$*" >> $LOG_FILE
}

# If RoCE :
# return 0 : It is RoCE port
# return 1 : It is not RoCE port
function IfRoCE()
{
    eth_back=$1
    grep "${eth_back}" /opt/huawei/deploy/script/deploy_set_dcb.sh >/dev/null 2>&1
    if [ $? -eq 0 ];then
        LOG "[$FUNCNAME][${LINENO}]$1, ret=0."
        return 0
    fi

    LOG "[$FUNCNAME][${LINENO}]$1, ret=1."
    return 1
}

# return返回后端网卡为RoCE卡的个数，并打印RoCE卡的名称，每个RoCE卡的名称前带一个空格
function GetRoCECardNum()
{
    my_nid=$(grep "^NID=" "${cm_conf_file}"| awk -F= '{print $2}')
    back_card_name=$(/usr/bin/sqlite3 "${cm_db_file}" "select CARD_NAME from CM_NODE_NETCARD_T where SUBNET_ID=1 and NID=${my_nid}")
    LOG "[$FUNCNAME][${LINENO}]my_nid=${my_nid}, back_card_name=${back_card_name}."
    RoCENum=0
    ROCE_LIST=""

    for eth_back in $(sort -V <<< "${back_card_name}" || echo "${back_card_name}");do
        IfRoCE "$eth_back"
        if [ $? -eq 0 ];then
            let "RoCENum=${RoCENum}+1"
            ROCE_LIST="${ROCE_LIST} ${eth_back}"
        fi
    done

    echo "${ROCE_LIST}"
    LOG "[$FUNCNAME][${LINENO}]RoCENum=${RoCENum}, ROCE_LIST=${ROCE_LIST}."
    return ${RoCENum}
}


# 打印显示信息和巡检项最后的返回值，返回值0、1、2、3、4分别表示通过、不通过、未完成检查、不涉及和建议优化
function PrintRoCECheckResult()
{
    local chkFunc=$1
    local isPass=$2
    local recFile=$3
    echo "${chkFunc}_Pass ${isPass}" >> "${recFile}" 2>/dev/null
}

function PrintRoCECheckTip()
{
    local chkFunc=$1
    local isPass=$2
    local recFile=$3
    local tip=$4
    if [ ${isPass} -eq 1 -o ${isPass} -eq 2 -o ${isPass} -eq 4 ]; then
        echo "[ERR]INFO:${tip}" >> "${recFile}" 2>/dev/null
    else
        echo "INFO:${tip}" >> "${recFile}" 2>/dev/null
    fi
}



