Skip to content

Commit 2e7b474

Browse files
committed
Manually merge PR 173: handle migrid init script PID file saving when not handled natively
git-svn-id: svn+ssh://svn.code.sf.net/p/migrid/code/trunk@6190 b75ad72c-e7d7-11dd-a971-7dbc132099af
1 parent a0c8892 commit 2e7b474

File tree

2 files changed

+64
-0
lines changed

2 files changed

+64
-0
lines changed

mig/install/migrid-init.d-rh-template

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@
3838
# config: /etc/sysconfig/migrid
3939
#
4040

41+
# This systemd marker will be overridden by sourcing 'functions' below
42+
_use_systemctl=0
43+
4144
# Source function library.
4245
. /etc/init.d/functions
4346

@@ -114,6 +117,22 @@ kick_script() {
114117
echo "" >> ${MIG_CODE}/server/server.stdin
115118
}
116119

120+
fallback_save_pid () {
121+
# Save daemon PID in PID_FILE if not already handled by daemon or systemd
122+
DAEMON_PATH="$1"
123+
PID_FILE="$2"
124+
DAEMON_PID="$3"
125+
[ "$_use_systemctl" = "1" ] && return
126+
[ -s "${PID_FILE}" ] && return
127+
if [ -z "${DAEMON_PID}" ]; then
128+
# Caller failed to extract child PID from daemonizing command
129+
#echo "DEBUG: empty DAEMON_PID provided - try pgrep look up"
130+
DAEMON_PID=$(pgrep -f ${DAEMON_PATH})
131+
fi
132+
#echo "DEBUG: saving PID ${DAEMON_PID} for ${SHORT_NAME} in ${PID_FILE}"
133+
echo "${DAEMON_PID}" > ${PID_FILE}
134+
}
135+
117136
start_script() {
118137
check_enabled "jobs" || return
119138
DAEMON_PATH=${MIG_SCRIPT}
@@ -122,6 +141,7 @@ start_script() {
122141
echo -n "Starting MiG server daemon: $SHORT_NAME"
123142
daemon --user ${MIG_USER} --pidfile ${PID_FILE} \
124143
"${DAEMON_PATH} >> ${MIG_LOG}/script.out 2>&1 &"
144+
fallback_save_pid "$DAEMON_PATH" "$PID_FILE" "$!"
125145
RET=$?
126146
if [ $RET -ne 0 ]; then
127147
failure
@@ -141,6 +161,7 @@ start_monitor() {
141161
echo -n "Starting MiG monitor daemon: $SHORT_NAME"
142162
daemon --user ${MIG_USER} --pidfile ${PID_FILE} \
143163
"${DAEMON_PATH} >> ${MIG_LOG}/monitor.out 2>&1 &"
164+
fallback_save_pid "$DAEMON_PATH" "$PID_FILE" "$!"
144165
RET2=$?
145166
[ $RET2 ] && success
146167
echo
@@ -155,6 +176,7 @@ start_sshmux() {
155176
echo -n "Starting MiG sshmux daemon: $SHORT_NAME"
156177
daemon --user ${MIG_USER} --pidfile ${PID_FILE} \
157178
"${DAEMON_PATH} >> ${MIG_LOG}/sshmux.out 2>&1 &"
179+
fallback_save_pid "$DAEMON_PATH" "$PID_FILE" "$!"
158180
RET2=$?
159181
[ $RET2 ] && success
160182
echo
@@ -170,6 +192,7 @@ start_events() {
170192
echo -n "Starting MiG events daemon: $SHORT_NAME"
171193
daemon +10 --user ${MIG_USER} --pidfile ${PID_FILE} \
172194
"${DAEMON_PATH} >> ${MIG_LOG}/events.out 2>&1 &"
195+
fallback_save_pid "$DAEMON_PATH" "$PID_FILE" "$!"
173196
RET2=$?
174197
[ $RET2 ] && success
175198
echo
@@ -185,6 +208,7 @@ start_cron() {
185208
echo -n "Starting MiG cron daemon: $SHORT_NAME"
186209
daemon +10 --user ${MIG_USER} --pidfile ${PID_FILE} \
187210
"${DAEMON_PATH} >> ${MIG_LOG}/cron.out 2>&1 &"
211+
fallback_save_pid "$DAEMON_PATH" "$PID_FILE" "$!"
188212
RET2=$?
189213
[ $RET2 ] && success
190214
echo
@@ -199,6 +223,7 @@ start_transfers() {
199223
echo -n "Starting MiG transfers daemon: $SHORT_NAME"
200224
daemon --user ${MIG_USER} --pidfile ${PID_FILE} \
201225
"${DAEMON_PATH} >> ${MIG_LOG}/transfers.out 2>&1 &"
226+
fallback_save_pid "$DAEMON_PATH" "$PID_FILE" "$!"
202227
RET2=$?
203228
[ $RET2 ] && success
204229
echo
@@ -213,6 +238,7 @@ start_openid() {
213238
echo -n "Starting MiG openid daemon: $SHORT_NAME"
214239
daemon --user ${MIG_USER} --pidfile ${PID_FILE} \
215240
"${DAEMON_PATH} >> ${MIG_LOG}/openid.out 2>&1 &"
241+
fallback_save_pid "$DAEMON_PATH" "$PID_FILE" "$!"
216242
RET2=$?
217243
[ $RET2 ] && success
218244
echo
@@ -227,6 +253,7 @@ start_sftp() {
227253
echo -n "Starting MiG sftp daemon: $SHORT_NAME"
228254
daemon --user ${MIG_USER} --pidfile ${PID_FILE} \
229255
"${DAEMON_PATH} >> ${MIG_LOG}/sftp.out 2>&1 &"
256+
fallback_save_pid "$DAEMON_PATH" "$PID_FILE" "$!"
230257
RET2=$?
231258
[ $RET2 ] && success
232259
echo
@@ -241,6 +268,7 @@ start_webdavs() {
241268
echo -n "Starting MiG webdavs daemon: $SHORT_NAME"
242269
daemon --user ${MIG_USER} --pidfile ${PID_FILE} \
243270
"${DAEMON_PATH} >> ${MIG_LOG}/webdavs.out 2>&1 &"
271+
fallback_save_pid "$DAEMON_PATH" "$PID_FILE" "$!"
244272
RET2=$?
245273
[ $RET2 ] && success
246274
echo
@@ -255,6 +283,7 @@ start_ftps() {
255283
echo -n "Starting MiG ftps daemon: $SHORT_NAME"
256284
daemon --user ${MIG_USER} --pidfile ${PID_FILE} \
257285
"${DAEMON_PATH} >> ${MIG_LOG}/ftps.out 2>&1 &"
286+
fallback_save_pid "$DAEMON_PATH" "$PID_FILE" "$!"
258287
RET2=$?
259288
[ $RET2 ] && success
260289
echo
@@ -269,6 +298,7 @@ start_notify() {
269298
echo -n "Starting MiG notify daemon: $SHORT_NAME"
270299
daemon --user ${MIG_USER} --pidfile ${PID_FILE} \
271300
"${DAEMON_PATH} >> ${MIG_LOG}/notify.out 2>&1 &"
301+
fallback_save_pid "$DAEMON_PATH" "$PID_FILE" "$!"
272302
RET2=$?
273303
[ $RET2 ] && success
274304
echo
@@ -283,6 +313,7 @@ start_imnotify() {
283313
echo -n "Starting MiG IM notify daemon: $SHORT_NAME"
284314
daemon --user ${MIG_USER} --pidfile ${PID_FILE} \
285315
"${DAEMON_PATH} >> ${MIG_LOG}/imnotify.out 2>&1 &"
316+
fallback_save_pid "$DAEMON_PATH" "$PID_FILE" "$!"
286317
RET2=$?
287318
[ $RET2 ] && success
288319
echo
@@ -297,6 +328,7 @@ start_vmproxy() {
297328
echo -n "Starting MiG VM proxy daemon: $SHORT_NAME"
298329
daemon --user ${MIG_USER} --pidfile ${PID_FILE} \
299330
"${DAEMON_PATH} >> ${MIG_LOG}/vmproxy.out 2>&1 &"
331+
fallback_save_pid "$DAEMON_PATH" "$PID_FILE" "$!"
300332
RET2=$?
301333
[ $RET2 ] && success
302334
echo

tests/fixture/confs-stdlocal/migrid-init.d-rh

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@
3838
# config: /etc/sysconfig/migrid
3939
#
4040

41+
# This systemd marker will be overridden by sourcing 'functions' below
42+
_use_systemctl=0
43+
4144
# Source function library.
4245
. /etc/init.d/functions
4346

@@ -114,6 +117,22 @@ kick_script() {
114117
echo "" >> ${MIG_CODE}/server/server.stdin
115118
}
116119

120+
fallback_save_pid () {
121+
# Save daemon PID in PID_FILE if not already handled by daemon or systemd
122+
DAEMON_PATH="$1"
123+
PID_FILE="$2"
124+
DAEMON_PID="$3"
125+
[ "$_use_systemctl" = "1" ] && return
126+
[ -s "${PID_FILE}" ] && return
127+
if [ -z "${DAEMON_PID}" ]; then
128+
# Caller failed to extract child PID from daemonizing command
129+
#echo "DEBUG: empty DAEMON_PID provided - try pgrep look up"
130+
DAEMON_PID=$(pgrep -f ${DAEMON_PATH})
131+
fi
132+
#echo "DEBUG: saving PID ${DAEMON_PID} for ${SHORT_NAME} in ${PID_FILE}"
133+
echo "${DAEMON_PID}" > ${PID_FILE}
134+
}
135+
117136
start_script() {
118137
check_enabled "jobs" || return
119138
DAEMON_PATH=${MIG_SCRIPT}
@@ -122,6 +141,7 @@ start_script() {
122141
echo -n "Starting MiG server daemon: $SHORT_NAME"
123142
daemon --user ${MIG_USER} --pidfile ${PID_FILE} \
124143
"${DAEMON_PATH} >> ${MIG_LOG}/script.out 2>&1 &"
144+
fallback_save_pid "$DAEMON_PATH" "$PID_FILE" "$!"
125145
RET=$?
126146
if [ $RET -ne 0 ]; then
127147
failure
@@ -141,6 +161,7 @@ start_monitor() {
141161
echo -n "Starting MiG monitor daemon: $SHORT_NAME"
142162
daemon --user ${MIG_USER} --pidfile ${PID_FILE} \
143163
"${DAEMON_PATH} >> ${MIG_LOG}/monitor.out 2>&1 &"
164+
fallback_save_pid "$DAEMON_PATH" "$PID_FILE" "$!"
144165
RET2=$?
145166
[ $RET2 ] && success
146167
echo
@@ -155,6 +176,7 @@ start_sshmux() {
155176
echo -n "Starting MiG sshmux daemon: $SHORT_NAME"
156177
daemon --user ${MIG_USER} --pidfile ${PID_FILE} \
157178
"${DAEMON_PATH} >> ${MIG_LOG}/sshmux.out 2>&1 &"
179+
fallback_save_pid "$DAEMON_PATH" "$PID_FILE" "$!"
158180
RET2=$?
159181
[ $RET2 ] && success
160182
echo
@@ -170,6 +192,7 @@ start_events() {
170192
echo -n "Starting MiG events daemon: $SHORT_NAME"
171193
daemon +10 --user ${MIG_USER} --pidfile ${PID_FILE} \
172194
"${DAEMON_PATH} >> ${MIG_LOG}/events.out 2>&1 &"
195+
fallback_save_pid "$DAEMON_PATH" "$PID_FILE" "$!"
173196
RET2=$?
174197
[ $RET2 ] && success
175198
echo
@@ -185,6 +208,7 @@ start_cron() {
185208
echo -n "Starting MiG cron daemon: $SHORT_NAME"
186209
daemon +10 --user ${MIG_USER} --pidfile ${PID_FILE} \
187210
"${DAEMON_PATH} >> ${MIG_LOG}/cron.out 2>&1 &"
211+
fallback_save_pid "$DAEMON_PATH" "$PID_FILE" "$!"
188212
RET2=$?
189213
[ $RET2 ] && success
190214
echo
@@ -199,6 +223,7 @@ start_transfers() {
199223
echo -n "Starting MiG transfers daemon: $SHORT_NAME"
200224
daemon --user ${MIG_USER} --pidfile ${PID_FILE} \
201225
"${DAEMON_PATH} >> ${MIG_LOG}/transfers.out 2>&1 &"
226+
fallback_save_pid "$DAEMON_PATH" "$PID_FILE" "$!"
202227
RET2=$?
203228
[ $RET2 ] && success
204229
echo
@@ -213,6 +238,7 @@ start_openid() {
213238
echo -n "Starting MiG openid daemon: $SHORT_NAME"
214239
daemon --user ${MIG_USER} --pidfile ${PID_FILE} \
215240
"${DAEMON_PATH} >> ${MIG_LOG}/openid.out 2>&1 &"
241+
fallback_save_pid "$DAEMON_PATH" "$PID_FILE" "$!"
216242
RET2=$?
217243
[ $RET2 ] && success
218244
echo
@@ -227,6 +253,7 @@ start_sftp() {
227253
echo -n "Starting MiG sftp daemon: $SHORT_NAME"
228254
daemon --user ${MIG_USER} --pidfile ${PID_FILE} \
229255
"${DAEMON_PATH} >> ${MIG_LOG}/sftp.out 2>&1 &"
256+
fallback_save_pid "$DAEMON_PATH" "$PID_FILE" "$!"
230257
RET2=$?
231258
[ $RET2 ] && success
232259
echo
@@ -241,6 +268,7 @@ start_webdavs() {
241268
echo -n "Starting MiG webdavs daemon: $SHORT_NAME"
242269
daemon --user ${MIG_USER} --pidfile ${PID_FILE} \
243270
"${DAEMON_PATH} >> ${MIG_LOG}/webdavs.out 2>&1 &"
271+
fallback_save_pid "$DAEMON_PATH" "$PID_FILE" "$!"
244272
RET2=$?
245273
[ $RET2 ] && success
246274
echo
@@ -255,6 +283,7 @@ start_ftps() {
255283
echo -n "Starting MiG ftps daemon: $SHORT_NAME"
256284
daemon --user ${MIG_USER} --pidfile ${PID_FILE} \
257285
"${DAEMON_PATH} >> ${MIG_LOG}/ftps.out 2>&1 &"
286+
fallback_save_pid "$DAEMON_PATH" "$PID_FILE" "$!"
258287
RET2=$?
259288
[ $RET2 ] && success
260289
echo
@@ -269,6 +298,7 @@ start_notify() {
269298
echo -n "Starting MiG notify daemon: $SHORT_NAME"
270299
daemon --user ${MIG_USER} --pidfile ${PID_FILE} \
271300
"${DAEMON_PATH} >> ${MIG_LOG}/notify.out 2>&1 &"
301+
fallback_save_pid "$DAEMON_PATH" "$PID_FILE" "$!"
272302
RET2=$?
273303
[ $RET2 ] && success
274304
echo
@@ -283,6 +313,7 @@ start_imnotify() {
283313
echo -n "Starting MiG IM notify daemon: $SHORT_NAME"
284314
daemon --user ${MIG_USER} --pidfile ${PID_FILE} \
285315
"${DAEMON_PATH} >> ${MIG_LOG}/imnotify.out 2>&1 &"
316+
fallback_save_pid "$DAEMON_PATH" "$PID_FILE" "$!"
286317
RET2=$?
287318
[ $RET2 ] && success
288319
echo
@@ -297,6 +328,7 @@ start_vmproxy() {
297328
echo -n "Starting MiG VM proxy daemon: $SHORT_NAME"
298329
daemon --user ${MIG_USER} --pidfile ${PID_FILE} \
299330
"${DAEMON_PATH} >> ${MIG_LOG}/vmproxy.out 2>&1 &"
331+
fallback_save_pid "$DAEMON_PATH" "$PID_FILE" "$!"
300332
RET2=$?
301333
[ $RET2 ] && success
302334
echo

0 commit comments

Comments
 (0)