fence_kdump is configured in generic cluster if:
1) /usr/libexec/fence_kdump_send exists and is executable
2) /etc/sysconfig/fence_kdump_nodes exists
Signed-off-by: Martin Perina <mperina(a)redhat.com>
---
dracut-module-setup.sh | 31 ++++++++++++++++++++-----------
kdump-lib.sh | 7 +++++++
kdumpctl | 4 ++++
3 files changed, 31 insertions(+), 11 deletions(-)
diff --git a/dracut-module-setup.sh b/dracut-module-setup.sh
index 21df7fc..3c6ba52 100755
--- a/dracut-module-setup.sh
+++ b/dracut-module-setup.sh
@@ -20,7 +20,7 @@ depends() {
_dep="$_dep drm"
fi
- if is_pcs_fence_kdump; then
+ if [ is_pcs_fence_kdump -o is_generic_fence_kdump ]; then
_dep="$_dep network"
fi
@@ -434,18 +434,27 @@ get_list_of_nodes_to_notify() {
# also preserve '[node list]' for 2nd kerneli in $FENCE_KDUMP_NODES
kdump_check_fence_kdump () {
local nodes
- is_pcs_fence_kdump || return 1
- # get cluster nodes from cluster cib, get interface and ip address
- nodelist=`pcs cluster cib | xmllint --xpath "/cib/status/node_state/@uname"
-`
+ if is_pcs_fence_kdump; then
+ # get cluster nodes from cluster cib, get interface and ip address
+ nodelist=`pcs cluster cib | xmllint --xpath
"/cib/status/node_state/@uname" -`
+
+ # nodelist is formed as 'uname="node1" uname="node2" ...
uname="nodeX"'
+ # we need to convert each to node1, node2 ... nodeX in each iteration
+ for node in ${nodelist}; do
+ # convert $node from 'uname="nodeX"' to 'nodeX'
+ eval $node
+ nodes="$nodes $uname"
+ done
- # nodelist is formed as 'uname="node1" uname="node2" ...
uname="nodeX"'
- # we need to convert each to node1, node2 ... nodeX in each iteration
- for node in ${nodelist}; do
- # convert $node from 'uname="nodeX"' to 'nodeX'
- eval $node
- nodes="$nodes $uname"
- done
+ elif is_generic_fence_kdump; then
+ # fence_kdump is configured manually
+ read nodes < $FENCE_KDUMP_NODES
+
+ else
+ # fence kdump is not configured
+ return 1
+ fi
nodes=$( get_list_of_nodes_to_notify "$nodes" )
diff --git a/kdump-lib.sh b/kdump-lib.sh
index f727e9f..89006a6 100755
--- a/kdump-lib.sh
+++ b/kdump-lib.sh
@@ -39,6 +39,13 @@ is_pcs_fence_kdump()
(pcs cluster cib | grep -q 'type="fence_kdump"') &>
/dev/null || return 1
}
+# Check if fence_kdump is configured in generic cluster
+is_generic_fence_kdump()
+{
+ [ -x $FENCE_KDUMP_SEND ] || return 1
+ [ -f $FENCE_KDUMP_NODES ] || return 1
+}
+
get_user_configured_dump_disk()
{
local _target
diff --git a/kdumpctl b/kdumpctl
index 2199c0c..f1f5e4f 100755
--- a/kdumpctl
+++ b/kdumpctl
@@ -253,6 +253,10 @@ function check_rebuild()
files="$files $FENCE_KDUMP_CONFIG"
fi
+ if is_generic_fence_kdump; then
+ files="$files $FENCE_KDUMP_NODES"
+ fi
+
check_exist "$files" && check_executable "$EXTRA_BINS"
[ $? -ne 0 ] && return 1
--
1.8.3.1