Skip to content

Commit a5a9f19

Browse files
author
Tom Barnes
authored
fix slowdown and messy output of cleanup.sh (due to k8s changing output of kubectl json 'range' commands) (#4036)
1 parent 229229b commit a5a9f19

File tree

1 file changed

+26
-19
lines changed

1 file changed

+26
-19
lines changed

operator/integration-tests/bash/cleanup.sh

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,11 @@ if [ ! "$1" = "" ] && [ ! "$1" = "-dryrun" ]; then
101101
exit 1
102102
fi
103103

104+
stripRange() {
105+
# With newer k8s versions, 'range' json paths have spontaneously started to include a blank line, and sometimes a 'List' row
106+
sed '/^[[:space:]]*$/d' | sed '/^List.*/d'
107+
}
108+
104109
# wait for current jobs to finish, and kill any remaining after $1 seconds, default is 15 seconds
105110
jobWaitAndKill() {
106111
local job_timeout=${1:-15}
@@ -135,7 +140,7 @@ doDeleteByName() {
135140

136141
local tmpfile="/tmp/$(basename $0).doDeleteByName.$PPID.$mypid.$SECONDS"
137142

138-
${KUBERNETES_CLI} get "$@" -o=jsonpath='{.items[*]}{.kind}{" "}{.metadata.name}{" -n "}{.metadata.namespace}{"\n"}' > $tmpfile
143+
${KUBERNETES_CLI} get "$@" -o=jsonpath='{.items[*]}{.kind}{" "}{.metadata.name}{" -n "}{.metadata.namespace}{"\n"}' | stripRange > $tmpfile
139144

140145
# exit silently if nothing to delete
141146
if [ `cat $tmpfile | wc -l` -eq 0 ]; then
@@ -163,7 +168,7 @@ doDeleteByRange() {
163168

164169
local tmpfile="/tmp/$(basename $0).doDeleteByRange.$PPID.$mypid.$SECONDS"
165170

166-
${KUBERNETES_CLI} get "$@" -o=jsonpath='{range .items[*]}{.kind}{" "}{.metadata.name}{" -n "}{.metadata.namespace}{"\n"}' > $tmpfile
171+
${KUBERNETES_CLI} get "$@" -o=jsonpath='{range .items[*]}{.kind}{" "}{.metadata.name}{" -n "}{.metadata.namespace}{"\n"}' | stripRange > $tmpfile
167172

168173
# exit silently if nothing to delete
169174
if [ `cat $tmpfile | wc -l` -eq 0 ]; then
@@ -193,9 +198,9 @@ waitForWebLogicPods() {
193198
echo -n "@@ `timestamp` Info: seconds/introspector-pod-count/wl-pod-count:"
194199
while [ $((SECONDS - STARTSEC)) -lt $max_secs ]; do
195200
# WebLogic server pods have the 'weblogic.serverName' label
196-
pod_count_wls="$(${KUBERNETES_CLI} --all-namespaces=true get pods -l weblogic.serverName -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}' | wc -l)"
201+
pod_count_wls="$(${KUBERNETES_CLI} --all-namespaces=true get pods -l weblogic.serverName -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}' | stripRange | wc -l)"
197202
# Introspector pods have the 'weblogic.domainUID' and 'job-name' labels
198-
pod_count_int="$(${KUBERNETES_CLI} --all-namespaces=true get pods -l weblogic.domainUID -l job-name -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}' | wc -l)"
203+
pod_count_int="$(${KUBERNETES_CLI} --all-namespaces=true get pods -l weblogic.domainUID -l job-name -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}' | stripRange | wc -l)"
199204
pod_count_tot=$((pod_count_wls + pod_count_int))
200205
if [ $((pod_count_tot)) -eq 0 ]; then
201206
break
@@ -250,24 +255,25 @@ deleteDomains() {
250255
local dn
251256
local domain_crd=domains.weblogic.oracle
252257
local count=0
258+
local prefix
253259

254260
echo "@@ `timestamp` Info: Setting /tmp/diefast on every WL pod to speedup its demise."
255261

256262
if [ "$DRY_RUN" = "true" ]; then
257-
${KUBERNETES_CLI} --all-namespaces=true get pods -l weblogic.serverName \
258-
-o=jsonpath='{range .items[*]}{.metadata.namespace}{" "}{.metadata.name}{"\n"}' \
259-
| awk '{ system("echo @@ DRYRUN: '${KUBERNETES_CLI}' -n " $1 " exec " $2 " touch /tmp/diefast") }'
263+
prefix="echo @@ DRYRUN: "
260264
else
261-
${KUBERNETES_CLI} --all-namespaces=true get pods -l weblogic.serverName \
262-
-o=jsonpath='{range .items[*]}{.metadata.namespace}{" "}{.metadata.name}{"\n"}' \
263-
| awk '{ system("set -x ; '${KUBERNETES_CLI}' -n " $1 " exec " $2 " touch /tmp/diefast") }'
265+
prefix="set -x ;"
264266
fi
267+
${KUBERNETES_CLI:-kubectl} --all-namespaces=true get pods -l weblogic.serverName \
268+
-o=jsonpath='{range .items[*]}{.metadata.namespace}{" "}{.metadata.name}{"\n"}' \
269+
| stripRange \
270+
| awk '{ system("$prefix '${KUBERNETES_CLI:-kubectl}' -c weblogic-server -n " $1 " exec " $2 " -- touch /tmp/diefast") }'
265271

266272
echo "@@ `timestamp` Info: About to delete each domain."
267273
if [ $(${KUBERNETES_CLI} get crd $domain_crd --ignore-not-found | grep $domain_crd | wc -l) = 1 ]; then
268-
for ns in $(${KUBERNETES_CLI} get namespace -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}')
274+
for ns in $(${KUBERNETES_CLI} get namespace -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}' | stripRange)
269275
do
270-
for dn in $(${KUBERNETES_CLI} -n $ns get domain -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}')
276+
for dn in $(${KUBERNETES_CLI} -n $ns get domain -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}' | stripRange)
271277
do
272278
doDeleteByName -n $ns domain $dn
273279
count=$((count + 1))
@@ -282,7 +288,7 @@ deleteDomains() {
282288
deleteOperators() {
283289
echo "@@ `timestamp` Info: Deleting operator deployments."
284290
local ns
285-
for ns in $(${KUBERNETES_CLI} get namespace -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}')
291+
for ns in $(${KUBERNETES_CLI} get namespace -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}' | stripRange)
286292
do
287293
if [ "$BG_DELETE" = "true" ]; then
288294
doDeleteByRange -n $ns deployments -l weblogic.operatorName &
@@ -297,7 +303,7 @@ deleteOperators() {
297303
deleteWebLogicPods() {
298304
echo "@@ `timestamp` Info: Deleting WebLogic pods."
299305
local ns
300-
for ns in $(${KUBERNETES_CLI} get namespace -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}')
306+
for ns in $(${KUBERNETES_CLI} get namespace -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}' | stripRange)
301307
do
302308
if [ "$BG_DELETE" = "true" ]; then
303309
# WLS pods
@@ -338,13 +344,14 @@ deleteLabel() {
338344
-l "$LABEL_SELECTOR" \
339345
-o=jsonpath='{range .items[*]}{.metadata.name}{" -n "}{.metadata.namespace}{"\n"}{end}' \
340346
--all-namespaces=true \
347+
| stripRange \
341348
| patchPVCFinalizer
342349
fi
343350

344351
${KUBERNETES_CLI} get $resource_type \
345352
-l "$LABEL_SELECTOR" \
346353
-o=jsonpath='{range .items[*]}{.kind}{" "}{.metadata.name}{" -n "}{.metadata.namespace}{"\n"}{end}' \
347-
--all-namespaces=true >> $1
354+
--all-namespaces=true | stripRange >> $1
348355
done
349356

350357
#
@@ -357,7 +364,7 @@ deleteLabel() {
357364
${KUBERNETES_CLI} get $resource_type \
358365
-l "$LABEL_SELECTOR" \
359366
-o=jsonpath='{range .items[*]}{.kind}{" "}{.metadata.name}{"\n"}{end}' \
360-
--all-namespaces=true >> $1
367+
--all-namespaces=true | stripRange >> $1
361368
done
362369

363370
#
@@ -486,7 +493,7 @@ genericDelete() {
486493
${KUBERNETES_CLI} get pvc \
487494
-o=jsonpath='{range .items[*]}{.metadata.name}{" -n "}{.metadata.namespace}{"\n"}{end}' \
488495
--all-namespaces=true \
489-
| grep -E -e "($3)" | patchPVCFinalizer
496+
| stripRange | grep -E -e "($3)" | patchPVCFinalizer
490497
fi
491498

492499
while : ; do
@@ -497,14 +504,14 @@ genericDelete() {
497504
${KUBERNETES_CLI} get $1 \
498505
-o=jsonpath='{range .items[*]}{.metadata.namespace}{" "}{.kind}{"/"}{.metadata.name}{"\n"}{end}' \
499506
--all-namespaces=true 2>&1 \
500-
| grep -E -e "($3)" | sort > $resfile_yes 2>&1
507+
| stripRange | grep -E -e "($3)" | sort > $resfile_yes 2>&1
501508
artcount_yes="`cat $resfile_yes | wc -l`"
502509

503510
# leftover non-namespaced artifacts
504511
${KUBERNETES_CLI} get $2 \
505512
-o=jsonpath='{range .items[*]}{.kind}{"/"}{.metadata.name}{"\n"}{end}' \
506513
--all-namespaces=true 2>&1 \
507-
| grep -E -e "($3)" | sort > $resfile_no 2>&1
514+
| stripRange | grep -E -e "($3)" | sort > $resfile_no 2>&1
508515
artcount_no="`cat $resfile_no | wc -l`"
509516

510517
artcount_total=$((artcount_yes + artcount_no))

0 commit comments

Comments
 (0)