1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
|
#!/bin/sh
# The content after this line comes from Debian Swift source package
# and has been automatically added to a .init.in script, which
# contains only the descriptive part for the daemon. Everything
# else is standardized as a single unique script.
# Author: Thomas Goirand <zigo@debian.org>
# Author: Ondřej Nový <novy@ondrej.org>
# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DAEMON=/usr/bin/${NAME}
SYSTEM_USER=${PROJECT_NAME}
SYSTEM_GROUP=${PROJECT_NAME}
# Exit if the package is not installed
[ -x $DAEMON ] || exit 0
# If ran as root, create /var/lock/X, /var/run/X, /var/lib/X and /var/log/X as needed
if [ `whoami` = "root" ] ; then
for i in lock run lib ; do
mkdir -p /var/$i/${PROJECT_NAME}
chown ${SYSTEM_USER}:${SYSTEM_GROUP} /var/$i/${PROJECT_NAME}
done
for i in log ; do
mkdir -p /var/$i/${PROJECT_NAME}
chown ${SYSTEM_USER}:adm /var/$i/${PROJECT_NAME}
done
fi
# This defines init_is_upstart which we use later on (+ more...)
. /lib/lsb/init-functions
RET=0
# Configs
[ -r /etc/default/openstack ] && . /etc/default/openstack
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
do_start() {
# Check for existence of ring files
if
[ ! -r /etc/swift/account.ring.gz ] ||
[ ! -r /etc/swift/container.ring.gz ] ||
test -z "$(find /etc/swift -maxdepth 1 -name 'object*.ring.gz' -print -quit)" ; then
log_end_msg 1
exit $?
fi
STARTED=
for CONF_FILE in /etc/swift/${CONFIG}.conf /etc/swift/${CONFIG}/*.conf ; do
if [ ! -e "$CONF_FILE" ] ; then
continue
fi
SUFFIX=${CONF_FILE#/etc/swift/$CONFIG}
SUFFIX=${SUFFIX%.conf}
if [ "$SUFFIX" ] ; then
# /etc/swift/${NAME}/*.conf
SUFFIX=-${SUFFIX#/}
fi
PIDFILE=/var/run/${PROJECT_NAME}/${NAME}${SUFFIX}.pid
start-stop-daemon \
--start \
--quiet \
--background \
--chuid ${SYSTEM_USER}:${SYSTEM_GROUP} \
--make-pidfile \
--pidfile ${PIDFILE} \
--chdir /var/lib/${PROJECT_NAME} \
--startas $DAEMON \
--test > /dev/null \
|| return 1
start-stop-daemon \
--start \
--quiet \
--background \
--chuid ${SYSTEM_USER}:${SYSTEM_GROUP} \
--make-pidfile \
--pidfile ${PIDFILE} \
--chdir /var/lib/${PROJECT_NAME} \
--startas $DAEMON \
-- $CONF_FILE \
|| return 2
STARTED=1
done
if [ ! "$STARTED" ] ; then
return 2
fi
}
do_stop() {
for PIDFILE in /var/run/${PROJECT_NAME}/${NAME}*.pid ; do
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE
RETVAL=$?
rm -f $PIDFILE
if [ "$RETVAL" != "0" ] ; then
return "$RETVAL"
fi
done
}
case "$1" in
start)
#init_is_upstart > /dev/null 2>&1 && exit 1
log_daemon_msg "Starting $DESC" "$NAME"
do_start
case $? in
0|1) log_end_msg 0 ; RET=$? ;;
2) log_end_msg 1 ; RET=$? ;;
esac
;;
stop)
#init_is_upstart > /dev/null 2>&1 && exit 0
log_daemon_msg "Stopping $DESC" "$NAME"
do_stop
case $? in
0|1) log_end_msg 0 ; RET=$? ;;
2) log_end_msg 1 ; RET=$? ;;
esac
;;
status)
status_of_proc "$DAEMON" "$NAME"
RET=$?
;;
restart|force-reload)
#init_is_upstart > /dev/null 2>&1 && exit 1
log_daemon_msg "Restarting $DESC" "$NAME"
do_stop
case $? in
0|1)
do_start
case $? in
0) log_end_msg 0 ; RET=$? ;;
1) log_end_msg 1 ; RET=$? ;; # Old process is still running
*) log_end_msg 1 ; RET=$? ;; # Failed to start
esac
;;
*) log_end_msg 1 ; RET=$? ;; # Failed to stop
esac
;;
*)
echo "Usage: $0 {start|stop|status|restart|force-reload}" >&2
RET=3
;;
esac
exit $RET
|