3 # Test if the named environment variable is set and not zero length
7 eval "[[ -n \"$var\" ]]"
10 # Prints backtrace info
11 # filename:lineno:function
16 deep=$((${#BASH_SOURCE[@]} - 1))
18 while [ $level -le $deep ]; do
19 echo "${BASH_SOURCE[$deep]}:${BASH_LINENO[$deep-1]}:${FUNCNAME[$deep-1]}"
24 # Prints line number and "message" in error format
25 # err $LINENO "message"
29 xtrace=$(set +o | grep xtrace)
31 local msg="[ERROR] ${BASH_SOURCE[2]}:$1 $2"
33 if [[ -n ${LOGDIR} ]]; then
34 echo $msg >> "${LOGDIR}/error.log"
40 # Prints line number and "message" then exits
41 # die $LINENO "message"
45 xtrace=$(set +o | grep xtrace)
48 if [ $exitcode == 0 ]; then
53 # Give buffers a second to flush
59 # Checks an environment variable is not set or has length 0 OR if the
60 # exit code is non-zero and prints "message" and exits
61 # NOTE: env-var is the variable name without a '$'
62 # die_if_not_set $LINENO env-var "message"
63 function die_if_not_set {
66 xtrace=$(set +o | grep xtrace)
70 if ! is_set $evar || [ $exitcode != 0 ]; then
76 # Check the function is defined
77 # die_if_not_defined $LINENO function-name "message"
78 function die_if_not_defined {
80 xtrace=$(set +o | grep xtrace)
83 local func_name=$1; shift
84 if ! declare -f "$func_name" > /dev/null; then
90 # Wait until the condition is met.
91 # wait_until condition timeout interval
97 while eval ${condition}
100 timeout=$((${timeout} - ${interval}))
101 if [[ ${timeout} < 0 ]]; then
102 err $LINENO "timed out ($condition)..."
108 # Print IP address of the first vNIC owned by specified VM via virsh
109 # get_first_vnic_ip vm_name
110 function get_first_vnic_ip {
113 _vnic_mac=$(sudo virsh domiflist $vm_name | \
114 sed -n -e 's/^.*\([0-9a-f]\{2\}\(:[0-9a-f]\{2\}\)\{5\}\).*$/\1/p' | \
116 die_if_not_set $LINENO _vnic_mac
117 _vnic_ip=$(arp -e | grep $_vnic_mac | awk '{print $1}')
118 die_if_not_set $LINENO _vnic_ip