Skip to content

Commit d40f79e

Browse files
committed
feat(scripts): add shell lib with some common helper funcs
1 parent 574aecf commit d40f79e

File tree

2 files changed

+39
-20
lines changed

2 files changed

+39
-20
lines changed

scripts/install_local.sh

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#!/usr/bin/env bash
22

3-
# Note: run from root dir
3+
OLM_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
4+
source "${OLM_ROOT}/scripts/lib/olm_util.sh"
45

56
set -e
67

@@ -25,24 +26,7 @@ do
2526
fi
2627
done
2728

28-
# wait for deployments to be ready
29-
kubectl rollout status -w deployment/olm-operator --namespace="${namespace}"
30-
kubectl rollout status -w deployment/catalog-operator --namespace="${namespace}"
31-
32-
retries=50
33-
until [[ $retries == 0 || $new_csv_phase == "Succeeded" ]]; do
34-
new_csv_phase=$(kubectl get csv -n "${namespace}" packageserver -o jsonpath='{.status.phase}' 2>/dev/null || echo "Waiting for CSV to appear")
35-
if [[ $new_csv_phase != "$csv_phase" ]]; then
36-
csv_phase=$new_csv_phase
37-
echo "Package server phase: $csv_phase"
38-
fi
39-
sleep 1
40-
retries=$((retries - 1))
41-
done
42-
43-
if [ $retries == 0 ]; then
44-
echo "CSV \"packageserver\" failed to reach phase succeeded"
29+
if ! olm::util::await_olm_ready "${namespace}" ; then
30+
echo "olm failed to become ready"
4531
exit 1
4632
fi
47-
48-
kubectl rollout status -w deployment/packageserver --namespace="${namespace}"

scripts/lib/olm_util.sh

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#!/usr/bin/env bash
2+
3+
set -o errexit
4+
set -o nounset
5+
set -o pipefail
6+
7+
olm::util::await_csv_success() {
8+
local namespace="$1"
9+
local csv="$2"
10+
local retries="${3:-50}"
11+
local phase
12+
13+
echo "awaiting ${namespace}/${csv} csv installation success"
14+
until [[ "${retries}" -le "0" || "${phase:=$(kubectl get csv -n "${namespace}" "${csv}" -o jsonpath='{.status.phase}' 2>/dev/null || echo "missing")}" == "Succeeded" ]]; do
15+
retries=$((retries - 1))
16+
echo "current phase: ${phase}, remaining attempts: ${retries}"
17+
unset phase
18+
sleep 1
19+
done
20+
21+
if [ "${retries}" -le "0" ] ; then
22+
echo "${csv} csv installation unsuccessful"
23+
return 1
24+
fi
25+
26+
echo "${csv} csv installation succeeded"
27+
}
28+
29+
olm::util::await_olm_ready() {
30+
local namespace="$1"
31+
32+
kubectl rollout status -w deployment/olm-operator --namespace="${namespace}" || return
33+
kubectl rollout status -w deployment/catalog-operator --namespace="${namespace}" || return
34+
olm::util::await_csv_success "${namespace}" "packageserver" 32 || return
35+
}

0 commit comments

Comments
 (0)