#!/bin/bash
set +x

source /opt/huawei/snas/script/inspect_mml/CommonFunc.sh
G_REMOTE_TMP_FILE="/tmp/tmpfilecheckNV"
LOG_FILE="/var/log/inspect.log"
. /opt/node_type_recognize.sh

function LOG 
{
    echo [`date`][$$]$@ >> $LOG_FILE
}

function checkNV()
{
    > "${G_REMOTE_TMP_FILE}"
    local NvMemSize=0
    local isRH=0
    IsStandardNode
    if [ $? -eq 0 ];then
        echo "UVPFlag=1" >> "${G_REMOTE_TMP_FILE}"
        return 0
    fi
    
    IsRHNode
    if [ $? -eq 0 ]; then
        #通用服务器
       IsRHV5Node
       if [ $? -eq 0 ];then
           isRH="V5RH"
       else
           isRH="V3RH"
       fi
    else
       isRH="1"
    fi
    
    echo "isRH=${isRH}" >>${G_REMOTE_TMP_FILE}
    
    nodetype=$(cat  /opt/huawei/deploy/etc/deploy.ini | grep devicetype |awk -F= '{print $2}')
    echo "devicetype=${nodetype}" >> "${G_REMOTE_TMP_FILE}"
    
    if [ "${nodetype}" -eq 4 ]; then
        return 0
    fi
    
    if [ "${isRH}" = "V3RH" ];then
        NvMemSize=$(dmidecode -t memory | grep -P "^\s+(Locator:|Size:)" |grep -B1 "Locator: DIMM000"|grep -w "Size"|awk '{print $2}'|tr -d ' ')
        #如果在0号槽位没有nvdimm。再去检查120号位置
        if [ "$NvMemSize" = "No" ];then
            NvMemSize=$(dmidecode -t memory | grep -P "^\s+(Locator:|Size:)" |grep -B1 "Locator: DIMM120"|grep -w "Size"|awk '{print $2}'|tr -d ' ')
        fi
        echo "nvmem=${NvMemSize}" >> "${G_REMOTE_TMP_FILE}"
    elif [ "${isRH}" = "V5RH" ];then
        #V5 的nvdimm 槽位都是DIMM000
        NvMemSize=$(dmidecode -t memory | grep -P "^\s+(Locator:|Size:)" |grep -B1 "Locator: DIMM000"|grep -w "Size"|awk '{print $2}'|tr -d ' ')
        echo "nvmem=${NvMemSize}" >> "${G_REMOTE_TMP_FILE}"
    else
	dmidecode -t memory | grep -P "^\s+(Locator:|Size:)" |awk '
	BEGIN{totalmem=0;nvmem=0}
	{
		if ($1=="Size:"){                  /*获取内存大小*/
			mem=0;
			if(match($2,"[0-9]+")){mem=$2}
		}
		if (mem!=0)
		{
			if ($1=="Locator:"){
				if ($3=="F0"){             /*F0槽位为NV内存大小*/
					nvmem=mem;
					mem=0;
				}
			}
		}
	}
	END{
		print "nvmem="nvmem        #NV内存大小
	}' >> "${G_REMOTE_TMP_FILE}"
    fi   
}

checkNV
