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

NETDATA_OWNER="@netdata_user_POST@:@netdata_user_POST@"
NETDATA_PIDFILE="@localstatedir_POST@/run/netdata/netdata.pid"

description="Run the Netdata system monitoring agent."

extra_started_commands="reload rotate save"
description_reload="Reload health configuration."
description_rotate="Reopen log files."
description_save="Force sync of database to disk."

command_prefix="@sbindir_POST@"
command="${command_prefix}/netdata"
command_args="-P ${NETDATA_PIDFILE} ${NETDATA_EXTRA_ARGS}"
command_args_foreground="-D"
start_stop_daemon_args="-u ${NETDATA_OWNER}"

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

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

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

stop_pre() {
    if [ "0${NETDATA_FORCE_EXIT}" -eq 1 ]; then
        retry="TERM/${NETDATA_WAIT_EXIT_TIMEOUT:-60}/KILL/1"
    else
        retry="TERM/${NETDATA_WAIT_EXIT_TIMEOUT:-60}"
    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
}
