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

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

function CheckRMGB
{
    local result="no change"
    local checkfile="/opt/huawei/snas/static/job_templet/rmbg_data.ini"
    local productVersion=$(grep ProductVersion /opt/huawei/deploy/package/version |awk -F= '{print $2}')

    if [ ! -e ${checkfile} ];then
        echo "task_parallelism:--||result:no file /opt/product/snas/static/job_templet/rmbg_data.ini" >>${RESULTFILE} 2>&1
        echo "${CurInspectFun}_Pass ${isPass}" >>${RESULTFILE} 2>&1
        return
    fi
    local taskParallelism=$(cat ${checkfile} | grep -w task_parallelism | awk -F"=" '{print $2}' |tr -d " "| dos2unix)
    if [ -z "${taskParallelism}" ];then
        isPass=1
        result="get task_parallelism fail."
        echo "task_parallelism:-- ||result:${result}" >>${RESULTFILE} 2>&1
    else
        if [ "${taskParallelism}" = "150" ];then
            sed -i "s/task_parallelism=.*$/task_parallelism=5/g" ${checkfile}
            /opt/huawei/deploy/bin/daemon -s /opt/huawei/snas/bin/snas_bjm_worker;
            /opt/huawei/deploy/bin/daemon -s /opt/huawei/snas/bin/snas_bjm_manager;
            /opt/huawei/deploy/bin/daemon -s /opt/huawei/snas/bin/snas_bjm_server;
            sleep 5
            /opt/huawei/deploy/bin/daemon /opt/huawei/snas/bin/snas_bjm_worker;
            /opt/huawei/deploy/bin/daemon /opt/huawei/snas/bin/snas_bjm_manager;
            /opt/huawei/deploy/bin/daemon /opt/huawei/snas/bin/snas_bjm_server;
            taskParallelism="5"
            sleep 5
            bjm_worker=$(ps -efww | grep -w /opt/huawei/snas/bin/snas_bjm_worker | grep -v grep) 
            bjm_manager=$(ps -efww | grep -w /opt/huawei/snas/bin/snas_bjm_manager | grep -v grep)
            bjm_server=$(ps -efww | grep -w /opt/huawei/snas/bin/snas_bjm_server | grep -v grep)
            local RepeatTimes=(1 2 3)
            for time in ${RepeatTimes[*]}; do
                if [ "X${bjm_worker}" = "X" ] || [ "X${bjm_manager}" = "X" ] || [ "X${bjm_server}" = "X" ];then
                    sleep 5
                    bjm_worker=$(ps -efww | grep -w /opt/huawei/snas/bin/snas_bjm_worker | grep -v grep) 
                    bjm_manager=$(ps -efww | grep -w /opt/huawei/snas/bin/snas_bjm_manager | grep -v grep)
                    bjm_server=$(ps -efww | grep -w /opt/huawei/snas/bin/snas_bjm_server | grep -v grep)
                    continue
                fi
                break
            done
            if [ "X${bjm_worker}" = "X" ] || [ "X${bjm_manager}" = "X" ] || [ "X${bjm_server}" = "X" ];then
                isPass=1
                result="changed but restart snas_bjm_worker(snas_bjm_manager or snas_bjm_server) failed."
            else
                result="changed"
            fi
        fi
        echo "task_parallelism:${taskParallelism}||result:${result}" >>${RESULTFILE} 2>&1
    fi

    return
}

check_task_timeout_item()
{
    local product_version=$( grep ExternalVersion /opt/huawei/deploy/package/version |awk -F= '{print $2}' )

    if [ "X${product_version}" != "X7.1.1.SPC600" ]
    then
        LOG "[$FUNCNAME][${LINENO}]product version(${product_version}) is not 9000,do not invoke!"
        return
    fi

    if [ ! -s "/opt/huawei/snas/static/bjm.ini" ]
    then
        LOG "[$FUNCNAME][${LINENO}]/opt/huawei/snas/static/bjm.ini is nonexit or empty!"
        echo "[ERR]INFO:/opt/huawei/snas/static/bjm.ini is nonexit or empty." >>${RESULTFILE} 2>&1
        isPass=1
        return
    fi

    grep "^ *check_task_timeout=" /opt/huawei/snas/static/bjm.ini >/dev/null
    if [ $? -eq 0 ]
    then
        LOG "[$FUNCNAME][${LINENO}]$(grep "^ *check_task_timeout=" /opt/huawei/snas/static/bjm.ini)."
        return
    fi

    local sphver=$( ls /var/huawei/patch/cur/sph | grep "OceanStor*" | awk -F'_' '{print $NF}' | awk -F 'SPH' '{print $2}' | grep -o "[0-9]*" )
    if [ "X${sphver}" = "X609" ] || [ "X${sphver}" = "X610" ]
    then
        LOG "[$FUNCNAME][${LINENO}][ERR]INFO:hotpatch version is 7.1.1.SPH${sphver},but check_task_timeout item is not in /opt/huawei/snas/static/bjm.ini."
        echo "[ERR]INFO:hotpatch version is 7.1.1.SPH${sphver},but check_task_timeout item is not in /opt/huawei/snas/static/bjm.ini." >>${RESULTFILE} 2>&1
        isPass=1
    else
        LOG "[$FUNCNAME][${LINENO}]sph version(${sphver}) is not 609 or 610, do not check bjm.ini."
    fi

    return
}

CheckRMGB

# SPH609SPH610/opt/huawei/snas/static/bjm.iniвcheck_task_timeout Ѳ첻ͨ
check_task_timeout_item

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