You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.1 KiB
87 lines
2.1 KiB
#!/sbin/openrc-run
|
|
|
|
ceph_conf="${ceph_conf:-/etc/ceph/ceph.conf}"
|
|
extra_commands="reload"
|
|
daemon_type="${RC_SVCNAME#ceph-}"
|
|
daemon_type="${daemon_type%%.*}"
|
|
daemon_id="${RC_SVCNAME#ceph-*.}"
|
|
daemon_id="${daemon_id:-0}"
|
|
: ${rundir:=/run/ceph}
|
|
: ${user:=ceph}
|
|
: ${group:=ceph}
|
|
: ${rc_ulimit:=-n 1048576 -u 1048576}
|
|
|
|
pidfile="${rundir}/supervisor-${daemon_type}.${daemon_id}.pid"
|
|
daemon_pidfile="${rundir}/${daemon_type}.${daemon_id}.pid"
|
|
|
|
command="/usr/bin/${RC_SVCNAME%%.*}"
|
|
command_args="-i ${daemon_id} --pid-file ${daemon_pidfile} -c ${ceph_conf}"
|
|
command_args_foreground="--foreground"
|
|
|
|
retry="${CEPH_TERMTIMEOUT:-TERM/120/KILL/5}"
|
|
start_stop_daemon_args="--user ${user} --group ${group}"
|
|
supervise_daemon_args="--user ${user} --group ${group}"
|
|
|
|
: ${supervisor:=supervise-daemon}
|
|
: ${stdout:=/var/log/ceph/ceph}
|
|
: ${stderr:=/var/log/ceph/ceph}
|
|
: ${respawn_delay:=10}
|
|
: ${respawn_max:=5}
|
|
: ${respawn_period:=1800}
|
|
|
|
: ${osd_respawn_delay:=15}
|
|
: ${osd_respawn_max:=10}
|
|
|
|
: ${radosgw_respawn_max:=5}
|
|
: ${radosgw_respawn_period:=30}
|
|
|
|
depend() {
|
|
use dns logger
|
|
after net ntpd ntp-client chronyd
|
|
before netmount
|
|
}
|
|
|
|
is_type_valid() {
|
|
case ${daemon_type} in
|
|
mon|mds|osd|mgr|radosgw) return 0;;
|
|
*) return 1;;
|
|
esac
|
|
}
|
|
|
|
start_pre() {
|
|
export CEPH_CONF="${ceph_conf}"
|
|
|
|
checkpath -d -q -o "${user}:${group}" "${rundir}"
|
|
|
|
if ! is_type_valid ;then
|
|
eerror "Please give valid Ceph Server Type: mds, mon, osd"
|
|
return 1
|
|
|
|
elif pgrep -f "[c]eph-${daemon_type} -i ${daemon_id} "; then
|
|
eerror "${daemon_type}.${daemon_id} is still running, refusing to start"
|
|
return 1
|
|
fi
|
|
|
|
local arg_name arg_val
|
|
for arg_name in std{out,err} respawn_{delay,max,period}; do
|
|
eval arg_val="\${${daemon_type}_${arg_name}}"
|
|
|
|
if [ -z "${arg_val}" ]; then
|
|
eval arg_val="\${${arg_name}}"
|
|
else
|
|
eval "${arg_name}=\"${arg_val}\""
|
|
fi
|
|
|
|
if [ "${arg_name}" = "stderr" ] || [ "${arg_name}" = "stdout" ]; then
|
|
supervise_daemon_args="${supervise_daemon_args} --${arg_name//_/-}=${arg_val}.${daemon_id}-${arg_name}.log"
|
|
fi
|
|
done
|
|
}
|
|
|
|
reload() {
|
|
ebegin "Reloading Ceph ${daemon_type}.${daemon_id}"
|
|
start-stop-daemon --signal 1 "${start_stop_daemon_args}"
|
|
eend ${?}
|
|
}
|
|
|
|
# vim:ft=gentoo-init-d:ts=4:sts=4:sw=4:noet:
|