Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > 0b2f5ebbeffcb8a87bda2fa46fe6ed5c > files > 59

Spawning-0.9.5-1.fc14.noarch.rpm

#!/sbin/runscript
# Copyright 2009 Ludvig Ericson
# Distributed under the terms of the 3-clause BSD license

[[ -z "${SPAWN_BIN}" ]] && SPAWN_BIN="$(which spawning)"
PIDFILE="/var/run/${SVCNAME}.pid"

opts="${opts} reload"

depend() {
	need net
}

check_params() {
	if [[ "${SVCNAME}" == "spawning" && -z "${I_KNOW}" ]]; then
		ewarn "It is highly recommended to use a symbolic link for this"
		ewarn "script and start via that instead. This allows you to run"
		ewarn "multiple spawn services simultaneously. To do this, simply:"
		ewarn
		ewarn "  ln -s /etc/init.d/spawning /etc/init.d/spawning.mysvc"
		ewarn "  cp /etc/conf.d/spawning /etc/conf.d/spawning.mysvc"
		ewarn
		ewarn "If you don't want to be bothered by this message, set I_KNOW=yes"
		ewarn "in your configuration file."
		ewarn
	fi

	if [[ -z "${SPAWN_BIN}" ]]; then
		eerror "Couldn't find spawning binary and no explicit"
		eerror "path set in configuration file."
		return 1
	fi

	for CONF_VAR in WSGI_APP HOST PORT ERROR_LOG; do
		if [[ -z "$(eval echo \$${CONF_VAR})" ]]; then
			eerror "Required configuration variable ${CONF_VAR} not"
			eerror "set in configuration file."
			return 1
		fi
	done

	if [[ ! -z "${WORKERS}" && -z "${NUM_WORKERS}" ]]; then
		eerror "WORKERS has changed name to NUM_WORKERS, please update"
		eerror "your configuration file(s) accordingly."
		return 1
	fi
}

start() {
	ebegin "Starting ${SVCNAME} on ${HOST}:${PORT}"
	local OPTS

	check_params || return 1

	OPTS="${OPTS} --host ${HOST} --port ${PORT}"
	[[ ! -z "${NUM_PROCS}" ]] && OPTS="${OPTS} --processes ${NUM_PROCS}"
	if [[ ! -z "${NUM_THREADS}" ]]; then
		OPTS="${OPTS} --threads ${NUM_THREADS}"
	elif [[ ! -z "${NUM_WORKERS}" ]]; then
		OPTS="${OPTS} --workers ${NUM_WORKERS}"
	fi
	OPTS="${OPTS} --access-log ${ACCESS_LOG:-/dev/null}"

	[[ ! -z "${CHUID}" ]]		&& OPTS="${OPTS} --chuid ${CHUID}"
	[[ ! -z "${FACTORY}" ]]		&& OPTS="${OPTS} --factory ${FACTORY}"
	[[ ! -z "${WATCH}" ]]		&& OPTS="${OPTS} --watch ${WATCH}"
	[[ ! -z "${MAX_MEMORY}" ]]	&& OPTS="${OPTS} --max-memory ${MAX_MEMORY}"
	[[ ! -z "${MAX_AGE}" ]]		&& OPTS="${OPTS} --max-age ${MAX_AGE}"
	OPTS="${OPTS} ${EXTRA_OPTS}"

	start-stop-daemon --start --pidfile "${PIDFILE}" \
		--exec "${SPAWN_BIN}" --env PYTHONPATH="${PYTHON_LIBS}" -- \
			--daemonize --pidfile "${PIDFILE}" \
			--stderr "${ERROR_LOG}" --stdout "${INFO_LOG:-/dev/null}" \
			${OPTS} ${WSGI_APP}
	eend $?
}

stop() {
	check_params || return 1
	ebegin "Stopping ${SVCNAME}"
	start-stop-daemon --stop --pidfile "${PIDFILE}" --signal INT
	eend $?
}

reload() {
	check_params || return 1
	ebegin "Telling ${SVCNAME} to reload itself"
	kill -HUP "$(cat ${PIDFILE})"
	eend $?
}