Allow the entire backup run to be halted by an action (Closes: #455836)

This commit is contained in:
intrigeri 2008-06-24 10:48:55 +00:00
parent 5297a4855d
commit c0ca5e3dda
3 changed files with 34 additions and 12 deletions

View File

@ -26,3 +26,4 @@ Sami Haahtinen <ressu@ressukka.net>
Matthew Palmer -- mysql enhancements Matthew Palmer -- mysql enhancements
romain.tartiere@healthgrid.org -- ldap fixes romain.tartiere@healthgrid.org -- ldap fixes
Adam Monsen - spec file updates Adam Monsen - spec file updates
Matthew Palmer <mpalmer@debian.org> -- halt loglevel feature

View File

@ -1,6 +1,8 @@
version 0.9.6 -- unreleased version 0.9.6 -- unreleased
backupninja changes 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 handler changes
dup: dup:
. General cleanup . General cleanup

View File

@ -29,7 +29,7 @@ function setupcolors () {
RED="\033[31;01m" RED="\033[31;01m"
OFF="\033[0m" OFF="\033[0m"
CYAN="\033[36;01m" CYAN="\033[36;01m"
COLORS=($BLUE $GREEN $YELLOW $RED $PURPLE) COLORS=($BLUE $GREEN $YELLOW $RED $PURPLE $CYAN)
} }
function colorize () { function colorize () {
@ -40,6 +40,7 @@ function colorize () {
[ "$typestr" == "Warning" ] && type=2 [ "$typestr" == "Warning" ] && type=2
[ "$typestr" == "Error" ] && type=3 [ "$typestr" == "Error" ] && type=3
[ "$typestr" == "Fatal" ] && type=4 [ "$typestr" == "Fatal" ] && type=4
[ "$typestr" == "Halt" ] && type=5
color=${COLORS[$type]} color=${COLORS[$type]}
endcolor=$OFF endcolor=$OFF
echo -e "$color$@$endcolor" echo -e "$color$@$endcolor"
@ -54,6 +55,7 @@ function colorize () {
# 2 - warnings - yellow # 2 - warnings - yellow
# 3 - errors - red # 3 - errors - red
# 4 - fatal - purple # 4 - fatal - purple
# 5 - halt - cyan
# First variable passed is the error level, all others are printed # First variable passed is the error level, all others are printed
# if 1, echo out all warnings, errors, or fatal # if 1, echo out all warnings, errors, or fatal
@ -74,9 +76,10 @@ function printmsg() {
[ "$typestr" == "Warning" ] && type=2 [ "$typestr" == "Warning" ] && type=2
[ "$typestr" == "Error" ] && type=3 [ "$typestr" == "Error" ] && type=3
[ "$typestr" == "Fatal" ] && type=4 [ "$typestr" == "Fatal" ] && type=4
[ "$typestr" == "Halt" ] && type=5
typestr="" typestr=""
else else
types=(Debug Info Warning Error Fatal) types=(Debug Info Warning Error Fatal Halt)
typestr="${types[$type]}: " typestr="${types[$type]}: "
fi fi
@ -118,6 +121,10 @@ function fatal() {
printmsg 4 "$@" printmsg 4 "$@"
exit 2 exit 2
} }
function halt() {
printmsg 5 "$@"
exit 2
}
msgcount=0 msgcount=0
function msg { function msg {
@ -252,19 +259,20 @@ The following options are available:
When in debug mode, output to the console will be colored: When in debug mode, output to the console will be colored:
EOF EOF
debug=1 usecolors=yes
debug "Debugging info (when run with -d)" colorize "Debug: Debugging info (when run with -d)"
info "Informational messages (verbosity level 4)" colorize "Info: Informational messages (verbosity level 4)"
warning "Warnings (verbosity level 3 and up)" colorize "Warning: Warnings (verbosity level 3 and up)"
error "Errors (verbosity level 2 and up)" colorize "Error: Errors (verbosity level 2 and up)"
fatal "Fatal, halting errors (always shown)" 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 ## this function handles the running of a backup action
## ##
## these globals are modified: ## these globals are modified:
## fatals, errors, warnings, actions_run, errormsg ## halts, fatals, errors, warnings, actions_run, errormsg
## ##
function process_action() { function process_action() {
@ -322,10 +330,15 @@ function process_action() {
_warnings=`cat $bufferfile | grep "^Warning: " | wc -l` _warnings=`cat $bufferfile | grep "^Warning: " | wc -l`
_errors=`cat $bufferfile | grep "^Error: " | wc -l` _errors=`cat $bufferfile | grep "^Error: " | wc -l`
_fatals=`cat $bufferfile | grep "^Fatal: " | 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 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" msg "*failed* -- $file"
errormsg="$errormsg\n== fatal errors from $file ==\n\n$ret\n" errormsg="$errormsg\n== fatal errors from $file ==\n\n$ret\n"
passthru "Fatal: <<<< finished action $file: FAILED" passthru "Fatal: <<<< finished action $file: FAILED"
@ -342,6 +355,7 @@ function process_action() {
info "<<<< finished action $file: SUCCESS" info "<<<< finished action $file: SUCCESS"
fi fi
let "halts += _halts"
let "fatals += _fatals" let "fatals += _fatals"
let "errors += _errors" let "errors += _errors"
let "warnings += _warnings" let "warnings += _warnings"
@ -482,6 +496,7 @@ fi
umask 077 umask 077
# these globals are set by process_action() # these globals are set by process_action()
halts=0
fatals=0 fatals=0
errors=0 errors=0
warnings=0 warnings=0
@ -500,6 +515,7 @@ fi
for file in $files; do for file in $files; do
[ -f "$file" ] || continue [ -f "$file" ] || continue
[ "$halts" = "0" ] || continue
check_perms ${file%/*} # check containing dir check_perms ${file%/*} # check containing dir
check_perms $file check_perms $file
@ -556,6 +572,9 @@ fi
if [ $actions_run != 0 ]; then if [ $actions_run != 0 ]; then
info "FINISHED: $actions_run actions run. $fatals fatal. $errors error. $warnings warning." 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 fi
if [ -n "$reporthost" ]; then if [ -n "$reporthost" ]; then