diff options
Diffstat (limited to 'community/drbd/drbd.rc')
-rw-r--r-- | community/drbd/drbd.rc | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/community/drbd/drbd.rc b/community/drbd/drbd.rc new file mode 100644 index 000000000..7aca1f394 --- /dev/null +++ b/community/drbd/drbd.rc @@ -0,0 +1,58 @@ +#!/bin/bash +# Written by Sébastien Luttringer + +. /etc/rc.conf +. /etc/rc.d/functions + +DRBDADM='/sbin/drbdadm' +PROC_DRBD='/proc/drbd' + +check_config() { + # check if module is loaded + if [[ ! -e $PROC_DRBD ]]; then + echo "Missing $PROC_DRBD. Try to load drbd module!" + stat_fail + exit 1 + fi + # check if config is correct + if ! $DRBDADM dump &>/dev/null; then + echo 'Invalid configuration' + stat_fail + exit 1 + fi +} + +case "$1" in + start) + stat_busy 'Starting DRBD resources' + # check module and config + check_config + # load config + $DRBDADM adjust all 2>/dev/null || { stat_fail; exit 1; } + # User interruptible version of wait-connect all + $DRBDADM wait-con-int 2>/dev/null || { stat_fail; exit 1; } + # Become primary if configured + $DRBDADM sh-b-pri all 2>/dev/nul l|| { stat_fail; exit 1; } + add_daemon drbd + stat_done + ;; + stop) + stat_busy 'Stopping DRBD resources' + # check module and config + check_config + # disconnect and detach all resources + $DRBDADM down all 2>/dev/null || { stat_fail; exit 1; } + rm_daemon drbd + stat_done + ;; + restart) + $0 stop + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac + +exit 0 + +# vim:set ts=2 sw=2 ft=sh et: |