summaryrefslogtreecommitdiff
blob: 6f0b61282d762c6e6b141539ae76e00f905a561c (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
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
#!/sbin/runscript
# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-cluster/glusterfs/files/glusterfs.initd,v 1.1 2009/09/22 19:47:25 alexxy Exp $

if [[ "${SVCNAME}" != "glusterfs" ]]
then
	GLUSTERFS_NAME="${SVCNAME#glusterfs.}"
else
	GLUSTERFS_NAME="glusterfs"
fi

GLUSTERFS_PIDFILE="/var/run/${SVCNAME}.pid"

eval 'GLUSTERFS_LOGFILE="${'${GLUSTERFS_NAME}'_log:-/var/log/glusterfs/'${GLUSTERFS_NAME}'.log}"'
eval 'GLUSTERFS_VOLFILE="${'${GLUSTERFS_NAME}'_vol:-/etc/glusterfs/'${GLUSTERFS_NAME}'.vol}"'
eval 'GLUSTERFS_SERVER="${'${GLUSTERFS_NAME}'_server}"'
eval 'GLUSTERFS_PORT="${'${GLUSTERFS_NAME}'_port:-6996}"'
eval 'GLUSTERFS_TRANSPORT="${'${GLUSTERFS_NAME}'_transport:-socket}"'
eval 'GLUSTERFS_OPTS="${'${GLUSTERFS_NAME}'_opts}"'
eval 'GLUSTERFS_MOUNTPOINT="${'${GLUSTERFS_NAME}'_mountpoint}"'

depend() {
	need net openib net.ib0
	[[ -n "${GLUSTERFS_MOUNTPOINT}" ]] && need fuse
	use dns
	after firewall ntp-client ntpd
}

checkconfig() {
	if [[ -z "${GLUSTERFS_NAME}" ]]
	then
		eerror "The service name is not properly formatted."
		return 1
	fi

	if [[ -z "${GLUSTERFS_SERVER}" ]]
	then
		if [[ -z "${GLUSTERFS_VOLFILE}" ]]
		then
			eerror "No GlusterFS volume file source has been defined.  Edit /etc/conf.d/glusterfs"
			eerror "and configure a volume file source for ${SVCNAME}."
			return 1
		else
			if [[ ! -f "${GLUSTERFS_VOLFILE}" ]]
			then
				eerror "Cannot find volume file: ${GLUSTERFS_VOLFILE}"
				return 1
			fi
		fi
	fi

	if [[ -n "${GLUSTERFS_MOUNTPOINT}" && ! -d "${GLUSTERFS_MOUNTPOINT}" ]]
	then
		eerror "The mountpoint ${GLUSTERFS_MOUNTPOINT} does not exist."
		return 1
	fi
}

start() {
	local status

	checkconfig || return 1

	ebegin "Starting GlusterFS (${SVCNAME})"
	eindent

	if [[ -z "${GLUSTERFS_MOUNTPOINT}" ]]
	then
		einfo "Starting in server mode ..."
	else
		einfo "Starting in client mode. Mounting filesystem ..."
	fi

	if [[ -n "${GLUSTERFS_SERVER}" ]]
	then
		einfo "Using server supplied volume file"
		start-stop-daemon --start --pidfile ${GLUSTERFS_PIDFILE} \
			--exec /usr/sbin/glusterfsd -- \
			--pid-file=${GLUSTERFS_PIDFILE} \
			--log-file=${GLUSTERFS_LOGFILE} \
			--volfile-server=${GLUSTERFS_SERVER} \
			--volfile-server-port=${GLUSTERFS_PORT} \
			--volfile-server-transport=${GLUSTERFS_TRANSPORT} \
			${GLUSTERFS_OPTS} ${GLUSTERFS_MOUNTPOINT}
		status="$?"
	else
		einfo "Using local volume file"
		start-stop-daemon --start --pidfile ${GLUSTERFS_PIDFILE} \
			--exec /usr/sbin/glusterfsd -- \
			--pid-file=${GLUSTERFS_PIDFILE} \
			--log-file=${GLUSTERFS_LOGFILE} \
			--volfile=${GLUSTERFS_VOLFILE} \
			${GLUSTERFS_OPTS} ${GLUSTERFS_MOUNTPOINT}
		status="$?"
	fi

	eoutdent
	eend ${status}
}

stop() {
	local status

	ebegin "Stopping GlusterFS (${SVCNAME})"
	eindent
	if [[ -z "${GLUSTERFS_MOUNTPOINT}" ]]
	then
		einfo "Stopping server process ..."
		start-stop-daemon --stop --pidfile ${GLUSTERFS_PIDFILE}
		status="$?"
	else
		einfo "Unmounting ${GLUSTERFS_MOUNTPOINT} ..."
		umount "${GLUSTERFS_MOUNTPOINT}"
		status="$?"
	fi
	eoutdent
	eend ${status}
}