diff --git a/extra/resources/pingd b/extra/resources/pingd index 77617ce3ed..6e50e906b4 100755 --- a/extra/resources/pingd +++ b/extra/resources/pingd @@ -1,189 +1,185 @@ #!/bin/sh # # ocf:pacemaker:pingd resource agent # # Copyright 2006-2019 the Pacemaker project contributors # # The version control history for this file may have further details. # # This source code is licensed under the GNU General Public License version 2 # (GPLv2) WITHOUT ANY WARRANTY. # # # Records (in the CIB) the current number of ping nodes a cluster node can # connect to. # ####################################################################### # Initialization: : ${OCF_FUNCTIONS:="${OCF_ROOT}/resource.d/heartbeat/.ocf-shellfuncs"} . "${OCF_FUNCTIONS}" : ${__OCF_ACTION:="$1"} : ${OCF_RESKEY_name:="pingd"} : ${OCF_RESKEY_interval:="1"} : ${OCF_RESKEY_CRM_meta_interval:=0} -upgrade1="This agent (ocf:pacemaker:pingd) has been replaced by the more reliable ocf:pacemaker:ping." -upgrade2="Attempting automated conversion, run 'crm ra info ocf:pacemaker:ping' for all configuration options" -upgrade3="You will need to remove the existing resource and replace it with one that uses 'ocf:pacemaker:ping' directly" +ocf_log err "This agent (ocf:pacemaker:pingd) is deprecated, does not work, and" +ocf_log err "will be removed in a future release (use ocf:pacemaker:ping instead)" case "$__OCF_ACTION" in start|monitor) + # BUG: The sense of this test is reversed. Rather than fix it now, we + # will formally deprecate the agent and remove it in a future release. if [ -n "$OCF_RESKEY_host_list" ]; then - ocf_log err "$upgrade1" - ocf_log err "$upgrade2" ocf_log err "Automatic conversion to ocf:pacemaker:ping failed: no hosts were configured to check for connectivity" - ocf_log err "$upgrade3" exit $OCF_ERR_ARGS fi recurring=$(crm configure show "$OCF_RESOURCE_INSTANCE" | grep "op monitor.*interval=\"[1-9]" | sed s/.*interval=// | awk -F\" '{print $2}' | sed s/.*interval=// | awk -F\" '{print $2}' | sort | head -n 1) if [ -z "$recurring" ]; then - ocf_log err "$upgrade1" - ocf_log err "$upgrade2" ocf_log err "Automatic conversion to ocf:pacemaker:ping failed: no monitor operation configured" ocf_log err "Without an explicit monitor operation for '$OCF_RESOURCE_INSTANCE', connectivity changes will not be noticed" ocf_log err "Preventing startup to ensure the issue is addressed before it matters" exit $OCF_ERR_ARGS fi if [ $OCF_RESKEY_CRM_meta_interval -eq 0 ]; then - ocf_log warn "$upgrade1" - ocf_log warn "$upgrade2" if [ $recurring -ne $OCF_RESKEY_interval ]; then ocf_log warn "Your monitor operation happens every $recurring, which means that the $OCF_RESKEY_name attribute will be updated with a different frequency than the previously configured ( $OCF_RESKEY_interval )" ocf_log warn "Either change the monitor interval to match or, ideally, switch to the ocf:pacemaker:ping agent and avoid all this compatibility nonsense." fi fi ;; meta-data) cat <<END <?xml version="1.0"?> <!DOCTYPE resource-agent SYSTEM "ra-api-1.dtd"> <resource-agent name="pingd" version="1.0"> <version>1.0</version> <longdesc lang="en"> -This agent (ocf:pacemaker:pingd) has been replaced by the more reliable ocf:pacemaker:ping. -It records (in the CIB) the current number of ping nodes (specified in the 'host_list' parameter) a cluster node can connect to. +This agent (ocf:pacemaker:pingd) is deprecated and broken, and has been +replaced by the more reliable ocf:pacemaker:ping. It records (in the CIB) +the current number of ping nodes (specified in the 'host_list' parameter) +a cluster node can connect to. </longdesc> <shortdesc lang="en">pingd resource agent</shortdesc> <parameters> <parameter name="pidfile" unique="0"> <longdesc lang="en">PID file</longdesc> <shortdesc lang="en">PID file</shortdesc> <content type="string" default="${HA_VARRUN%%1}/pingd-${OCF_RESOURCE_INSTANCE}" /> </parameter> <parameter name="user" unique="0"> <longdesc lang="en"> The user we want to run pingd as </longdesc> <shortdesc lang="en">The user we want to run pingd as</shortdesc> <content type="string" default="root" /> </parameter> <parameter name="dampen" unique="0"> <longdesc lang="en"> The time to wait (dampening) further changes occur </longdesc> <shortdesc lang="en">Dampening interval</shortdesc> <content type="integer" default="5s"/> </parameter> <parameter name="set" unique="0"> <longdesc lang="en"> The name of the instance_attributes set to place the value in. Rarely needs to be specified. </longdesc> <shortdesc lang="en">Set name</shortdesc> <content type="string" default=""/> </parameter> <parameter name="name" unique="0"> <longdesc lang="en"> The name of the attributes to set. This is the name to be used in the constraints. </longdesc> <shortdesc lang="en">Attribute name</shortdesc> <content type="string" default="pingd"/> </parameter> <parameter name="section" unique="0"> <longdesc lang="en"> The section place the value in. Rarely needs to be specified. </longdesc> <shortdesc lang="en">Section name</shortdesc> <content type="string" default=""/> </parameter> <parameter name="multiplier" unique="0"> <longdesc lang="en"> The number by which to multiply the number of connected ping nodes by </longdesc> <shortdesc lang="en">Value multiplier</shortdesc> <content type="integer" default=""/> </parameter> <parameter name="host_list" unique="0"> <longdesc lang="en"> The list of ping nodes to count. Defaults to all configured ping nodes. Rarely needs to be specified. </longdesc> <shortdesc lang="en">Host list</shortdesc> <content type="string" default=""/> </parameter> <parameter name="interval" unique="0"> <longdesc lang="en"> How often, in seconds, to check for node liveliness </longdesc> <shortdesc lang="en">ping interval in seconds</shortdesc> <content type="integer" default="1"/> </parameter> <parameter name="attempts" unique="0"> <longdesc lang="en"> Number of ping attempts, per host, before declaring it dead </longdesc> <shortdesc lang="en">no. of ping attempts</shortdesc> <content type="integer" default="2"/> </parameter> <parameter name="timeout" unique="0"> <longdesc lang="en"> How long, in seconds, to wait before declaring a ping lost </longdesc> <shortdesc lang="en">ping timeout in seconds</shortdesc> <content type="integer" default="2"/> </parameter> <parameter name="options" unique="0"> <longdesc lang="en"> A catch all for any other options that need to be passed to pingd. </longdesc> <shortdesc lang="en">Extra Options</shortdesc> <content type="string" default=""/> </parameter> </parameters> <actions> <action name="start" timeout="90s" /> <action name="stop" timeout="100s" /> <action name="monitor" depth="0" timeout="20s" interval="10s" start-delay="1m" /> <action name="meta-data" timeout="5s" /> <action name="validate-all" timeout="30s" /> </actions> </resource-agent> END exit $OCF_SUCCESS ;; esac "${OCF_ROOT}/resource.d/pacemaker/ping" "$1" exit $? # vim: set filetype=sh expandtab tabstop=4 softtabstop=4 shiftwidth=4 textwidth=80: