projects/aports·blob master · refs

118 lines · 3.1 KiB

1#!/sbin/openrc-run
2
3# Original source: https://gitweb.gentoo.org/repo/gentoo.git/tree/sys-cluster/ceph/files/ceph.initd-r12
4
5# make sure /etc/conf.d/ceph gets loaded for ceph-mon etc
6_CONFD_FILE="${RC_SERVICE%/*}/../conf.d/${RC_SVCNAME%-*}"
7if [ -r "${_CONFD_FILE}" ]; then
8 . "${_CONFD_FILE}" || exit 1
9fi
10
11: "${ceph_conf:=/etc/ceph/ceph.conf}"
12daemon_type="${RC_SVCNAME#ceph-}"
13daemon_type="${daemon_type%%.*}"
14daemon_id="${RC_SVCNAME#ceph-*.}"
15daemon_id="${daemon_id:-0}"
16: "${rundir:=/run/ceph}"
17: "${user:=ceph}"
18: "${group:=ceph}"
19: "${rc_ulimit:=-n 1048576 -u 1048576}"
20
21pidfile="${rundir}/supervisor-${daemon_type}.${daemon_id}.pid"
22daemon_pidfile="${rundir}/${daemon_type}.${daemon_id}.pid"
23
24command="/usr/bin/${RC_SVCNAME%%.*}"
25command_args="-i ${daemon_id} --pid-file ${daemon_pidfile} -c ${ceph_conf}"
26extra_commands="${extra_commands} reload"
27command_args_foreground="--foreground"
28
29retry="${CEPH_TERMTIMEOUT:-TERM/120/KILL/5}"
30start_stop_daemon_args="--user ${user} --group ${group}"
31supervise_daemon_args="--user ${user} --group ${group}"
32
33: "${supervisor:=supervise-daemon}"
34: "${stdout:=/var/log/ceph/ceph}"
35: "${stderr:=/var/log/ceph/ceph}"
36: "${respawn_delay:=10}"
37: "${respawn_max:=5}"
38: "${respawn_period:=1800}"
39
40: "${osd_respawn_delay:=15}"
41: "{osd_respawn_max:=10}"
42
43: "{radosgw_respawn_max:=5}"
44: "${radosgw_respawn_period:=30}"
45
46depend() {
47 use dns logger
48 after net ntpd ntp-client chronyd
49 before netmount
50}
51
52is_type_valid() {
53 case ${daemon_type} in
54 mon|mds|osd|mgr|radosgw) return 0;;
55 *) return 1;;
56 esac
57}
58
59start_pre() {
60 local log_dir
61 export CEPH_CONF="${ceph_conf}"
62
63 checkpath -d -q -o "${user}:${group}" "${rundir}"
64
65 if ! is_type_valid ;then
66 eerror "Please give valid Ceph Server Type: mds, mon, osd"
67 return 1
68
69 elif pgrep -f "[c]eph-${daemon_type} -i ${daemon_id} "; then
70 eerror "${daemon_type}.${daemon_id} is still running, refusing to start"
71 return 1
72 fi
73
74 if [ -n "${bluestore_osd_fsid}" ]; then
75 einfo "Mounting Bluestore"
76 ceph-volume lvm activate "${daemon_id}" "${bluestore_osd_fsid}" --no-systemd
77 fi
78
79 if [ "${daemon_type}" = radosgw ] && [ "${RADOSGW_WANT_NAME_PARAM}" = y ]; then
80 command_args="${command_args} --name client.${daemon_id}"
81 fi
82
83 local arg_name arg_val repl_arg_name
84 for arg_name in stdout stderr respawn_delay respawn_max respawn_period; do
85 eval arg_val="\${${daemon_type}_${arg_name}}"
86
87 if [ -z "${arg_val}" ]; then
88 eval arg_val="\${${arg_name}}"
89 else
90 eval "${arg_name}=\"${arg_val}\""
91 fi
92
93 if [ "${arg_name}" = "stderr" ] || [ "${arg_name}" = "stdout" ]; then
94 local log_file log_postfix
95 log_postfix=".${daemon_id}-${arg_name}.log"
96 log_file="${arg_val}"
97
98 if [ "${log_file}" != /dev/null ]; then
99 log_file="${log_file}${log_postfix}"
100
101 log_dir="$(dirname "${log_file}")"
102 checkpath -m 0755 -o "${user}:${group}" -d "${log_dir}"
103 fi
104
105 repl_arg_name="$(printf -- "%s\n" "${arg_name}" | tr _ -)"
106 supervise_daemon_args="${supervise_daemon_args} --${repl_arg_name}=${log_file}"
107 fi
108 done
109}
110
111reload() {
112 ebegin "Reloading Ceph ${daemon_type}.${daemon_id}"
113 start-stop-daemon --signal 1 "${start_stop_daemon_args}"
114 eend ${?}
115}
116
117# vim:ft=gentoo-init-d:ts=4:sts=4:sw=4:noet:
118