#!/bin/bash
set +x
#
# 巡检数据库存放数据的/var分区是否够用
#
G_MML_FILE_PATH="/opt/huawei/snas/script/inspect_mml"
source $G_MML_FILE_PATH/CheckItems
CurInspectNum="143"
CurInspectFun="$(GetInspectType $CurInspectNum)"
RESULTFILE="/tmp/tmpResult${CurInspectFun}"
LOG_FILE="/var/log/inspect.log"
isPass=0
>${RESULTFILE}


#节点类型保存的配置文件
confFile="/opt/huawei/deploy/etc/deploy.ini"

#两个数据库路径
upfPath="/var/uds/user/data_upf"
mdcPath="/var/uds/user/data_mdc"

#P节点和C节点的数据库最大使用空间,单位GB
pNodeSpace=11
cNodeSpace=3

#判断该节点是否需要检查,返回：1，需要检查；0，不需要检查
#1.判断是否是S3/swift节点
#2.判断是否是S3管理节点
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
	    is_s3_management_node > /dev/null
        if [ $? -eq 0 ];then
            return 0;
        else
            return 1;
        fi
    else
	    return 0;
    fi
}

#P36节点，数据库分区最大可以使用10.2GB，扩展到11GB
function checkP36Node()
{
    local aSpace=$(df -h -B G /var|grep var|awk -F " " '{print $4}'|sed 's/G$//g')

    if [ ! -d "$upfPath" -a ! -d "$mdcPath" ];then
        echo "Disk Partition Available Space:${aSpace} GB||DB Need Space:0 GB||DB Used Space:0 GB">>${RESULTFILE}
        return 0;
    fi

    local upfSpace=0
    if [ -d "$upfPath" ];then
        upfSpace=$(du -sh -B G "$upfPath"|awk -F " " '{print $1}'|sed 's/G$//g')
    fi
    local mdcSpace=0
    if [ -d "$mdcPath" ];then
        mdcSpace=$(du -sh -B G "$mdcPath"|awk -F " " '{print $1}'|sed 's/G$//g')
    fi

    local uSpace=`expr $upfSpace + $mdcSpace`
    local nSpace=`expr $pNodeSpace - $uSpace`

    if [ $aSpace -lt $nSpace ];then
        isPass=1
        echo "Disk Partition Available Space:${aSpace} GB||DB Need Space:${nSpace} GB||DB Used Space:${uSpace} GB">>${RESULTFILE}
        echo "[ERR]INFO:Disk Partition Available Space:${aSpace} GB is less than DB Need Space:${nSpace} GB">>${RESULTFILE}
    else
        echo "Disk Partition Available Space:${aSpace} GB||DB Need Space:${nSpace} GB||DB Used Space:${uSpace} GB">>${RESULTFILE}
    fi
}

#C72节点，数据库分区最大可以使用2.2GB，扩展到3GB
function checkC72Node()
{
    local aSpace=$(df -h -B G /var|grep var|awk -F " " '{print $4}'|sed 's/G$//g')

    if [ ! -d "$upfPath" -a ! -d "$mdcPath" ];then
        echo "Disk Partition Available Space:${aSpace} GB||DB Need Space:0 GB||DB Used Space:0 GB">>${RESULTFILE}
        return 0;
    fi

    local upfSpace=0
    if [ -d "$upfPath" ];then
        upfSpace=$(du -sh -B G "$upfPath"|awk -F " " '{print $1}'|sed 's/G$//g')
    fi
    local mdcSpace=0
    if [ -d "$mdcPath" ];then
        mdcSpace=$(du -sh -B G "$mdcPath"|awk -F " " '{print $1}'|sed 's/G$//g')
    fi

    local uSpace=`expr $upfSpace + $mdcSpace`
    local nSpace=`expr $cNodeSpace - $uSpace`

    if [ $aSpace -lt $nSpace ];then
        isPass=1
        echo "[ERR]INFO:Disk Partition Available Space:${aSpace} GB is less than DB Need Space:${nSpace} GB">>${RESULTFILE}
    else
        echo "Disk Partition Available Space:${aSpace} GB||DB Need Space:${nSpace} GB||DB Used Space:${uSpace} GB">>${RESULTFILE}
    fi
}

#如果不需要检查，直接返回,并输出dbNode:0,代表该节点不使用数据库
isNotNeedCheck
iRet=$?
if [ ${iRet} -eq 0 ];then
    echo "Disk Partition Available Space:not involve||DB Need Space:--||DB Used Space:--" >>${RESULTFILE}
    echo "${CurInspectFun}_Pass $isPass" >>${RESULTFILE}
    exit 0
fi

#如果能够查询到节点类型，安装节点类型巡检
#如果查询不到节点类型，按照P36节点类型来巡检
if [ -f "${confFile}" ];then
    nodeType=$(cat "$confFile"|grep devicetype|awk -F"=" '{print $2}')
    if [ "X$nodeType" == "X4" ];then
        checkC72Node
    else
        checkP36Node
    fi
else
    checkP36Node
fi

echo "${CurInspectFun}_Pass $isPass" >>${RESULTFILE}
