From c0ca5e3ddaee51add13199ef11e892162c788da5 Mon Sep 17 00:00:00 2001 From: intrigeri Date: Tue, 24 Jun 2008 10:48:55 +0000 Subject: [PATCH] Allow the entire backup run to be halted by an action (Closes: #455836) --- AUTHORS | 1 + ChangeLog | 4 +++- src/backupninja.in | 41 ++++++++++++++++++++++++++++++----------- 3 files changed, 34 insertions(+), 12 deletions(-) diff --git a/AUTHORS b/AUTHORS index c3bfe27..145fa02 100644 --- a/AUTHORS +++ b/AUTHORS @@ -26,3 +26,4 @@ Sami Haahtinen Matthew Palmer -- mysql enhancements romain.tartiere@healthgrid.org -- ldap fixes Adam Monsen - spec file updates +Matthew Palmer -- halt loglevel feature diff --git a/ChangeLog b/ChangeLog index 06f45d6..fd3cc48 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,8 @@ version 0.9.6 -- unreleased backupninja changes - fix bug in cstream definition, thanks Jamie McClelland + . fix bug in cstream definition, thanks Jamie McClelland + . Allow the entire backup run to be halted by an action, thanks to + Matthew Palmer (Closes: #455836) handler changes dup: . General cleanup diff --git a/src/backupninja.in b/src/backupninja.in index 1dac55d..75b892a 100755 --- a/src/backupninja.in +++ b/src/backupninja.in @@ -29,7 +29,7 @@ function setupcolors () { RED="\033[31;01m" OFF="\033[0m" CYAN="\033[36;01m" - COLORS=($BLUE $GREEN $YELLOW $RED $PURPLE) + COLORS=($BLUE $GREEN $YELLOW $RED $PURPLE $CYAN) } function colorize () { @@ -40,6 +40,7 @@ function colorize () { [ "$typestr" == "Warning" ] && type=2 [ "$typestr" == "Error" ] && type=3 [ "$typestr" == "Fatal" ] && type=4 + [ "$typestr" == "Halt" ] && type=5 color=${COLORS[$type]} endcolor=$OFF echo -e "$color$@$endcolor" @@ -54,6 +55,7 @@ function colorize () { # 2 - warnings - yellow # 3 - errors - red # 4 - fatal - purple +# 5 - halt - cyan # First variable passed is the error level, all others are printed # if 1, echo out all warnings, errors, or fatal @@ -74,9 +76,10 @@ function printmsg() { [ "$typestr" == "Warning" ] && type=2 [ "$typestr" == "Error" ] && type=3 [ "$typestr" == "Fatal" ] && type=4 + [ "$typestr" == "Halt" ] && type=5 typestr="" else - types=(Debug Info Warning Error Fatal) + types=(Debug Info Warning Error Fatal Halt) typestr="${types[$type]}: " fi @@ -118,6 +121,10 @@ function fatal() { printmsg 4 "$@" exit 2 } +function halt() { + printmsg 5 "$@" + exit 2 +} msgcount=0 function msg { @@ -252,19 +259,20 @@ The following options are available: When in debug mode, output to the console will be colored: EOF - debug=1 - debug "Debugging info (when run with -d)" - info "Informational messages (verbosity level 4)" - warning "Warnings (verbosity level 3 and up)" - error "Errors (verbosity level 2 and up)" - fatal "Fatal, halting errors (always shown)" + usecolors=yes + colorize "Debug: Debugging info (when run with -d)" + colorize "Info: Informational messages (verbosity level 4)" + colorize "Warning: Warnings (verbosity level 3 and up)" + colorize "Error: Errors (verbosity level 2 and up)" + colorize "Fatal: Errors which halt a given backup action (always shown)" + colorize "Halt: Errors which halt the whole backupninja run (always shown)" } ## ## this function handles the running of a backup action ## ## these globals are modified: -## fatals, errors, warnings, actions_run, errormsg +## halts, fatals, errors, warnings, actions_run, errormsg ## function process_action() { @@ -322,10 +330,15 @@ function process_action() { _warnings=`cat $bufferfile | grep "^Warning: " | wc -l` _errors=`cat $bufferfile | grep "^Error: " | wc -l` _fatals=`cat $bufferfile | grep "^Fatal: " | wc -l` + _halts=`cat $bufferfile | grep "^Halt: " | wc -l` - ret=`grep "\(^Warning: \|^Error: \|^Fatal: \)" $bufferfile` + ret=`grep "\(^Warning: \|^Error: \|^Fatal: \|Halt: \)" $bufferfile` rm $bufferfile - if [ $_fatals != 0 ]; then + if [ $_halts != 0 ]; then + msg "*halt* -- $file" + errormsg="$errormsg\n== halt request from $file==\n\n$ret\n" + passthru "Halt: <<<< finished action $file: FAILED" + elif [ $_fatals != 0 ]; then msg "*failed* -- $file" errormsg="$errormsg\n== fatal errors from $file ==\n\n$ret\n" passthru "Fatal: <<<< finished action $file: FAILED" @@ -342,6 +355,7 @@ function process_action() { info "<<<< finished action $file: SUCCESS" fi + let "halts += _halts" let "fatals += _fatals" let "errors += _errors" let "warnings += _warnings" @@ -482,6 +496,7 @@ fi umask 077 # these globals are set by process_action() +halts=0 fatals=0 errors=0 warnings=0 @@ -500,6 +515,7 @@ fi for file in $files; do [ -f "$file" ] || continue + [ "$halts" = "0" ] || continue check_perms ${file%/*} # check containing dir check_perms $file @@ -556,6 +572,9 @@ fi if [ $actions_run != 0 ]; then info "FINISHED: $actions_run actions run. $fatals fatal. $errors error. $warnings warning." + if [ "$halts" != "0" ]; then + info "Backup was halted prematurely. Some actions may not have run." + fi fi if [ -n "$reporthost" ]; then -- 2.30.2