From ec5790e7d930bd3436d67319c5214a7bf64fa164 Mon Sep 17 00:00:00 2001 From: Scott Little Date: Mon, 2 Oct 2017 15:12:25 -0400 Subject: [PATCH 01/13] WRS: Patch1105: filesystem_rmon.patch --- heartbeat/Filesystem | 59 +++++++++++++++++++++++++++++++++++++++++++++++++--- heartbeat/LVM | 58 +++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 110 insertions(+), 7 deletions(-) diff --git a/heartbeat/Filesystem b/heartbeat/Filesystem index d834096..8cd9c6b 100755 --- a/heartbeat/Filesystem +++ b/heartbeat/Filesystem @@ -19,6 +19,7 @@ # OCF_RESKEY_run_fsck # OCF_RESKEY_fast_stop # OCF_RESKEY_force_clones +# OCF_RESKEY_rmon_rsc_name # #OCF_RESKEY_device : name of block device for the filesystem. e.g. /dev/sda1, /dev/md0 # Or a -U or -L option for mount, or an NFS mount specification @@ -30,6 +31,7 @@ #OCF_RESKEY_fast_stop : fast stop: yes(default)/no #OCF_RESKEY_force_clones : allow running the resource as clone. e.g. local xfs mounts # for each brick in a glusterfs setup +#OCF_RESKEY_rmon_rsc_name: resource name to use when notifing RMON # # # This assumes you want to manage a filesystem on a shared (SCSI) bus, @@ -1137,20 +1139,65 @@ if [ "$OP" != "monitor" ]; then ocf_log info "Running $OP for $DEVICE on $MOUNTPOINT" fi +RMON_NOTIFY="/usr/local/bin/rmon_resource_notify" + +rmon_notify() { + local RSC_STATE=$1 TIMEOUT=$2 + + if [ -z "OCF_RESKEY_rmon_rsc_name" ] + then + ocf_log err "No RMON resource name given for $OCF_RESKEY_directory" + return + fi + + if [[ -x $RMON_NOTIFY ]] + then + $RMON_NOTIFY --resource-name $OCF_RESKEY_rmon_rsc_name \ + --resource-state $RSC_STATE \ + --resource-type mount \ + --device $OCF_RESKEY_device \ + --mount-point $OCF_RESKEY_directory \ + --timeout $TIMEOUT \ + >/dev/null 2>&1 + else + ocf_log err "$RMON_NOTIFY not available, failed to execute: \ +$RMON_NOTIFY --resource-name $OCF_RESKEY_rmon_rsc_name \ +--resource-state $RSC_STATE --resource-type mount \ +--device $OCF_RESKEY_device --mount-point $OCF_RESKEY_directory \ +--timeout $TIMEOUT" + fi +} + # These operations do not require the clone checking + OCFS2 # initialization. case $OP in status) Filesystem_status - exit $? + rc=$? + if [ $rc -eq $OCF_SUCCESS ] + then + rmon_notify "enabled" 300 + else + rmon_notify "disabled" 300 + fi + exit $rc ;; monitor) Filesystem_monitor - exit $? + rc=$? + if [ $rc -eq $OCF_SUCCESS ] + then + rmon_notify "enabled" 300 + else + rmon_notify "disabled" 300 + fi + exit $rc ;; validate-all) Filesystem_validate_all exit $? ;; stop) Filesystem_stop - exit $? + rc=$? + rmon_notify "disabled" 300 + exit $rc ;; esac @@ -1199,6 +1246,12 @@ fi case $OP in start) Filesystem_start + rc=$? + if [ $rc -eq $OCF_SUCCESS ] + then + rmon_notify "enabled" 300 + fi + exit $rc ;; notify) Filesystem_notify ;; diff --git a/heartbeat/LVM b/heartbeat/LVM index eae7a91..733d113 100755 --- a/heartbeat/LVM +++ b/heartbeat/LVM @@ -22,6 +22,7 @@ # # OCF parameters are as below: # OCF_RESKEY_volgrpname +# OCF_RESKEY_rmon_rsc_name # ####################################################################### # Initialization: @@ -711,6 +712,34 @@ then exit $OCF_ERR_CONFIGURED fi +RMON_NOTIFY="/usr/local/bin/rmon_resource_notify" + +rmon_notify() { + local RSC_STATE=$1 TIMEOUT=$2 + + if [ -z "OCF_RESKEY_rmon_rsc_name" ] + then + ocf_log err "No RMON resource name given for $OCF_RESKEY_volgrpname" + return + fi + + if [[ -x $RMON_NOTIFY ]] + then + $RMON_NOTIFY --resource-name $OCF_RESKEY_rmon_rsc_name \ + --resource-state $RSC_STATE \ + --resource-type lvg \ + --volume-group $OCF_RESKEY_volgrpname \ + --timeout $TIMEOUT \ + >/dev/null 2>&1 + else + ocf_log err "$RMON_NOTIFY not available, failed to execute: \ +$RMON_NOTIFY --resource-name $OCF_RESKEY_rmon_rsc_name \ +--resource-state $RSC_STATE --resource-type lvg \ +--volume-group $OCF_RESKEY_volgrpname \ +--timeout $TIMEOUT" + fi +} + # Get the LVM version number, for this to work we assume(thanks to panjiam): # # LVM1 outputs like this @@ -752,16 +781,37 @@ case "$1" in start) LVM_validate_all LVM_start $VOLUME - exit $?;; + rc=$? + if [ $rc -eq $OCF_SUCCESS ] + then + rmon_notify "enabled" 300 + fi + exit $rc;; stop) LVM_stop $VOLUME - exit $?;; + rc=$? + rmon_notify "disabled" 300 + exit $rc;; status) LVM_status $VOLUME $1 - exit $?;; + rc=$? + if [ $rc -eq $OCF_SUCCESS ] + then + rmon_notify "enabled" 300 + else + rmon_notify "disabled" 300 + fi + exit $rc;; monitor) LVM_status $VOLUME - exit $?;; + rc=$? + if [ $rc -eq $OCF_SUCCESS ] + then + rmon_notify "enabled" 300 + else + rmon_notify "disabled" 300 + fi + exit $rc;; validate-all) LVM_validate_all ;; -- 1.9.1