| 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%-*}" |
| 7 | if [ -r "${_CONFD_FILE}" ]; then |
| 8 | . "${_CONFD_FILE}" || exit 1 |
| 9 | fi |
| 10 | |
| 11 | : "${ceph_conf:=/etc/ceph/ceph.conf}" |
| 12 | daemon_type="${RC_SVCNAME#ceph-}" |
| 13 | daemon_type="${daemon_type%%.*}" |
| 14 | daemon_id="${RC_SVCNAME#ceph-*.}" |
| 15 | daemon_id="${daemon_id:-0}" |
| 16 | : "${rundir:=/run/ceph}" |
| 17 | : "${user:=ceph}" |
| 18 | : "${group:=ceph}" |
| 19 | : "${rc_ulimit:=-n 1048576 -u 1048576}" |
| 20 | |
| 21 | pidfile="${rundir}/supervisor-${daemon_type}.${daemon_id}.pid" |
| 22 | daemon_pidfile="${rundir}/${daemon_type}.${daemon_id}.pid" |
| 23 | |
| 24 | command="/usr/bin/${RC_SVCNAME%%.*}" |
| 25 | command_args="-i ${daemon_id} --pid-file ${daemon_pidfile} -c ${ceph_conf}" |
| 26 | extra_commands="${extra_commands} reload" |
| 27 | command_args_foreground="--foreground" |
| 28 | |
| 29 | retry="${CEPH_TERMTIMEOUT:-TERM/120/KILL/5}" |
| 30 | start_stop_daemon_args="--user ${user} --group ${group}" |
| 31 | supervise_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 | |
| 46 | depend() { |
| 47 | use dns logger |
| 48 | after net ntpd ntp-client chronyd |
| 49 | before netmount |
| 50 | } |
| 51 | |
| 52 | is_type_valid() { |
| 53 | case ${daemon_type} in |
| 54 | mon|mds|osd|mgr|radosgw) return 0;; |
| 55 | *) return 1;; |
| 56 | esac |
| 57 | } |
| 58 | |
| 59 | start_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 | |
| 111 | reload() { |
| 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 | |