#!/bin/bash
set +x

G_VIID_BASE_SHELL="/opt/huawei/viid/script/common/viid_base.sh"
#让基代码生效
SNAS_INI="/opt/huawei/snas/etc/snas.ini"
LOG_DIR="/var/log/viid/script"
LOG_FILE="/var/log/viid/script/inspect.log"

VIID_MAINTAIN_COMMOND_SCRIPT_HEAD="python /opt/huawei/viid/script/pcurl.py"

G_INSPECT_MMLPATH="/opt/huawei/snas/script/inspect_mml"
source $G_INSPECT_MMLPATH/CheckItems
TEMP_FILE="/tmp/inspect.tmp"
CurInspectNum="306"
CurInspectFun="$(GetInspectType $CurInspectNum)"
RESULTFILE="/tmp/tmpResult${CurInspectFun}"
>${RESULTFILE}

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

#===================================================
# 函数名称：isInstallViid
# 函数功能：是否安装语义
# 描述：
#返回值： 0 表示安装语义，1表示非语义场景
#===================================================
function isInstallViid()
{
    value=$(cat ${SNAS_INI} |tr \\n ] |grep -Po '(?<=[[]'SERVICE'[]]).*' |tr ] \\n |grep -Po '(?<=^'viid'=).*' |awk 'NR==1{print}')
    if [ ${value}X == "1X" ];then
        return 0
    else
        return 1
    fi
}

function checkViidServerStatus()
{
    LOG "[$LINENO]INFO: start check server status."
	if [ ! -d $LOG_DIR ]; then
        mkdir -p $LOG_DIR
    fi
    local isPass=0
	local serverStatus=""
	local managerStatus=""
	local isViidMaster=""
	local result=""
    source $G_INSPECT_MMLPATH/CommonFunc.sh
    LOCAL_BACK_IP=$(GetLocalIp)
	LOCAL_HOST_NAME=$(cat /etc/hostname)

    #1、检查是否安装语义
    isInstallViid
    res=$?
    if [ $res -ne 0 ];then
        LOG  "[$LINENO]INFO: Uninstall viid service."
    	echo "nodeName:$LOCAL_HOST_NAME||backIP:$LOCAL_BACK_IP||Status: Uninstall|| serverStatus:--||managerStatus:--||isMaster:--" >> ${RESULTFILE} 2>&1
        echo "${CurInspectFun}_Pass ${isPass}" >>${RESULTFILE} 2>&1
    else
        local iResult=0
        #server状态检查
        $($VIID_MAINTAIN_COMMOND_SCRIPT_HEAD "GET" 127.0.0.1 7003 /serverStatusInspect False False >$TEMP_FILE 2>/dev/null)
        local info=$(cat $TEMP_FILE | grep "serverStatus:")
        if [ "${info}X" == "X" ];then
            LOG "[$LINENO]INFO: server status abnormal."
            serverStatus="serverStatus:abnormal"
            iResult=1
        else
            serverStatus=$(grep -Ev "^$|Result:" $TEMP_FILE)
        fi

        #manager状态检查
        $($VIID_MAINTAIN_COMMOND_SCRIPT_HEAD "GET" 127.0.0.1 7002 /managerStatusInspect False False >$TEMP_FILE 2>/dev/null)
        local info=$(cat $TEMP_FILE | grep "managerStatus:")
        if [ "${info}X" == "X" ];then
            LOG  "[$LINENO]INFO: manager status abnormal."
            managerStatus="managerStatus:abnormal"
            iResult=1
        else
            managerStatus=$(grep  -Ev "^$|Result:" $TEMP_FILE)
        fi
        #是否为主检查
        sh $G_VIID_BASE_SHELL isMaster
        if [ $? -eq 0 ]; then
            isViidMaster="isMaster:true"
        else
            isViidMaster="isMaster:false"
        fi
        rm $TEMP_FILE

        #健康检查结果
        if [ $iResult -eq 0 ]; then
            isPass=0
            echo "nodeName:$LOCAL_HOST_NAME||backIP:$LOCAL_BACK_IP||Status:install||$serverStatus||$managerStatus||$isViidMaster" >> ${RESULTFILE} 2>&1
        else
            isPass=1
            echo "[ERR]Node:$LOCAL_HOST_NAME||INFO:Null output of command(${CurInspectFun})" >> ${RESULTFILE} 2>&1
        fi
        echo "${CurInspectFun}_Pass ${isPass}" >>${RESULTFILE} 2>&1

        LOG "[$LINENO]INFO: check server status end ."
    fi

    return 0
}

checkViidServerStatus

exit 0