#!/bin/sh

PATH=/sbin:/usr/sbin:/bin:/usr/bin
export PATH

ISD='/onappstore/bin/isd'
CFG='/onappstore/etc/isd.conf'
ONAPPSTORECONF='/onappstore/onappstore.conf'

case "$1" in
guestconf)
	for _keyval in `cat /proc/cmdline`
	do
		_equal=`echo ${_keyval} | grep '='`
		if [ -z "${_equal}" ]
		then
			continue
		fi
		_key=`echo ${_keyval} | cut -d '=' -f 1`
		_val=`echo ${_keyval} | cut -d '=' -f 2-`
		if [ "${_key}" != "channel" -a "${_key}" != "unicastmode" ]
		then
			continue
		fi
		export `echo ${_keyval}`
	done
	TMP=/tmp/isd.conf
	echo "#Automatically generated by $0 `date`" > ${TMP}
	echo "syslog_ident = isd" >> ${TMP}
	echo "syslog_facility = daemon" >> ${TMP}
	echo "syslog_priority = notice" >> ${TMP}
	echo "pid_file = /var/run/isd.pid" >> ${TMP}
	echo "work_directory = /onappstore/DB" >> ${TMP}
	echo "local_nodes = /onappstore/local_nodes" >> ${TMP}
	echo "unicast_mode = ${unicastmode}" >> ${TMP}
	echo "unicast_hosts = /onappstore/unicast_hosts" >> ${TMP}
	if [ -e /sys/class/net/bond0 ]
	then
		echo "bind_interface = bond0" >> ${TMP}
	else
		echo "bind_interface = eth0" >> ${TMP}
	fi
	echo "bind_port = 8000" >> ${TMP}
	echo "ctrl_address = 127.0.0.1" >> ${TMP}
	echo "ctrl_port = 31337" >> ${TMP}
	echo "multicast_address = ${channel}" >> ${TMP}
	echo "node_lock_timeout_ms = 750" >> ${TMP}
	echo "vdisk_lock_timeout_ms = 750" >> ${TMP}
	echo "fence_check = /usr/pythoncontroller/fencecheck" >> ${TMP}
	echo "ping_interval = 90" >> ${TMP}
	echo "heartbeat_interval = 30" >> ${TMP}
	echo "stats_interval = 60" >> ${TMP}
	mv -f ${TMP} ${CFG}
	;;
hostconf)
	if [ ! -e ${ONAPPSTORECONF} ]
	then
		echo "Missing ${ONAPPSTORECONF}"
		exit 1
	fi
	for _keyval in `cat ${ONAPPSTORECONF}`
	do
		_equal=`echo ${_keyval} | grep '='`
		if [ -z "${_equal}" ]
		then
			continue
		fi
		_key=`echo ${_keyval} | cut -d '=' -f 1`
		_val=`echo ${_keyval} | cut -d '=' -f 2-`
		if [ "${_key}" != "channel" -a "${_key}" != "unicastmode" ]
		then
			continue
		fi
		export `echo ${_keyval}`
	done
	TMP=/tmp/isd.conf
	echo "#Automatically generated by $0 `date`" > ${TMP}
	echo "syslog_ident = isd" >> ${TMP}
	echo "syslog_facility = daemon" >> ${TMP}
	echo "syslog_priority = notice" >> ${TMP}
	echo "pid_file = /var/run/isd.pid" >> ${TMP}
	echo "work_directory = /onappstore/DB" >> ${TMP}
	echo "local_nodes = /onappstore/local_nodes" >> ${TMP}
	echo "unicast_mode = ${unicastmode}" >> ${TMP}
	echo "unicast_hosts = /onappstore/unicast_hosts" >> ${TMP}
	echo "bind_interface = onappstoresan" >> ${TMP}
	echo "bind_port = 8000" >> ${TMP}
	echo "ctrl_address = 127.0.0.1" >> ${TMP}
	echo "ctrl_port = 31337" >> ${TMP}
	echo "multicast_address = ${channel}" >> ${TMP}
	echo "node_lock_timeout_ms = 750" >> ${TMP}
	echo "vdisk_lock_timeout_ms = 750" >> ${TMP}
	echo "fence_check = /usr/pythoncontroller/fencecheck" >> ${TMP}
	echo "ping_interval = 90" >> ${TMP}
	echo "heartbeat_interval = 30" >> ${TMP}
	echo "stats_interval = 60" >> ${TMP}
	mv -f ${TMP} ${CFG}
	;;
start)
	_pid=`pgrep -o -f ${ISD}`
	if [ -n "${_pid}" ]
	then
		echo "Already running..."
		exit 1
	fi
	if [ ! -e ${CFG} ]
	then
		echo "Please run $0 guestconf|hostconf first"
		exit 1
	fi
	echo "Starting ISD..."
	${ISD} -C ${CFG}
	;;
stop)
	_pid=`pgrep -o -f ${ISD}`
	if [ -z "${_pid}" ]
	then
		echo "Not running..."
		exit 1
	fi
	echo "Stopping ISD (PID ${_pid})..."
	pkill -o -f ${ISD}
	;;
*)
	echo "Usage: $0 start|stop"
	exit 1
	;;
esac
exit 0
