#!/bin/sh

#set -x

# $1 dir to be created
create_dir() {
	if ! [ -d $1 ]; then
		mkdir -p $1
		if [ $? != 0 ]; then
			/usr/bin/logger "FRU LOG: Unable to create /mnt/logs/fru/$i"
			# do not exit. continue with other dirs
		else
			/usr/bin/logger "FRU LOG: Directory $1 created."
		fi
	else
		/usr/bin/logger "FRU LOG: Directory $1 already exist"
	fi
}


# $1 dir in Carnegie
# Each platform directory can have its own parser for non-IPMI FRU format.
# If it does not have one, IPMI parser will be used for decoding.
# Currently, we don't have any non-IPMI parser for Carnegie.
# Any new one created can be added here.

carnegie_create_non_ipmi_parser () {
	dir_num=`echo $1 | cut -d/ -f 5`
	case "$dir_num" in
		0)
			# Carnegie currently does not have any non-IPMI parser.
			# This shell does not support -a for checking file
			if ! [ -L $1/parser ]; then
				# Add appropriate link for non IPMI parser

				#echo "DBG: make link for test_parser to $1/parser"
				#ln -s /usr/local/bin/test_parser $1/parser
				echo > /dev/null
			else
				#echo "DBG: $1/parser already exist"
				echo > /dev/null
			fi
			;;
		*)
			;;
	esac
}

# $1 dir in Absolut
# Each platform directory can have its own parser for non-IPMI FRU format.
# If it does not have one, IPMI parser will be used for decoding.
# Currently, we don't have any non-IPMI parser for Absolut.
# Any new one created can be added here.

absolut_create_non_ipmi_parser () {
	case "$1" in
		0)
			# Absolut currently does not have any non-IPMI parser.
			# This shell does not support -a for checking file
			if ! [ -L $1/parser ]; then
				# Add appropriate link for non IPMI parser

				#echo "DBG: make link for test_parser to $1/parser"
				#ln -s /usr/local/bin/test_parser $1/parser
				echo > /dev/null
			else
				#echo "DBG: $1/parser already exist"
				echo > /dev/null
			fi
			;;
		*)
			;;
	esac
}


case `cat /var/run/platform` in
	Carnegie)
		limit=9
		;;
	Absolut)
		limit=14
		;;
	RazorS|RazorM)
		limit=3
		;;
	RazorL)
	        limit=8
		;;
	*)
		# For developement use like reference board
		# or unsupported platforms
		# NetApp SP will always have at least 2 FRUs
		# 0: Controller, this is critical since the SP gets it personality and MAC address from it.
		# 1: Midplane FRU of some sort, either physical or virtual.
		limit=1
		;;
esac

frudirs=$(seq 0 $limit)
for i in $frudirs ; 
do
	create_dir /mnt/logs/fru/$i ;
	carnegie_create_non_ipmi_parser /mnt/logs/fru/$i ;
done

exit 0

