194 lines
4.9 KiB
Diff
194 lines
4.9 KiB
Diff
---
|
|
heartbeat/Filesystem | 59 ++++++++++++++++++++++++++++++++++++++++++++++++---
|
|
heartbeat/LVM | 59 +++++++++++++++++++++++++++++++++++++++++++++++----
|
|
2 files changed, 111 insertions(+), 7 deletions(-)
|
|
|
|
--- 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,
|
|
@@ -1053,20 +1055,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
|
|
|
|
@@ -1114,6 +1161,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
|
|
;;
|
|
--- a/heartbeat/LVM
|
|
+++ b/heartbeat/LVM
|
|
@@ -22,6 +22,7 @@
|
|
#
|
|
# OCF parameters are as below:
|
|
# OCF_RESKEY_volgrpname
|
|
+# OCF_RESKEY_rmon_rsc_name
|
|
#
|
|
#######################################################################
|
|
# Initialization:
|
|
@@ -311,6 +312,35 @@ 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
|
|
@@ -345,16 +375,37 @@ OP_METHOD=$1
|
|
case "$1" in
|
|
|
|
start) 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_monitor $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
|
|
;;
|