[PATCH 1/2] crm-fence-peer.9.sh: fix parsing in_ccm crmd fields of node_state with Pacemaker 2.1.7

Su Yue <[email protected]>
Newsgroups dev.linux.lists.drbd-dev
Message-ID <[email protected]>
From: Su Yue <[email protected]>

If pacemaker version < 2.1.7, in_ccm of node_state is "true" or "false"
and crmd is "online" or "offline".

pacemaker 2.1.7 changed the two fields into timestamps.
For in_ccm, the value is timestamp since when node has been a cluster
member("true"). A value 0 of means the node is not a cluster member("false").
For crmd, the value is timestamp since when peer has been online in
CPG("online"). A value 0 means the peer is offline in CPG("offline").

The original code doesn't handle these fields in timestamp format.
Since there are many comprare of strings in context, converting in_ccm and crmd
from timestamps/0 to old strings is simpler and clearer.

Link: https://github.com/ClusterLabs/pacemaker/blob/Pacemaker-2.1.7/lib/pengine/unpack.c#L1581
Signed-off-by: Su Yue <[email protected]>
---
 scripts/crm-fence-peer.9.sh | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/scripts/crm-fence-peer.9.sh b/scripts/crm-fence-peer.9.sh
index 44da6516bf3f..a3353a7354a6 100755
--- a/scripts/crm-fence-peer.9.sh
+++ b/scripts/crm-fence-peer.9.sh
@@ -888,6 +888,31 @@ guess_if_pacemaker_will_fence()
 		esac
 	done
 
+	# Copied from pacemaker-2.1.7:lib/pengine/unpack.c:
+	# Since crm_feature_set 3.18.0 (pacemaker-2.1.7):
+	#
+	# - in_ccm		::= <timestamp>|0
+	# Since when node has been a cluster member. A value 0 of means the
+	# node is not a cluster member.
+	# - crmd		::= <timestamp>|0
+	# Since when peer has been online in CPG. A value 0 means the peer
+	# is offline in CPG.
+	if [[ $in_ccm =~ ^[0-9]+$ ]]; then
+		if [[ $in_ccm = "0" ]]; then
+			in_ccm="false"
+		else
+			in_ccm="true"
+		fi
+	fi
+
+	if [[ $crmd =~ ^[0-9]+$ ]]; then
+		if [[ $crmd = "0" ]]; then
+			crmd="offline"
+		else
+			crmd="online"
+		fi
+	fi
+
 	# if it is not enabled, no point in waiting for it.
 	if ! $stonith_enabled ; then
 		# "normalize" the rest of the logic
-- 
2.44.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.