#!/bin/sh

### BEGIN INIT INFO
# Provides:		lizardfs-metalogger
# Required-Start:	$network $remote_fs
# Required-Stop:	$remote_fs
# Default-Start:	2 3 4 5
# Default-Stop:		0 1 6
# Short-Description:	Start lizardfs-metalogger at boot time
# Description:		lizardfs-metaloggers provide metadata replication for LizardFS.
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/mfsmetalogger
NAME=mfsmetalogger
DESC=lizardfs-metalogger
DEFAULT_WORKING_USER=mfs
DEFAULT_WORKING_GROUP=mfs
DEFAULT_DATA_PATH=/var/lib/mfs
DEFAULT_CFG=/etc/mfs/mfsmetalogger.cfg

test -e $DAEMON || exit 0

# Include lizardfs-metalogger defaults if available
. /lib/lsb/init-functions
LIZARDFSMETALOGGER_ENABLE=false
LIZARDFSMETALOGGER_CONFIG_FILE=
LIZARDFSMETALOGGER_DEFAULTS_FILE=/etc/default/lizardfs-metalogger
if [ -s "$LIZARDFSMETALOGGER_DEFAULTS_FILE" ]; then
    . "$LIZARDFSMETALOGGER_DEFAULTS_FILE"
    case "x$LIZARDFSMETALOGGER_ENABLE" in
        xtrue) ;;
        xfalse)
	    log_warning_msg "lizardfs-metalogger not enabled in \"$LIZARDFSMETALOGGER_DEFAULTS_FILE\", exiting..."
	    exit 0
	    ;;
        *)
            log_failure_msg "value of LIZARDFSMETALOGGER_ENABLE must be either 'true' or 'false';"
            log_failure_msg "not starting lizardfs-metalogger."
            exit 1
            ;;
    esac
fi

set -e

if [ -n "$LIZARDFSMETALOGGER_CONFIG_FILE" ]; then
	CFGFILE="$LIZARDFSMETALOGGER_CONFIG_FILE"
else
	CFGFILE="$DEFAULT_CFG"
fi

get_config_value_from_CFGFILE()
{
	# parsing the value of config options from CFGFILE
	echo $(sed -e 's/[[:blank:]]*#.*$//' -n -e 's/^[[:blank:]]*'$1'[[:blank:]]*=[[:blank:]]*\(.*\)$/\1/p' $CFGFILE)
}

if [ -s "$CFGFILE" ]; then
	DATA_PATH=$(get_config_value_from_CFGFILE "DATA_PATH")
	WORKING_USER=$(get_config_value_from_CFGFILE "WORKING_USER")
	WORKING_GROUP=$(get_config_value_from_CFGFILE "WORKING_GROUP")
fi
: ${DATA_PATH:=$DEFAULT_DATA_PATH}
: ${WORKING_USER:=$DEFAULT_WORKING_USER}
: ${WORKING_GROUP:=$DEFAULT_WORKING_GROUP}

check_dirs()
{
	# check that the metadata dir exists
	if [ ! -d "$DATA_PATH" ]; then
		mkdir -p "$DATA_PATH"
	fi
	chmod 0755 "$DATA_PATH"
	chown -R $WORKING_USER:$WORKING_GROUP "$DATA_PATH"
}

case "$1" in
	start)
		check_dirs
		echo "Starting $DESC:"
		$DAEMON ${CFGFILE:+-c $CFGFILE} $DAEMON_OPTS start
		;;

	stop)
		echo "Stopping $DESC:"
		$DAEMON ${CFGFILE:+-c $CFGFILE} stop
		echo "$NAME."
		;;

	reload|force-reload)
		check_dirs
		echo "Reloading $DESC:"
		$DAEMON ${CFGFILE:+-c $CFGFILE} reload
		;;

	restart)
		check_dirs
		echo "Restarting $DESC:"
		$DAEMON ${CFGFILE:+-c $CFGFILE} $DAEMON_OPTS restart
		;;

	*)
		N=/etc/init.d/$NAME
		echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
		exit 1
		;;
esac

exit 0
