From: Josh Durgin Date: Wed, 19 Mar 2014 10:11:50 +0000 (-0700) Subject: packaging: add init scripts X-Git-Tag: v1.2~14 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c8d243f503b39e67a8daec6df40b58fb993cc6e6;p=radosgw-agent.git packaging: add init scripts create log, run, and etc dirs as well Signed-off-by: Josh Durgin --- diff --git a/debian/dirs b/debian/dirs new file mode 100644 index 0000000..b1f058b --- /dev/null +++ b/debian/dirs @@ -0,0 +1,3 @@ +/etc/ceph/radosgw-agent +/var/log/ceph/radosgw-agent +/var/run/ceph/radosgw-agent diff --git a/debian/rules b/debian/rules index 45200da..7d2e9dd 100755 --- a/debian/rules +++ b/debian/rules @@ -6,3 +6,7 @@ export DH_VERBOSE=1 %: dh $@ --buildsystem python_distutils --with python2 +override_dh_installinit: + install -d -m0755 debian/radosgw-agent/etc/init + install -m0644 init-radosgw-agent debian/radosgw-agent/etc/init + dh_installinit --no-start diff --git a/init-radosgw-agent b/init-radosgw-agent new file mode 100644 index 0000000..ace91ae --- /dev/null +++ b/init-radosgw-agent @@ -0,0 +1,102 @@ +#!/bin/sh +# Start/stop radosgw-agent daemons +# chkconfig: 2345 60 80 + +### BEGIN INIT INFO +# Provides: radosgw-agent +# Required-Start: $remote_fs $named $network +# Required-Stop: $remote_fs $named $network +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Start radosgw-agent at boot time +# Description: Enable radosgw-agent services +### END INIT INFO + +dir="/" +config_path="/etc/ceph/radosgw-agent/default.conf" + +if [ $2 ]; then + config_path=$2 +fi + +if [ ! -f "$config_path" ]; then + echo "$0: configuration file $config_path not found" + exit 0 +fi + +cmd="/usr/bin/radosgw-agent -c $config_path" + +name=`basename $config_path` +pid_file="/var/run/ceph/radosgw-agent/$name.pid" + +is_running() { + [ -e "$pid_file" ] || return 1 + pid=`cat "$pid_file"` + [ -e "/proc/$pid" ] && grep -q "/usr/bin/radosgw-agent.-c.$config_path" "/proc/$pid/cmdline" && return 0 + return 1 +} + +case "$1" in + start) + if is_running; then + echo "Already started" + exit 0 + fi + echo "Starting radosgw-agent $name" + cd "$dir" + $cmd > /dev/null 2>&1 & + echo $! > "$pid_file" + if ! is_running; then + echo "Unable to start, see /var/log/ceph/radosgw-agent/" + exit 1 + fi + ;; + + stop) + if is_running; then + echo -n "Stopping radosgw-agent $name.." + pid=`cat "$pid_file"` + kill $pid + for i in {1..10} + do + if ! is_running; then + break + fi + + echo -n "." + sleep 1 + done + + if is_running; then + echo "Not stopped; may still be shutting down or shutdown may have failed" + exit 1 + else + echo "Stopped" + rm "$pid_file" + fi + else + echo "Not running" + fi + ;; + restart) + $0 stop $name + if is_running; then + echo "Unable to stop, will not attempt to start" + exit 1 + fi + $0 start $name + ;; + status) + if is_running; then + echo "Running" + else + echo "Stopped" + exit 1 + fi + ;; + *) + echo "Usage: $0 {start|stop|restart|status} [config-file]" + exit 1 + ;; +esac +exit 0 diff --git a/radosgw-agent.spec b/radosgw-agent.spec index 15e9b8a..3113611 100644 --- a/radosgw-agent.spec +++ b/radosgw-agent.spec @@ -30,6 +30,7 @@ UNKNOWN %build python setup.py build +install -D init-radosgw-agent $RPM_BUILD_ROOT%{_initrddir}/radosgw-agent %install python setup.py install --single-version-externally-managed -O1 --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES @@ -39,3 +40,6 @@ rm -rf $RPM_BUILD_ROOT %files -f INSTALLED_FILES %defattr(-,root,root) +%dir %{_sysconfdir}/ceph/radosgw-agent/ +%dir %{_localstatedir}/log/ceph/radosgw-agent/ +%dir %{_localstatedir}/run/ceph/radosgw-agent/