#!/bin/bash

#
#巡检用户数据库备份
#只在POE节点上检查
#

#CM_INI_PATH
readonly CM_INI_PATH="/opt/huawei/snas/etc/cm.ini"

#判断该节点是否需要检查,返回：1，需要检查；0，不需要检查
#1.检查本节点是否是S3/Swift节点
#2.检查本节点是否是S3/Swift管理节点
#3.检查本节点是否是S3/Swift管理POE主节点
function isNotNeedCheck()
{
    local node_service_type=$(egrep '[[]|^'node_service_type'=' /opt/huawei/snas/etc/snas.ini | tr -d '\n' | grep -Po '(?<=[[]'NODE'[]]'node_service_type'=)[0-9]+')
    if [ "X$node_service_type" == "X2" -o "X$node_service_type" == "X3" ];then
        source /opt/obs/scripts/common/s3_config_utility.sh >> /dev/null 2>&1
	is_s3_management_node > /dev/null
	if [ $? -eq 1 ];then
            localNID=$(grep -w NID ${CM_INI_PATH}|awk -F"=" '{print $2}')
            
            hainfo=$(grep -w "node id(${localNID})" /proc/monc_hamap)
            if [ "$hainfo" = "" ];then
                return 1
            else
                role=${hainfo##*role(}
                role=${role%%)status*}
                if [ "$role" = "1" ];then
                    return 1;
                elif [ "$role" = "2" ];then
                    return 0;
                else
                    #非管理节点
                    return 0
                fi
            fi    	
        fi
    fi
}

#检查数据库备份是否正常
function checkBackup()
{
    local isPass=0
    local listError=0
    local checkDay=
    local lastDay=
    local checkHour=$(date +%H)
    local backups=$(sh /opt/obs/scripts/upf/upf_recover.sh listBackups 2>>/dev/null|grep "Database Backups"|awk -F "_" '{print $3}'|sort)
    if [ $? -ne 0 ];then
	echo "isPass:1"
        echo "listError:1"
        return 0;
    fi
    
    local backupArray=($backups)
    local backupNum="${#backupArray[@]}"

    if [ $backupNum -eq 0 ];then
        echo "isPass:0"
        return 0;
    fi
    #超过当天4点，需要从今天开始检查
    checkDay=$(date -d "1 day ago" +%Y%m%d)
    if [ $checkHour -gt 4 ];then
        checkDay=$(date +%Y%m%d)
    fi

    #防止系统更改过时间
    if [ $checkDay -lt ${backupArray[0]} ];then
        checkDay=${backupArray[0]}
    fi
    lastDay=$(date -d "$checkDay 6 day ago" +%Y%m%d)
    arrayLastDay=${backupArray[$backupNum-1]}

    while [ $checkDay -ge $lastDay -a $checkDay -gt $arrayLastDay ]
    do
        local num=$(echo ${backupArray[@]}|grep -Ew "$checkDay" -c)
        if [ "X$num" != "X1" ];then
            echo "NotExist:$checkDay"
            isPass=1
        fi
        checkDay=$(date -d "$checkDay 1 day ago" +%Y%m%d)
    done 

    echo "isPass:$isPass" 
}

#如果不需要检查，则直接退出脚本执行,输出isCheck:0
if isNotNeedCheck;then
    echo "isCheck:0"
    exit 0;
fi

echo "isCheck:1"

checkBackup
