#!/bin/bash
set +x

source /opt/huawei/snas/script/inspect_mml/CommonFunc.sh
VALID_IP_FILE=/tmp/tmp_check_ip
DATA_REMOTE=/home/inconsfile
DATA_LOCAL=inconsfile
LOCAL_PATH=/var/log
MONS_CONFIG_PATH=/opt/huawei/snas/etc/mons.ini

if [ $# -ne 2 ] ;then
    echo "checkfile /share/filepath inodeid."
    exit 1
fi

function check_env
{
        cat /proc/monc_dsmap | grep Abnormal > /dev/null
        iRet=$?
        if [ $iRet -eq 0 ];then
            echo "DS status is abnormal,can't run check consistent."
            exit 2
        fi

        recover_task_num=`cat /proc/monc_recoverymap  | egrep "RTask|epoch" | wc -l`
        if [ $recover_task_num -ne 1 ];then
            echo "RecoverTask is running,can't run check consistent."
            exit 2
        fi

        recover_task_num=`cat /proc/monc_balancemap  | egrep "RTask|epoch" | wc -l`
        if [ $recover_task_num -ne 1 ];then
            echo "BalanceTask is running,can't run check consistent."
            exit 2
        fi
}

check_env

#for get nodepool back ip
BACK_IP=`/usr/bin/sqlite3 /opt/huawei/snas/etc/cm_conf.db "select NID,IP_ADDR from CM_NODE_IP_T where SUBNET_ID=1 order by NID" | sort -t'|' -k1,1 -u | awk -F'|' '{print $2}'`

file=$1
nodeid=$2

>${VALID_IP_FILE}
for Item in $BACK_IP
do
    /opt/huawei/deploy/script/localexec.py async $Item checkfileconsistent 43200 true "/opt/huawei/snas/script/inspect_mml/check_file_consistent "$file" "$nodeid" 2>&1"
    iRet=$?
    echo [$(date)]"send start check to $Item,ret($iRet)"
    if [ $iRet -eq 0 ]; then
        echo "$Item" >> ${VALID_IP_FILE}
    fi
done

#ʼռ豸ϵ־
ValidIP=`cat ${VALID_IP_FILE}`
while [[ ${ValidIP} != "" ]]
do
    >${VALID_IP_FILE}
    for Item in $ValidIP
    do
        sleep 5

        #Ϊ100%֮ļ,н
        proresult=`/opt/huawei/deploy/script/localexec.py progress $Item checkfileconsistent`
        iRet=$?
        process=`echo $proresult | awk '{print $1}'`
        errno=`echo $proresult | awk '{print $4}'`

        if [[ $iRet -eq 0 && "$process" != "100" && "$process" != "" ]];then
            echo "$Item" >> ${VALID_IP_FILE}
            continue;
        elif [ $iRet -ne 0 ] || [ $errno -ne 0 ] || [ "$process" == "" ];then
            echo [$(date)]"get data from $Item fail"
            continue;
        fi

        #ݵ
        /opt/huawei/deploy/script/localexec.py download $Item ${LOCAL_PATH}/${DATA_LOCAL}-${Item} ${DATA_REMOTE}
        iret=$?
        echo [$(date)]"$Item: download file ,ret($iret)."

        grep "check consfile" ${LOCAL_PATH}/${DATA_LOCAL}-${Item} > /dev/null
        if [ $? -eq 0 ];then
            echo "check finish, some file unequal, please look up ${Item} ${DATA_REMOTE}."
        fi

        rm -f ${LOCAL_PATH}/${DATA_LOCAL}-${Item}
    done
    ValidIP=`cat ${VALID_IP_FILE}`
done

rm -f ${VALID_IP_FILE}

echo [$(date)]"check finish"


