system-upgrade-controller/scripts/e2e-functions

51 lines
1.4 KiB
Bash

#!/usr/bin/env bash
# ---
e2e-wait-for-kubeconfig() {
set -e -o pipefail
# the `--insecure-skip-tls-verify` seems to be only needed here when run in dapper
while ! kubectl --insecure-skip-tls-verify get pods -A >/dev/null 2>&1 ; do
echo 'Waiting for kubeconfig to become available...' >&2
sleep 5
cluster-get-kubeconfig >/dev/null
done
}
export -f e2e-wait-for-kubeconfig
e2e-count-ready-nodes() {
kubectl get nodes -o json \
| jq '.items[].status.conditions[] | select(.type == "Ready" and .status == "True") | .type' \
| wc -l \
| tr -d '[:space:]'
}
export -f e2e-count-ready-nodes
e2e-wait-for-nodes() {
while [[ $(e2e-count-ready-nodes) -lt $(cluster-num-nodes) ]]; do
echo 'Waiting for nodes to be ready...' >&2
sleep 5
done
}
export -f e2e-wait-for-nodes
e2e-pod-ready() {
kubectl get pods -n kube-system -o json \
| jq ".items[].status.containerStatuses[] | select(.name == \"$1\") | .ready" 2>/dev/null
}
export -f e2e-pod-ready
e2e-wait-for-services() {
for svc in ${WAIT_FOR_SERVICES:="coredns local-path-provisioner"}; do
while [[ "$(e2e-pod-ready $svc)" != 'true' ]]; do
echo "Waiting for service '$svc' to be ready..." >&2
sleep 5
done
echo "Service '$svc' is ready"
done
}
export -f e2e-wait-for-services
# ---