diff --git a/VERSION b/VERSION
index 9b9a244..090ea9d 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-6.0.2
+6.0.3
diff --git a/scripts/wait_for_pods.sh b/scripts/wait_for_pods.sh
new file mode 100644
index 0000000..6d58010
--- /dev/null
+++ b/scripts/wait_for_pods.sh
@@ -0,0 +1,116 @@
+#!/usr/bin/env bash
+
+# Copyright 2018-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# wait_for_pods.sh
+# waits for all kubernetes pods to complete before exiting, optionally only
+# pods in a specific namespace passed as first argument
+# inspired by similar scripts in Kolla-Kubernetes and Openstack Helm
+
+set -e -o pipefail
+fail_wfp=0
+
+# Set these to configure maximum timeout, and interval for checks
+PODS_TIMEOUT=${PODS_TIMEOUT:-600}
+CHECK_INTERVAL=${CHECK_INTERVAL:-5}
+KUBECTL_ARGS=${KUBECTL_ARGS:-}
+
+# use namespace if passed as first arg, or "all" for all namespaces
+if [ ! -z "$1" ]
+then
+  if [[ "$1" == "all" ]]
+  then
+    KUBECTL_ARGS+=" --all-namespaces"
+  else
+    KUBECTL_ARGS+=" --namespace=$1"
+  fi
+fi
+set -u
+
+# calculate timeout time
+START_TIME=$(date +%s)
+END_TIME=$((START_TIME + PODS_TIMEOUT))
+
+echo "wait_for_pods.sh - Waiting up to ${PODS_TIMEOUT} seconds for all Kubernetes pods to be ready"
+echo "Number printed is number of jobs/pods/containers waiting to be ready"
+
+prev_total_unready=0
+
+while true; do
+  NOW=$(date +%s)
+
+  # handle timeout without completion
+  if [ "$NOW" -gt "$END_TIME" ]
+  then
+    echo "Pods/Containers/Jobs not ready before timeout of ${PODS_TIMEOUT} seconds"
+    fail_wfp=1
+    break
+  fi
+
+  # get list of uncompleted items with jsonpath, then count them with wc
+  # ref: https://kubernetes.io/docs/reference/kubectl/jsonpath/
+  # jsonpath is picky about string vs comparison quoting, so may need to
+  # disable SC2026 for these lines. SC2086 allows for multiple args.
+
+  # shellcheck disable=SC2026,SC2086
+  pending_pods=$(kubectl get pods ${KUBECTL_ARGS} -o=jsonpath='{range .items[?(@.status.phase=="Pending")]}{.metadata.name}{"\n"}{end}')
+  # check for empty string before counting lines, echo adds a newline
+  if [ -z "$pending_pods" ]; then
+    pending_pod_count=0
+  else
+    pending_pod_count=$( echo "$pending_pods" | wc -l)
+  fi
+
+  # shellcheck disable=SC2026,SC2086
+  unready_containers=$(kubectl get pods ${KUBECTL_ARGS} -o=jsonpath='{range .items[?(@.status.phase=="Running")]}{range .status.containerStatuses[?(@.ready==false)]}{.name}: {.ready}{"\n"}{end}{end}')
+  if [ -z "$unready_containers" ]; then
+    unready_container_count=0
+  else
+    unready_container_count=$(echo "$unready_containers" | wc -l)
+  fi
+
+  # shellcheck disable=SC2026,SC2086
+  active_jobs=$(kubectl get jobs $KUBECTL_ARGS -o=jsonpath='{range .items[?(@.status.active=='1')]}{.metadata.name}{"\n"}{end}')
+  if [ -z "$active_jobs" ]; then
+    active_job_count=0
+  else
+    active_job_count=$(echo "$active_jobs" | wc -l)
+  fi
+
+  total_unready=$((pending_pod_count + unready_container_count + active_job_count))
+
+  # if everything is ready, print runtime and break
+  if [ "$total_unready" -eq 0 ]
+  then
+    runtime=$((NOW - START_TIME))
+    echo ""
+    echo "All pods ready in $runtime seconds"
+    break
+  fi
+
+  # deal with changes in number of jobs
+  if [ "$total_unready" -ne "$prev_total_unready" ]
+  then
+    echo ""
+    echo "Change in unready pods - Pending Pods: $pending_pod_count, Unready Containers: $unready_container_count, Active Jobs: $active_job_count"
+  fi
+  prev_total_unready=$total_unready
+
+  # print number of unready pods every $CHECK_INTERVAL
+  echo -n "$total_unready "
+  sleep "$CHECK_INTERVAL"
+done
+
+exit ${fail_wfp}
