Rework image code to handle no results from YAML 63/14763/4
authorThanh Ha <thanh.ha@linuxfoundation.org>
Tue, 5 Mar 2019 01:47:38 +0000 (20:47 -0500)
committerThanh Ha <thanh.ha@linuxfoundation.org>
Tue, 5 Mar 2019 02:52:40 +0000 (21:52 -0500)
When grep has 0 matches it returns a non-zero exit code. In this case
a 0 match grep is a possibility for YAML files so ignore grep's exit
code in this instance.

Change-Id: Ia7eb55364feeb42bf35681c4ae0798fe25bbfad1
Signed-off-by: Thanh Ha <thanh.ha@linuxfoundation.org>
shell/openstack-protect-in-use-images.sh

index 4d9a2cc..fe0bc0f 100644 (file)
@@ -22,14 +22,15 @@ os_cloud="${OS_CLOUD:-vex}"
 set -eu -o pipefail
 
 declare -a images
-declare -a cfg_images
-declare -a yaml_images
-readarray -t cfg_images <<< "$(grep -r IMAGE_NAME --include \*.cfg jenkins-config \
-    | awk -F'=' '{print $2}' | sort -u)"
-readarray -t yaml_images <<< "$(grep -r 'ZZCI - ' --include \*.yaml jjb \
+images+=("$(grep -r IMAGE_NAME --include \*.cfg jenkins-config \
+    | awk -F'=' '{print $2}' | sort -u)")
+set +o pipefail  # Not all projects have images in YAML files and grep returns non-zero on 0 results
+# Ignore SC2179 since we do not want () to result in an empty array item.
+#shellcheck disable=SC2179
+images+="$(grep -r 'ZZCI - ' --include \*.yaml jjb \
     | awk -F": " '{print $3}' | sed "s:'::;s:'$::;/^$/d" | sort -u)"
-mapfile -t images < <(for R in "${cfg_images[@]}" "${yaml_images[@]}" ; do echo "$R" ; done | sort -u)
-
+set -o pipefail
+readarray -t images <<< "$(for i in "${images[@]}"; do echo "$i"; done | sort)"
 
 for image in "${images[@]}"; do
     os_image_protected=$(openstack --os-cloud "$os_cloud" \