#!/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" 

 
