#!/usr/bin/openrc-run

. /opt/etc/functions.openrc

description="Loading and saving iSCSI tgtd target configuration"

extra_started_commands="reread reload"

TGTD_CONFIG=${TGTD_CONFIG="/opt/etc/tgt/targets.conf"}

command="/usr/sbin/tgtd"
tgtadm="/usr/sbin/tgtadm"
tgt_admin="/usr/sbin/tgt-admin"

PIDFILE=/var/run/tgtd.pid

depend()
{
	need localmount
	use srp
	after srp
	provide ${SVCNAME}
}

start()
{
	local _rv=1
	ebegin "Starting \"${SVCNAME}\""
	while true; do
		if ! [ -f ${TGTD_CONFIG} ]; then
			update_me
			eerror "${ME}: missing config file \"${TGTD_CONFIG}\""
			break
		fi
		start-stop-daemon --background --pidfile ${PIDFILE} --make-pidfile \
			--start --exec ${command} -- -f || break
		$tgtadm --op update --mode sys --name State -v offline || break
		$tgtadm --op update --mode sys --name State -v ready || break
		$tgt_admin -e -c ${TGTD_CONFIG} || break
		_rv=0
		break
	done
	eend ${_rv}
	return ${_rv}
}

stop()
{
	ebegin "Stopping service \"${SVCNAME}\""
	$tgtadm --op update --mode sys --name State -v offline
	$tgt_admin --offline ALL
	$tgt_admin --update ALL -c /dev/null -f
	$tgtadm  --op delete --mode system
	start-stop-daemon --stop --pidfile ${PIDFILE} --exec ${command}
	eend 0
	return 0
}

reread() {
	ebegin "Reloading configuration \"${TGTD_CONFIG}\"..."
	$tgt_admin --update ALL -f -c ${TGTD_CONFIG}
	eend $?
}

reload() {
	reread
}
