From c3cee871b4b3f17447f1ddfd609ab5b12f5bfcb4 Mon Sep 17 00:00:00 2001
From: Per Cederqvist <cederp@opera.com>
Date: Thu, 12 Dec 2024 11:59:32 +0100
Subject: [PATCH] Simplify check_lysrdiff

---
 check_lysrdiff | 84 ++++++++++++++++++++++++++------------------------
 1 file changed, 43 insertions(+), 41 deletions(-)

diff --git a/check_lysrdiff b/check_lysrdiff
index 86283a2..0405ef7 100755
--- a/check_lysrdiff
+++ b/check_lysrdiff
@@ -107,58 +107,60 @@ ACTIVITY=`wc -l < $state-active`
 
 PERF="activity=$ACTIVITY stale=$STALE failed=$FAILED"
 
-if [ $FAILED -gt 10 ]
-then
-  echo -n "CRITICAL - $FAILED failed backups"
-  if [ $STALE -gt 0 ]
-  then
-      echo -n " (also $STALE stale)"
-  fi
-  echo -n ": "
-  sed -n 's/--fail$//p' $state | list_jobs
-  echo ". | $PERF"
-  exit 2
-fi
+worst=0
+state_word=OK
+message=""
 
-if [ $STALE -gt 10 ]
-then
-  echo -n "CRITICAL - $STALE stale backups"
-  if [ $FAILED -gt 0 ]
-  then
-      echo -n " (also $FAILED failed)"
-  fi
-  ( sed -n 's/--fail$//p' $state; sed 's/--start$//' $state-stale; ) \
-    | list_jobs
-  echo ". | $PERF"
-  exit 2
-fi
+set_state()
+{
+    if [ $1 -gt $worst ]
+    then
+	worst=$1
+	state_word=$2
+    fi
+
+    if [ -n "$3" ]
+    then
+	if [ -z "$message" ]
+	then
+	    message="$3"
+	else
+	    message="$message $3"
+	fi
+    fi
+}
 
 if [ $FAILED -gt 0 ]
 then
-  echo -n "WARNING - $FAILED failed backups"
-  if [ $STALE -gt 0 ]
-  then
-      echo -n " (also $STALE stale)"
-  fi
-  echo -n ": "
-  sed -n 's/--fail$//p' $state | list_jobs
-  echo ". | $PERF"
-  exit 1
+    msg="$FAILED failed backups: `sed -n 's/--fail$//p' $state | list_jobs`."
+    if [ $FAILED -gt 10 ]
+    then
+	set_state 2 CRITICAL "$msg"
+    else
+	set_state 1 WARNING "$msg"
+    fi
 fi
 
 if [ $STALE -gt 0 ]
 then
-  echo -n "WARNING - $STALE stale backups: "
-  sed 's/--start$//' $state-stale | list_jobs
-  echo ". | $PERF"
-  exit 1
+    msg="$STALE stale backups: `sed 's/--start$//' $state-stale | list_jobs`."
+    if [ $STALE -gt 10 ]
+    then
+	set_state 2 CRITICAL "$msg"
+    else
+	set_state 1 WARNING "$msg"
+    fi
 fi
 
 if [ $ACTIVITY = 0 ]
 then
-  echo "WARNING - No activity. | $PERF"
-  exit 1
+  set_state 1 WARNING "No activity."
+fi
+
+if [ -z "$message" ]
+then
+    set_state 0 OK "all ok."
 fi
 
-echo "OK - all ok. | $PERF"
-exit 0
+echo "$state_word - $message | $PERF"
+exit $worst
-- 
GitLab