summaryrefslogtreecommitdiff
path: root/bin
diff options
authorPMR <pmr@pmr-lander>2020-02-21 21:20:41 +0000
committerPMR <pmr@pmr-lander>2020-02-21 21:20:41 +0000
commit63b2f42f1340792de61d815be8c7fe7ab99cac47 (patch)
tree8f77e685addf999b65e38fa38294c413f5d0972e /bin
parent763cb930af9f2ab9c68e0aab63500cee5cc787f3 (diff)
parentfa02f252d18b700247eede9ea78baf2f8792ed13 (diff)
Merge #379584 from ~alanec/plainbox-provider-checkbox:update-ipmi-tests
Converted bin/ipmi_test use FreeIPMI. Added checks for IPMI version + ipmi-locate. Enhanced output readability.
Diffstat (limited to 'bin')
-rwxr-xr-xbin/ipmi_test61
1 files changed, 43 insertions, 18 deletions
diff --git a/bin/ipmi_test b/bin/ipmi_test
index 12ca42c..74a320b 100755
--- a/bin/ipmi_test
+++ b/bin/ipmi_test
@@ -1,6 +1,8 @@
#!/bin/bash
# Now make sure the modules are loaded
+
+echo '---------------------------------' && echo 'Verifying kernel modules:' && echo
for module in ipmi_si ipmi_devintf ipmi_powernv ipmi_ssif ipmi_msghandler; do
if lsmod |grep -q $module; then
echo "$module already loaded"
@@ -23,37 +25,60 @@ for module in ipmi_si ipmi_devintf ipmi_powernv ipmi_ssif ipmi_msghandler; do
fi
done
-# Now get our info from ipmitool to make sure communication works
-# First lest check chassis status
-echo
-echo "Checking for chassis status"
-ipmitool chassis status && echo "Successfully got chassis status" && chassis=0 || chassis=1
-echo "Checking to see if we can get power status"
-ipmitool power status && echo "Successfully got power status" && power=0 || power=1
+# Now get our info from FreeIPMI to make sure communication works
+# First lets check chassis status
+
+echo '---------------------------------' && echo "Fetching chassis status:" && echo
+(ipmi-chassis --get-status) && echo && echo "Successfully fetched chassis status..." && chassis=0 \
+ || chassis=1
+
+
+echo '---------------------------------' && echo "Fetching power status:" && echo
+(ipmi-chassis --get-status | grep 'System Power') && echo \
+ && echo "Successfully fetched power status.." && power=0 || power=1
-echo "Checking to see if we can get user data"
+
+echo '---------------------------------' && echo "Fetching IPMI channel user data:" && echo
# LP:1794926 Find the active channel. blindly calling user list sometimes
# fails.
channel=99
for x in 0 1 2 3 4 5 6 7 8 9 10 11 14 15; do
- if ipmitool channel getaccess $x 2>1 >/dev/null; then
+ if !(ipmi-config --checkout --lan-channel-number $x 2>&1 >/dev/null | grep -q '^Unable to get Number of Users$'); then
channel=$x
- echo "Channel in use appears to be $channel"
+ echo "IPMI channel: $channel" && echo
break
fi
done
-if [ $channel -lt 99 ]; then
- ipmitool user list $channel && echo "Successfully got user data" && user=0 || user=1
-else
- user=1
-fi
-echo "Checking to see if we can get info on the BMC"
-ipmitool bmc info && echo "Successfully got BMC information" && bmc=0 || bmc=1
+# Extrapolate user list from general IPMI function
+(ipmi-config --checkout --category=core | grep -A 19 "User[0-9]*.$" | sed '/#/d' | grep -v "Section$" | sed 's/Section //') \
+ && echo && echo "Successfully fetched IPMI channel & user data..." && user=0 || user=1
+
+
+echo '---------------------------------' && echo "Fetching BMC information and checking IPMI version:" && echo
+bmc-info && echo && echo "Successfully called BMC-info..." && echo && bmc=0 || bmc=1
+
+version=$(bmc-info | awk '/IPMI Version/ {print $4}')
+echo "IPMI Version: $version" && echo
+# parse major from ipmi version
+version=$(echo $version| cut -d'.' -f1)
+# can refactor to evaluate in final check function
+if [ $version -lt 2 ]; then
+ ipmiV=1 && echo "IPMI version below 2.0..."
+ else
+ ipmiV=0 && echo "IPMI version OK..."
+ fi
+
+
+echo '---------------------------------' && echo "Calling IPMI-locate" && echo
+(ipmi-locate) && echo "Successfully called ipmi-locate..." && ipmiL=0 || ipmiL=1
+
# if everything passes, exit 0
-[ $chassis -eq 0 ] && [ $power -eq 0 ] && [ $user -eq 0 ] && [ $bmc -eq 0 ] && exit 0 || echo "FAILURE: chassis: $chassis power: $power user: $user bmc: $bmc"
+[ $chassis -eq 0 ] && [ $power -eq 0 ] && [ $user -eq 0 ] && [ $bmc -eq 0 ] && [ $ipmiV -eq 0 ] && [ $ipmiL -eq 0 ] \
+ && echo "## IPMI checks succeeded. ##" && echo && exit 0 \
+ || echo "## FAILURE: chassis: $chassis power: $power user: $user bmc: $bmc ipmi_version: $ipmiV ipmi_locate: $ipmiL ##"
# otherwise exit 1
exit 1