Skip to content
This repository was archived by the owner on Oct 1, 2020. It is now read-only.

Commit 120b5f9

Browse files
committed
Fix resources not being completely deleted before rebuilding
Fix for #42
1 parent ee4a3f6 commit 120b5f9

File tree

2 files changed

+115
-3
lines changed

2 files changed

+115
-3
lines changed

scripts/host/helm_delete_wait.sh

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
#!/usr/bin/env bash
2+
3+
cd "$(dirname "${BASH_SOURCE[0]}")/../.." && devbox_dir=$PWD
4+
5+
source "${devbox_dir}/scripts/functions.sh"
6+
7+
cd "${devbox_dir}/etc/helm"
8+
set +e
9+
10+
kinds=( Service Deployment Pod Secret ConfigMap PersistentVolumeClaim PersistentVolume )
11+
counter=0 attempts=3
12+
13+
deleteResourceManually () {
14+
local kind=$1
15+
local release=$2
16+
info "Deleting any dangling ${kind}"
17+
18+
kubectl delete "${kind}" \
19+
-l "release=${release}" \
20+
--force \
21+
--grace-period 0 2>/dev/null
22+
}
23+
24+
status "Cleaning up existing Kubernetes resources."
25+
incrementNestingLevel
26+
for release in "$@"; do
27+
incrementNestingLevel
28+
status "Deleting release ${release}"
29+
30+
if helm ls -q --all | grep -qF "${release}"; then
31+
info "Found helm release; deleting with --purge"
32+
helm delete "${release}" --purge
33+
else
34+
info "No release found; deleting manually"
35+
for kind in "${kinds[@]}"; do
36+
deleteResourceManually "${kind}" "${release}"
37+
done
38+
fi
39+
40+
info "Awaiting resource deleting confirmation"
41+
for kind in "${kinds[@]}"; do
42+
counter=0
43+
44+
while [ $counter -lt $attempts ]; do
45+
pending_resources="$(kubectl get "${kind}" \
46+
-o wide \
47+
-l "release=${release}" 2>/dev/null
48+
)"
49+
50+
if [ -n "${pending_resources}" ]; then
51+
info "${release} ${kind} still running. ${counter}/${attempts} tests completed; retrying."
52+
info "${pending_resources}" 1>&2
53+
54+
((++counter))
55+
sleep 10
56+
else
57+
break
58+
fi
59+
done
60+
61+
if [ $counter -eq $attempts ]; then
62+
error "${release} ${kind} failed to delete in time. Deleting manually.";
63+
deleteResourceManually "$kind" "$release"
64+
65+
counter=0
66+
67+
while [ $counter -lt $attempts ]; do
68+
pending_resources="$(kubectl get "${kind}" \
69+
-o wide \
70+
-l "release=${release}" 2>/dev/null
71+
)"
72+
73+
if [ -n "${pending_resources}" ]; then
74+
info "${release} ${kind} still running. ${counter}/${attempts} tests completed; retrying."
75+
info "${pending_resources}" 1>&2
76+
77+
((++counter))
78+
sleep 10
79+
else
80+
break
81+
fi
82+
done
83+
84+
if [ $counter -eq $attempts ]; then
85+
error "${release} ${kind} failed to delete in time. Can't proceed.";
86+
exit 1
87+
fi
88+
fi
89+
done
90+
91+
info "Awaiting helm confirmation"
92+
counter=0
93+
94+
while [ $counter -lt $attempts ]; do
95+
if helm ls -q --all | grep -qF "${release}"; then
96+
info "${release} still in tiller. ${counter}/${attempts} checks completed; retrying."
97+
98+
((++counter))
99+
sleep 10
100+
else
101+
break
102+
fi
103+
done
104+
105+
if [ $counter -eq $attempts ]; then
106+
error "${release} failed to purge from tiller delete in time.";
107+
exit 1
108+
fi
109+
110+
success "Deleted all helm-created resources for release ${release}"
111+
decrementNestingLevel
112+
done
113+
decrementNestingLevel
114+
success "Deleted all helm-created resources"

scripts/host/k_rebuild_environment.sh

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@ cd "${devbox_dir}/scripts" && eval $(minikube docker-env) && docker build -t mag
1414

1515
# TODO: Delete does not work when no releases created yet
1616
cd "${devbox_dir}/etc/helm"
17-
set +e
18-
helm list -q | xargs helm delete --purge 2>/dev/null
19-
set -e
17+
bash "${devbox_dir}/scripts/host/helm_delete_wait.sh" magento2
2018

2119
# TODO: Need to make sure all resources have been successfully deleted before the attempt of recreating them
2220
#sleep 20

0 commit comments

Comments
 (0)