summaryrefslogtreecommitdiff
path: root/src/init-radosgw
blob: 0fc85c9a5876bab8e658287f508b7a5a88e8510c (plain)
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
#! /bin/sh
### BEGIN INIT INFO
# Provides:          radosgw
# Required-Start:    $remote_fs $named $network $time
# Required-Stop:     $remote_fs $named $network $time
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: radosgw RESTful rados gateway
### END INIT INFO

PATH=/sbin:/bin:/usr/bin

. /lib/lsb/init-functions

# prefix for radosgw instances in ceph.conf
PREFIX='client.radosgw.'

# user to run radosgw as (it not specified in ceph.conf)
DEFAULT_USER='www-data'

# directory to write logs to
LOGDIR='/var/log/radosgw'

RADOSGW=`which radosgw`
if [ ! -x "$RADOSGW" ]; then
    exit 0
fi

# make sure log dir exists
if [ ! -d "$LOGDIR" ]; then
    mkdir -p $LOGDIR
fi

case "$1" in
    start)
	for name in `ceph-conf --list-sections $PREFIX`;
	do
	    auto_start=`ceph-conf -n $name 'auto start'`
	    if [ "$auto_start" = "no" ] || [ "$auto_start" = "false" ] || [ "$auto_start" = "0" ]; then
		continue
	    fi

            # is the socket defined?  if it's not, this instance shouldn't run as a daemon.
	    rgw_socket=`ceph-conf -n $name 'rgw socket path'`
	    if [ -z "$rgw_socket" ]; then
		continue
	    fi

            # mapped to this host?
	    host=`ceph-conf -n $name host`
	    if [ "$host" != `hostname` ]; then
		continue
	    fi

	    user=`ceph-conf -n $name user`
	    if [ -z "$user" ]; then
		user="$DEFAULT_USER"
	    fi

	    log_file=`ceph-conf -n $name log_file`
	    if [ -n "$log_file" ] && [ ! -e "$log_file" ]; then
		touch "$log_file"
		chown $user $log_file
	    fi

            echo "Starting $name..."
	    start-stop-daemon --start -u $user -x $RADOSGW -- -n $name
	done
        ;;
    reload)
	echo "Reloading $name..."
	start-stop-daemon --signal HUP -x $RADOSGW --oknodo
	;;
    restart|force-reload)
        $0 stop
        $0 start
        ;;
    stop)
        start-stop-daemon --stop -x $RADOSGW --oknodo
        ;;
    *)
        echo "Usage: $0 start|stop|restart" >&2
        exit 3
        ;;
esac