#!/sbin/openrc-run
# SPDX-License-Identifier: GPL-3.0-or-later

# The user netdata is configured to run as.
# If you edit its configuration file to set a different
# user, set it here too, to have its files switch ownership
: "${NETDATA_OWNER:=netdata:netdata}"

# The timeout in seconds to wait for netdata
# to save its database on disk and exit.
: "${NETDATA_WAIT_EXIT_TIMEOUT:=60}"

# When set to 1, if netdata does not exit in
# NETDATA_WAIT_EXIT_TIMEOUT, we will force it
# to exit.
: "${NETDATA_FORCE_EXIT:=0}"

# When set to 1, we use netdatacli for reload/rotate/save commands instead of s-s-d.
: "${NETDATA_USE_NETDATACLI:=0}"

# Specifies the pidfile to use when running in the background.
: "${NETDATA_PIDFILE:=/var/run/netdata/netdata.pid}"

extra_started_commands="reload rotate save"
command_prefix="/usr/bin"
command="${command_prefix}/netdata"
command_args="-P ${NETDATA_PIDFILE} ${NETDATA_EXTRA_ARGS}"
command_args_foreground="-D"
start_stop_daemon_args="-u ${NETDATA_OWNER}"
if [ "${NETDATA_FORCE_EXIT}" -eq 1 ]; then
    retry="TERM/${NETDATA_WAIT_EXIT_TIMEOUT}/KILL/1"
else
    retry="TERM/${NETDATA_WAIT_EXIT_TIMEOUT}"
fi

depend() {
    use logger
    need net
    after apache2 squid nginx mysql named opensips upsd hostapd postfix lm_sensors
}

start_pre() {
    checkpath -o ${NETDATA_OWNER} -d /var/cache/netdata /var/run/netdata

    if [ -z "${supervisor}" ]; then
        pidfile="${NETDATA_PIDFILE}"
    fi
}

run_cmd() {
    cmd="${1}"
    msg="${2}"
    failmsg="${3}"
    signal="${4}"

    ebegin "${msg}"
    if [ "${NETDATA_USE_NETDATACLI}" = 1 ]; then
        "${command_prefix}/netdatacli" "${cmd}" >/dev/null
        eend $? "${failmsg}"
    elif [ "${supervisor}" = "supervise-daemon" ]; then
        supervise-daemon "${RC_SVCNAME}" --signal "${signal}"
        eend $? "${failmsg}"
    else
        start-stop-daemon --signal "${signal}" --pidfile "${pidfile}"
        eend $? "${failmsg}"
    fi
}

reload() {
    run_cmd reload-health \
            "Reloading Netdata health configuration" \
            "Failed to reload Netdata health configuration" \
            SIGUSR2
}

rotate() {
    run_cmd reopen-logs \
            "Reopening Netdata log files" \
            "Failed to reopen Netdata log files" \
            SIGHUP
}

save() {
    run_cmd save-database \
            "Saving Netdata database" \
            "Failed to save Netdata database" \
            SIGUSR1
}
