Blame SOURCES/IPaddr2-monitor_retries.patch

b4b3ce
diff -uNr a/heartbeat/IPaddr2 b/heartbeat/IPaddr2
b4b3ce
--- a/heartbeat/IPaddr2	2018-06-27 10:29:08.000000000 +0200
b4b3ce
+++ b/heartbeat/IPaddr2	2018-06-29 16:01:50.538797379 +0200
b4b3ce
@@ -80,6 +80,7 @@
b4b3ce
 OCF_RESKEY_arp_bg_default=true
b4b3ce
 OCF_RESKEY_run_arping_default=false
b4b3ce
 OCF_RESKEY_preferred_lft_default="forever"
b4b3ce
+OCF_RESKEY_monitor_retries="1"
b4b3ce
 
b4b3ce
 : ${OCF_RESKEY_lvs_support=${OCF_RESKEY_lvs_support_default}}
b4b3ce
 : ${OCF_RESKEY_lvs_ipv6_addrlabel=${OCF_RESKEY_lvs_ipv6_addrlabel_default}}
b4b3ce
@@ -92,6 +93,7 @@
b4b3ce
 : ${OCF_RESKEY_arp_bg=${OCF_RESKEY_arp_bg_default}}
b4b3ce
 : ${OCF_RESKEY_run_arping=${OCF_RESKEY_run_arping_default}}
b4b3ce
 : ${OCF_RESKEY_preferred_lft=${OCF_RESKEY_preferred_lft_default}}
b4b3ce
+: ${OCF_RESKEY_monitor_retries=${OCF_RESKEY_monitor_retries_default}}
b4b3ce
 #######################################################################
b4b3ce
 
b4b3ce
 SENDARP=$HA_BIN/send_arp
b4b3ce
@@ -368,6 +370,18 @@
b4b3ce
 <content type="string" default="${OCF_RESKEY_preferred_lft_default}"/>
b4b3ce
 </parameter>
b4b3ce
 
b4b3ce
+<parameter name="monitor_retries">
b4b3ce
+<longdesc lang="en">
b4b3ce
+Set number of retries to find interface in monitor-action.
b4b3ce
+
b4b3ce
+ONLY INCREASE IF THE AGENT HAS ISSUES FINDING YOUR NIC DURING THE
b4b3ce
+MONITOR-ACTION. A HIGHER SETTING MAY LEAD TO DELAYS IN DETECTING
b4b3ce
+A FAILURE.
b4b3ce
+</longdesc>
b4b3ce
+<shortdesc lang="en">Number of retries to find interface in monitor-action</shortdesc>
b4b3ce
+<content type="string" default="${OCF_RESKEY_monitor_retries_default}"/>
b4b3ce
+</parameter>
b4b3ce
+
b4b3ce
 </parameters>
b4b3ce
 <actions>
b4b3ce
 <action name="start"   timeout="20s" />
b4b3ce
@@ -536,15 +550,26 @@
b4b3ce
 find_interface() {
b4b3ce
 	local ipaddr="$1"
b4b3ce
 	local netmask="$2"
b4b3ce
+	local iface=""
b4b3ce
 
b4b3ce
 	#
b4b3ce
 	# List interfaces but exclude FreeS/WAN ipsecN virtual interfaces
b4b3ce
 	#
b4b3ce
-	local iface="`$IP2UTIL -o -f $FAMILY addr show \
b4b3ce
+	for i in $(seq 1 $OCF_RESKEY_monitor_retries); do
b4b3ce
+	    iface="`$IP2UTIL -o -f $FAMILY addr show \
b4b3ce
 		| grep "\ $ipaddr/$netmask" \
b4b3ce
 		| cut -d ' ' -f2 \
b4b3ce
 		| grep -v '^ipsec[0-9][0-9]*$'`"
b4b3ce
 
b4b3ce
+	    if [ -n "$iface" ]; then
b4b3ce
+		    break
b4b3ce
+	    fi
b4b3ce
+
b4b3ce
+	    if [ $OCF_RESKEY_monitor_retries -gt 1 ]; then
b4b3ce
+		sleep 1
b4b3ce
+	    fi
b4b3ce
+	done
b4b3ce
+
b4b3ce
 	echo "$iface"
b4b3ce
 	return 0
b4b3ce
 }