@@ -101,6 +101,11 @@ if [ ! "$1" = "" ] && [ ! "$1" = "-dryrun" ]; then
101101 exit 1
102102fi
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
105110jobWaitAndKill () {
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() {
282288deleteOperators () {
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() {
297303deleteWebLogicPods () {
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