~upstart-devel/upstart/upstart-jobs

« back to all changes in this revision

Viewing changes to utopic/etc/init.d/acix-cache

  • Committer: Dimitri John Ledkov
  • Date: 2014-05-06 18:45:46 UTC
  • Revision ID: dimitri.ledkov@canonical.com-20140506184546-5toyx56xxrue0f0v
auto update

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/sh
 
2
# ARC cache index cache server
 
3
 
4
# chkconfig: - 75 25
 
5
# description:  The ARC cache server collects cache information which \
 
6
#               can be pulled by a cache index.
 
7
 
 
8
### BEGIN INIT INFO
 
9
# Provides:             acix-cache
 
10
# Required-Start:       $network
 
11
# Required-Stop:        $network
 
12
# Should-Start:         $time
 
13
# Should-Stop:          $time
 
14
# Default-Start:
 
15
# Default-Stop:
 
16
# Short-Description:    ARC cacheindex, cache server
 
17
# Description:          The ARC cache server collects cache information which
 
18
#                       can be pulled by a cache index.
 
19
### END INIT INFO
 
20
 
 
21
# source function library
 
22
if [ -f /etc/init.d/functions ]; then
 
23
    . /etc/init.d/functions
 
24
    log_success_msg() {
 
25
        echo -n "$@"
 
26
        success "$@"
 
27
        echo
 
28
    }
 
29
    log_warning_msg() {
 
30
        echo -n "$@"
 
31
        warning "$@"
 
32
        echo
 
33
    }
 
34
    log_failure_msg() {
 
35
        echo -n "$@"
 
36
        failure "$@"
 
37
        echo
 
38
    }
 
39
elif [ -f /lib/lsb/init-functions ]; then
 
40
    . /lib/lsb/init-functions
 
41
else
 
42
    echo "Error: Cannot source neither init.d nor lsb functions"
 
43
    exit 1
 
44
fi
 
45
 
 
46
PIDFILE=/var/run/acix-cache.pid
 
47
DEFAULT_LOGFILE=/var/log/arc/acix-cache.log
 
48
prog=twistd
 
49
 
 
50
RUN=yes
 
51
 
 
52
# sysconfig files
 
53
if [ -r /etc/sysconfig/nordugrid ]; then
 
54
    . /etc/sysconfig/nordugrid
 
55
elif [ -r /etc/default/nordugrid ]; then
 
56
    . /etc/default/nordugrid
 
57
fi
 
58
if [ -r /etc/sysconfig/acix-cache ]; then
 
59
    . /etc/sysconfig/acix-cache
 
60
elif [ -r /etc/default/acix-cache ]; then
 
61
    . /etc/default/acix-cache
 
62
fi
 
63
 
 
64
if [ `id -u` = 0 ] ; then
 
65
    # Debian does not have /var/lock/subsys
 
66
    if [ -d /var/lock/subsys ]; then
 
67
        LOCKFILE=/var/lock/subsys/acix-cache
 
68
    else
 
69
        LOCKFILE=/var/lock/acix-cache
 
70
    fi
 
71
else
 
72
    LOCKFILE=$HOME/acix-cache.lock
 
73
fi
 
74
 
 
75
APPSTART="from acix import cacheserver ; application = cacheserver.createApplication()"
 
76
 
 
77
do_start() {
 
78
 
 
79
    if [ "$RUN" != "yes" ] ; then
 
80
        echo "acix-cache service is disabled, please adjust the configuration to your"
 
81
        echo "needs and then set RUN to 'yes' in /etc/default/acix-cache to enable it."
 
82
        return 0
 
83
    fi
 
84
 
 
85
    # ARC_CONFIG
 
86
    if [ "x$ARC_CONFIG" = "x" ] && [ -r /etc/arc.conf ]; then
 
87
        ARC_CONFIG=/etc/arc.conf
 
88
    fi
 
89
    if [ ! -r "$ARC_CONFIG" ]; then
 
90
        log_failure_msg "ARC configuration not found (usually /etc/arc.conf)"
 
91
        exit 1
 
92
    fi
 
93
    
 
94
    echo -n "Starting ARC cache server..."
 
95
 
 
96
    # Check if we are already running
 
97
    if [ -f $PIDFILE ]; then
 
98
        read pid < $PIDFILE
 
99
        if [ "x$pid" != "x" ]; then
 
100
            ps -p "$pid" -o comm 2>/dev/null | grep "^$prog$" 1>/dev/null 2>/dev/null
 
101
            if [ $? -eq 0 ] ; then
 
102
                log_success_msg "already running (pid $pid)"
 
103
                return 0
 
104
            fi
 
105
        fi
 
106
        rm -f "$PIDFILE" "$LOCKFILE"
 
107
    fi
 
108
 
 
109
    CONFIG_SECTION=acix\\/cacheserver
 
110
    # read in cacheserver section from arc.conf
 
111
    # this will put the read values into the environment, e.g., $logfile
 
112
    eval `sed -e 's/[[:space:]]*\=[[:space:]]*/=/g' \
 
113
              -e 's/;.*$//' \
 
114
              -e 's/[[:space:]]*$//' \
 
115
              -e 's/^[[:space:]]*//' \
 
116
              -e "s/^\(.*\)=\([^\"']*\)$/\1=\"\2\"/" \
 
117
               < $ARC_CONFIG \
 
118
               | sed -n -e "/^\[$CONFIG_SECTION\]/,/^\s*\[/{/^[^;].*\=.*/p;}" `
 
119
    LOGFILE=${logfile:-$DEFAULT_LOGFILE}
 
120
    if [ ! -d `dirname $LOGFILE` ]; then
 
121
        mkdir -p `dirname $LOGFILE`
 
122
    fi  
 
123
 
 
124
    TACFILE=`mktemp` || exit 1
 
125
    echo $APPSTART > $TACFILE
 
126
 
 
127
    $prog --pidfile $PIDFILE -l $LOGFILE -y $TACFILE
 
128
    RETVAL=$?
 
129
    rm -f $TACFILE
 
130
    if [ $RETVAL -eq 0 ]; then
 
131
        touch $LOCKFILE
 
132
        log_success_msg
 
133
    else
 
134
        log_failure_msg
 
135
    fi
 
136
    return $RETVAL    
 
137
}
 
138
 
 
139
do_stop() {
 
140
 
 
141
    echo -n "Stopping ARC cache server..."
 
142
 
 
143
    if [ -f "$PIDFILE" ]; then
 
144
        read pid < "$PIDFILE"
 
145
        if [ ! -z "$pid" ] ; then
 
146
            kill "$pid"
 
147
            RETVAL=$?
 
148
            if [ $RETVAL -eq 0 ]; then
 
149
                log_success_msg
 
150
            else
 
151
                log_failure_msg
 
152
            fi
 
153
      
 
154
            timeout=2; # for stopping nicely
 
155
            
 
156
            while ( ps -p "$pid" -o comm 2>/dev/null | grep "^$prog$" 1>/dev/null 2>/dev/null ) && [ $timeout -ge 1 ] ; do
 
157
                sleep 1
 
158
                timeout=$(($timeout - 1))
 
159
            done
 
160
 
 
161
            [ $timeout -lt 1 ] && kill -9 "$pid" 1>/dev/null 2>&1
 
162
            rm -f "$PIDFILE" "$LOCKFILE"
 
163
        else
 
164
            RETVAL=1
 
165
            log_failure_msg "$prog shutdown - pidfile is empty"
 
166
        fi
 
167
    else
 
168
        RETVAL=0
 
169
        log_success_msg "$prog shutdown - already stopped"
 
170
    fi
 
171
    return $RETVAL
 
172
}
 
173
 
 
174
do_status() {
 
175
 
 
176
    if [ -f "$PIDFILE" ]; then
 
177
        read pid < "$PIDFILE"
 
178
        if [ "$pid" != "" ]; then
 
179
            if ps -p "$pid" > /dev/null; then
 
180
                echo "$1 (pid $pid) is running..."
 
181
                return 0
 
182
            fi
 
183
            echo "$1 stopped but pid file exists"
 
184
            return 1
 
185
        fi
 
186
    fi
 
187
    if [ -f $LOCKFILE ]; then
 
188
        echo "$1 stopped but lockfile exists"
 
189
        return 2
 
190
    fi
 
191
    echo "$1 is stopped"
 
192
    return 3
 
193
}
 
194
 
 
195
do_restart() {
 
196
    do_stop
 
197
    do_start
 
198
}
 
199
 
 
200
case "$1" in
 
201
    start)
 
202
        do_start
 
203
    ;;
 
204
    stop)
 
205
        do_stop
 
206
    ;;
 
207
    restart|reload|force-reload)
 
208
        do_restart
 
209
    ;;
 
210
    condrestart|try-restart)
 
211
        [ -f $LOCKFILE ] && do_restart || :
 
212
    ;;
 
213
    status)
 
214
        do_status $prog
 
215
    ;;
 
216
    *)
 
217
        echo "Usage: $0 {start|stop|restart|status|reload|condrestart|try-restart}"
 
218
        exit 1
 
219
    ;;
 
220
esac
 
221
 
 
222
exit 0