Fix propagation of failures in installer scripts
[osm/devops.git] / common / logging
1 #!/bin/bash
2 # This file is meant to be SOURCED
3 #
4 #   Copyright 2016 RIFT.IO Inc
5 #
6 #   Licensed under the Apache License, Version 2.0 (the "License");
7 #   you may not use this file except in compliance with the License.
8 #   You may obtain a copy of the License at
9 #
10 #       http://www.apache.org/licenses/LICENSE-2.0
11 #
12 #   Unless required by applicable law or agreed to in writing, software
13 #   distributed under the License is distributed on an "AS IS" BASIS,
14 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 #   See the License for the specific language governing permissions and
16 #   limitations under the License.
17 #
18 # container_funcs
19 # 24 June 2016 -- Jeremy Mordkoff -- Genesis
20
21 print_stack() {
22    local i
23    local stack_size=${#FUNCNAME[1]}
24    echo  "BACKTRACE:" >&2
25    for (( i=1; i<$stack_size ; i++ )); do
26       local func="${FUNCNAME[$i]}"
27       [ x$func = x ] && func=MAIN
28       local linen="${BASH_LINENO[(( i - 1 ))]}"
29       local src="${BASH_SOURCE[$i]}"
30       [ x"$src" = x ] && src=non_file_source
31       echo "### $func $src $linen" >&2
32    done
33    echo "-------" >&2
34 }
35
36
37 FATAL_TRACK() {
38         echo -e "\n### $(date) ${FUNCNAME[1]}: FATAL error: $*" >&2
39         track end fatal $1 "'${@:2}'" none
40         print_stack
41         exit 1
42 }
43
44 FATAL() { 
45         echo -e "\n### $(date) ${FUNCNAME[1]}: FATAL error: $*" >&2
46         print_stack
47         exit 1
48 }
49         
50 WARNING() { 
51         echo -e "\n### $(date) ${FUNCNAME[1]}: WARNING error: $*" >&2
52 }
53
54 INFO() { 
55         echo "##  $(date) ${FUNCNAME[1]}: INFO: $*" >&2
56 }
57
58 DEBUG() { 
59         echo "#   $(date) ${FUNCNAME[1]}: DEBUG: $*" >&2
60 }
61
62 CMD() {
63         echo "# executing '$*' ..."
64         "$@"
65         rc=$?
66         echo "# .... '$*' done RC was $rc"
67         return $rc
68 }