Stream output of run-gcloud-compute-with-retries to stdout in realtime

This commit is contained in:
Shyam Jeedigunta 2017-05-09 13:44:48 +02:00
parent 2e800eef20
commit 0759289dcf

View File

@ -20,8 +20,10 @@
function run-gcloud-compute-with-retries { function run-gcloud-compute-with-retries {
RETRIES="${RETRIES:-3}" RETRIES="${RETRIES:-3}"
for attempt in $(seq 1 ${RETRIES}); do for attempt in $(seq 1 ${RETRIES}); do
exec 5>&1 # Duplicate &1 to &5 for use below.
# We don't use 'local' to declare gcloud_result as then ret_val always gets value 0. # We don't use 'local' to declare gcloud_result as then ret_val always gets value 0.
gcloud_result=$(gcloud compute "$@" 2>&1) || local ret_val="$?" # We use tee to output to &5 (redirected to stdout) while also storing it in the variable.
gcloud_result=$(gcloud compute "$@" |& tee >(cat - >&5)) || local ret_val="$?"
echo "${gcloud_result}" echo "${gcloud_result}"
if [[ "${ret_val:-0}" -ne "0" ]]; then if [[ "${ret_val:-0}" -ne "0" ]]; then
if [[ $(echo "${gcloud_result}" | grep -c "already exists") -gt 0 ]]; then if [[ $(echo "${gcloud_result}" | grep -c "already exists") -gt 0 ]]; then