File: init-script-template

package info (click to toggle)
swift 2.10.2-1~deb9u1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 11,716 kB
  • ctags: 11,366
  • sloc: python: 143,645; sh: 617; pascal: 243; makefile: 71; xml: 30
file content (153 lines) | stat: -rw-r--r-- 3,525 bytes parent folder | download | duplicates (2)
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