diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 07:52:36 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 07:52:36 +0000 |
commit | 7de03e4e519705301265c0415b3c0af85263a7ac (patch) | |
tree | 29d819c5227e3619d18a67d2a5dde963b3229dbe /heartbeat/AudibleAlarm | |
parent | Initial commit. (diff) | |
download | resource-agents-7de03e4e519705301265c0415b3c0af85263a7ac.tar.xz resource-agents-7de03e4e519705301265c0415b3c0af85263a7ac.zip |
Adding upstream version 1:4.13.0.upstream/1%4.13.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'heartbeat/AudibleAlarm')
-rwxr-xr-x | heartbeat/AudibleAlarm | 188 |
1 files changed, 188 insertions, 0 deletions
diff --git a/heartbeat/AudibleAlarm b/heartbeat/AudibleAlarm new file mode 100755 index 0000000..44a3088 --- /dev/null +++ b/heartbeat/AudibleAlarm @@ -0,0 +1,188 @@ +#!/bin/sh +# +# Startup script for the Audible Alarm +# +# author: Kirk Lawson <lklawson@heapy.com> +# Horms <horms@vergenet.net> +# +# description: sets an audible alarm running by beeping at a set interval +# processname: alarm +# config: /etc/AudibleAlarm/AudibleAlarm.conf - not yet implemented +# +# OCF parameters are as below: +# OCF_RESKEY_nodelist +# +# License: GNU General Public License (GPL) + +####################################################################### +# Source function library. +: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat} +. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs + +####################################################################### +PIDFILE=${HA_VARRUN}/heartbeat-bell +#For testing +#PIDFILE=/tmp/heartbeat-bell + +# What host are we running on? +us=`uname -n` + +usage() { + echo "Usage: $0 {start|stop|restart|status|monitor|meta-data|validate-all}" + echo " The node list is an optional space delimited" + echo " list of hosts that should never sound the alarm." +} + +meta_data() { + cat <<END +<?xml version="1.0"?> +<!DOCTYPE resource-agent SYSTEM "ra-api-1.dtd"> +<resource-agent name="AudibleAlarm" version="1.0"> +<version>1.0</version> + +<longdesc lang="en"> +Resource script for AudibleAlarm. It sets an audible alarm running by beeping +at a set interval. +</longdesc> +<shortdesc lang="en">Emits audible beeps at a configurable interval</shortdesc> + +<parameters> +<parameter name="nodelist" unique="0"> +<longdesc lang="en"> +The node list that should never sound the alarm. +</longdesc> +<shortdesc lang="en">Node list</shortdesc> +<content type="string" default="" /> +</parameter> +</parameters> + +<actions> +<action name="start" timeout="10s" /> +<action name="stop" timeout="10s" /> +<action name="restart" timeout="10s" /> +<action name="status" depth="0" timeout="10s" interval="10s" /> +<action name="monitor" depth="0" timeout="10s" interval="10s" /> +<action name="meta-data" timeout="5s" /> +<action name="validate-all" timeout="5s" /> +</actions> +</resource-agent> +END +} + +audiblealarm_start () { + ocf_log info "$0: Starting" + if [ -f $PIDFILE ]; then + PID=`head -n 1 $PIDFILE` + if [ -n "$PID" ]; then + ocf_log info "$0: Appears to already be running, killing [$PID]" + kill $PID > /dev/null + fi + fi + # Use () to create a subshell to make the redirection be synchronized. + ( while [ 1 ]; do + sleep 1 #Sleep first, incase we bail out + printf "\a" > /dev/console + # Uncomment this line to cause floppy drive light + # to flash (requires fdutils package). + # /usr/bin/floppycontrol --pollstate > /dev/null + # + # To avoid issues when called by lrmd, redirect stdout->stderr. + done & + if echo $! > $PIDFILE; then + : + else + ocf_log info "$0: Could not write to pid file \"$PIDFILE\", bailing" + kill $! + return $OCF_ERR_GENERIC + fi) >&2 + + return $? +} + +audiblealarm_stop () { + ocf_log info "$0: Shutting down" + if [ -f $PIDFILE ]; then + PID=`head -n 1 $PIDFILE` + # ocf_log info "$0: Appears to already be running, killing [$PID]" + # commented by Phost, since the confusion in the log. + + if [ -n "$PID" ]; then + # Donnot remove PIDFILE in case the `kill` fails. + kill $PID > /dev/null && rm -f $PIDFILE + fi + fi + + return $? +} + +audiblealarm_restart () { + audiblealarm_stop + audiblealarm_start + + return $? +} + +audiblealarm_status () { + if [ -f $PIDFILE ]; then + PID=`head -n 1 $PIDFILE` + if [ -n "$PID" ]; then + echo running + return $OCF_SUCCESS + fi + fi + + echo stopped + return $OCF_NOT_RUNNING +} + +audiblealarm_validate_all () { + check_binary printf + + echo "Validate OK" + return $OCF_SUCCESS +} +if [ $# -ne 1 ]; then + usage + exit $OCF_ERR_ARGS +fi + +case "$1" in + meta-data) + meta_data + exit $OCF_SUCCESS + ;; + start) + for arg in $OCF_RESKEY_nodelist + do + if [ "$us" = "$arg" ]; then + # We should not start because we are on a host + # listed in our argument list. + exit $OCF_SUCCESS + fi + done + audiblealarm_start + ;; + stop) + audiblealarm_stop + ;; + restart) + audiblealarm_restart + ;; + status|monitor) + audiblealarm_status + ;; + validate-all) + audiblealarm_validate_all + ;; + usage) + usage + exit $OCF_SUCCESS + ;; + + *) + usage + exit $OCF_ERR_ARGS + ;; +esac + +exit $? |