#!/bin/sh

color_subr="/usr/share/veil/color.subr"
system_subr="/usr/share/veil/system.subr"
deb_subr="/usr/share/veil/deb.subr"

set -e
. ${color_subr}
. ${system_subr}
. ${deb_subr}
set +e

init_color

ADDHELP="
${H3_COLOR}Description${N0_COLOR}:

 Controller Redis factory reset default script.

 The script can destroy all data in the redis db and rollback the redis settings 
   to their original state.

${H3_COLOR}Options${N0_COLOR}:

 ${N2_COLOR}-m${N0_COLOR} - mode: 'start' to execute factory reset default.
 ${N2_COLOR}-t${N0_COLOR} - target of components: 'data', 'settings', 'all':
                            'data'    - DROP REDIS data only;
                            'settings - DROP Redis settings only (for local Redis only!);
                            'all' (default) - 'data settings'

${H3_COLOR}Examples${N0_COLOR}:

 # reset_redis -m start
 # reset_redis -m start -t 'data'

"

usage()
{
	${ECHO} "${ADDHELP}"
	exit 0
}

reset_data()
{
	local _ret=

	${ECHO} "${N1_COLOR}reset: ${N2_COLOR}data ...${N0_COLOR}"
	${ECHO} "${N1_COLOR}reset_redis: reset_data"

	[ ! -d /var/lib/redis ] && return 0

	${FIND_CMD} /var/lib/redis/ -type f -exec ${RM_CMD} -f {} \;

	return 0
}

reset_settings()
{
	${ECHO} "${N1_COLOR}reset: ${N2_COLOR}settings ...${N0_COLOR}"

	for i in local_modules modules users local_user; do
		[ -r /var/lib/ecp-veil/data/${i}/redis.yaml ] && ${RM_CMD} -f /var/lib/ecp-veil/data/${i}/redis.yaml
	done

	return 0
}


## MAIN
mode=
target="data settings"

# -t just test for update available
while getopts "m:t:" opt; do
	case "${opt}" in
		m)
			mode="${OPTARG}"
			;;
		t)
			target="${OPTARG}"
			;;
		*)
			usage
			;;
	esac
done
shift $(($OPTIND - 1))

case "${mode}" in
	start)
		true
		;;
	*)
		usage
		;;
esac

[ -r /etc/veil/controller.conf ] && . /etc/veil/controller.conf

REDIS_SERVER_INSTALLED=0

# check if redis-server package exist
REDIS_SERVER_CMD=$( which redis-server 2>/dev/null )

if [ -n "${REDIS_SERVER_CMD}" ]; then
	REDIS_SERVER_INSTALLED=1
else
	REDIS_SERVER_INSTALLED=0
fi

# no config/data ? try localhost
[ -z "${REDIS_DB_HOST}" ] && REDIS_DB_HOST="127.0.0.1"
[ -z "${REDIS_DB_PASSWORD}" ] && REDIS_DB_PASSWORD="bazalt"

echo "REDIS_DB_HOST=${REDIS_DB_HOST}"

# check by 127.0.0.1, no redis-server package?
[ ${REDIS_SERVER_INSTALLED} -eq 1 ] && ${SYSTEMCTL_CMD} stop redis-server

for i in ${target}; do
	case "${i}" in
		data|settings)
			reset_${i}
			;;
		*)
			${ECHO} "${W1_COLOR}reset target unknown: ${N2_COLOR}${i}${N0_COLOR}"
			;;
	esac
done

# apply role at the end
# not for remote redis instance
[ ${REDIS_SERVER_INSTALLED} -eq 0 ] && exit 0

/usr/local/sbin/veil-role -a redis
ret=$?

restart_services redis controller-supervisor node_supervisor

exit ${ret}
