#!/bin/bash
G_REMOTE_TMP_FILE="/tmp/tmpfilecheckPhyMemory"
LOG_FILE="/var/log/inspect.log"

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

function IsRHNode() 
{
    local name=''
    name=$(dmidecode -t 1 | grep "Product Name:" | awk '{print $3}')
    if [ "$name" = "RH2288" -o "$name" = "5288" -o "$name" = "RH2288H" ]; then
        #通用服务器
       echo "isRH=0" >>${G_REMOTE_TMP_FILE}
    else
       echo "isRH=1" >>${G_REMOTE_TMP_FILE}
    fi
}

function IsC72Node()
{
    dmidecode -t 4 | grep -q "Family: Atom"
    return $?
}

function checkPhyMemory()
{
    > "${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}"
	
    #判断是不是C72
    IsC72Node
    echo "isC72 $?" >> "${G_REMOTE_TMP_FILE}"
	
    dmidecode -t memory | grep -P "^\s+(Locator:|Size:|Speed:)" >> "${G_REMOTE_TMP_FILE}"
	cat "${G_REMOTE_TMP_FILE}" |awk '
	function addVal2Array(val, arr)
	{
		for(i in arr)
		{
			if (arr[i] == val)
				return
		}
		arr[length(arr)] = val
	}
	BEGIN{Memspeed="";totalmem=0;nvmem=0;phymem[0]=-1;speedarr[0]=-1;delete phymem; delete speedarr}
	{
        if ($1=="isC72"){
            isC72=$2
        }
		if ($1=="Size:"){                  /*获取内存大小*/
			mem=0;
			if(match($2,"[0-9]+")){mem=$2}
		}
		if (mem!=0)
		{
			if ($1=="Locator:"){
				if (($3=="F0")||(($2=="DIMM000")&&(isC72!=0))){             /*T3000,F0槽位为NV内存大小.RH通用服务器，DIMM000槽位是NV内存,排除C72的DIMM000*/
					nvmem=mem;
					mem=0;
				}else{
					totalmem+=mem;
					addVal2Array(mem, phymem)
				}
			}
			else if ($1=="Speed:"){       /*频率放入speed变量*/
				s=int($2)
				addVal2Array(s, speedarr)
				if (!match(Memspeed, $2)){
					Memspeed=Memspeed""$2" ";
				}
			}
		}
	}
	END{
		print "totalmem="totalmem  #总内存大小
		print "Memspeed="Memspeed
		print "memsizenum="length(phymem)
		print "speednum="length(speedarr)
	}'  >> "${G_REMOTE_TMP_FILE}"
    IsRHNode
}

checkPhyMemory
