forked from dmwm/deployment
-
Notifications
You must be signed in to change notification settings - Fork 0
/
manage
executable file
·148 lines (128 loc) · 3.25 KB
/
manage
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
#!/bin/sh
##H Usage: manage ACTION [SECURITY-STRING]
##H
##H Available actions:
##H help show this help
##H version get current version of the service
##H status show current service's status
##H sysboot start server from crond if not running
##H restart (re)start the service
##H start (re)start the service
##H stop stop the service
##H
##H For more details please refer to operations page:
##H https://twiki.cern.ch/twiki/bin/view/CMS/ReqMgrSystemDesign
if [ $(id -un) = cmsweb ]; then
echo "ERROR: please use another account" 1>&2
exit 1
fi
echo_e=-e bsdstart=bsdstart
case $(uname) in Darwin )
md5sum() { md5 -r ${1+"$@"}; }
echo_e= bsdstart=start
;;
esac
ME=$(basename $(dirname $0))
TOP=$(cd $(dirname $0)/../../.. && pwd)
ROOT=$(cd $(dirname $0)/../.. && pwd)
CFGDIR=$(dirname $0)
LOGDIR=$TOP/logs/$ME
STATEDIR=$TOP/state/$ME
CFGFILE=$CFGDIR/ReqMgrConfig.py
AUTHDIR=$TOP/current/auth/reqmgr
COLOR_OK="\\033[0;32m"
COLOR_WARN="\\033[0;31m"
COLOR_NORMAL="\\033[0;39m"
. $ROOT/apps/$ME/etc/profile.d/init.sh
export PYTHONPATH=$ROOT/auth/$ME:$PYTHONPATH
export YUI_ROOT
export WMCORE_ROOT=$REQMGR_ROOT/lib/python*/site-packages
export REQMGR_CACHE_DIR=$STATEDIR
export WMCORE_CACHE_DIR=$STATEDIR
if [ -e $AUTHDIR/dmwm-service-cert.pem ] && [ -e $AUTHDIR/dmwm-service-key.pem ]; then
export X509_USER_CERT=$AUTHDIR/dmwm-service-cert.pem
export X509_USER_KEY=$AUTHDIR/dmwm-service-key.pem
fi
# Start service conditionally on crond restart.
sysboot()
{
if [ $(pgrep -u $(id -u) -f "WebTools.Root.*[=]$CFGFILE" | wc -l) = 0 ]; then
start
fi
}
# Start the service.
start()
{
cd $STATEDIR
echo "starting $ME"
python -u -m WMCore.WebTools.Root --ini=$CFGFILE \
</dev/null 2>&1 | rotatelogs $LOGDIR/reqmgr-%Y%m%d.log 86400 >/dev/null 2>&1 &
}
# Stop the service.
stop()
{
echo "stopping $ME"
for PID in $(pgrep -u $(id -u) -f "WebTools.Root.*[=]$CFGFILE" | sort -rn); do
PSLINE=$(ps -o pid=,$bsdstart=,args= $PID |
perl -n -e 'print join(" ", (split)[0..6])')
echo "Stopping $PID ($PSLINE):"
kill -9 $PID
done
}
# Check if the server is running.
status()
{
pid=$(pgrep -u $(id -u) -f "WebTools.Root.*[=]$CFGFILE" | sort -n)
if [ X"$pid" = X ]; then
echo $echo_e "$ME is ${COLOR_WARN}NOT RUNNING${COLOR_NORMAL}."
else
echo $echo_e "$ME is ${COLOR_OK}RUNNING${COLOR_NORMAL}, PID" $pid
fi
}
# Verify the security string.
check()
{
CHECK=$(echo "$1" | md5sum | awk '{print $1}')
if [ $CHECK != 94e261a5a70785552d34a65068819993 ]; then
echo "$0: cannot complete operation, please check documentation." 1>&2
exit 2;
fi
}
# make sure the CMSSW_VERSIONS are up to date
updateversions()
{
cd $STATEDIR
requestDbAdmin add -c $CFGFILE -v all
}
# Main routine, perform action requested on command line.
case ${1:-status} in
sysboot )
sysboot
;;
start | restart )
check "$2"
stop
start
;;
status )
status
;;
stop )
check "$2"
stop
;;
updateversions )
check "$2"
updateversions
;;
help )
perl -ne '/^##H/ && do { s/^##H ?//; print }' < $0
;;
version )
echo "$REQMGR_VERSION"
;;
* )
echo "$0: unknown action '$1', please try '$0 help' or documentation." 1>&2
exit 1
;;
esac