@@ -101,6 +101,11 @@ if [ ! "$1" = "" ] && [ ! "$1" = "-dryrun" ]; then
101
101
exit 1
102
102
fi
103
103
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
+
104
109
# wait for current jobs to finish, and kill any remaining after $1 seconds, default is 15 seconds
105
110
jobWaitAndKill () {
106
111
local job_timeout=${1:- 15}
@@ -135,7 +140,7 @@ doDeleteByName() {
135
140
136
141
local tmpfile=" /tmp/$( basename $0 ) .doDeleteByName.$PPID .$mypid .$SECONDS "
137
142
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
139
144
140
145
# exit silently if nothing to delete
141
146
if [ ` cat $tmpfile | wc -l` -eq 0 ]; then
@@ -163,7 +168,7 @@ doDeleteByRange() {
163
168
164
169
local tmpfile=" /tmp/$( basename $0 ) .doDeleteByRange.$PPID .$mypid .$SECONDS "
165
170
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
167
172
168
173
# exit silently if nothing to delete
169
174
if [ ` cat $tmpfile | wc -l` -eq 0 ]; then
@@ -193,9 +198,9 @@ waitForWebLogicPods() {
193
198
echo -n " @@ ` timestamp` Info: seconds/introspector-pod-count/wl-pod-count:"
194
199
while [ $(( SECONDS - STARTSEC)) -lt $max_secs ]; do
195
200
# 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) "
197
202
# 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) "
199
204
pod_count_tot=$(( pod_count_wls + pod_count_int))
200
205
if [ $(( pod_count_tot)) -eq 0 ]; then
201
206
break
@@ -250,24 +255,25 @@ deleteDomains() {
250
255
local dn
251
256
local domain_crd=domains.weblogic.oracle
252
257
local count=0
258
+ local prefix
253
259
254
260
echo " @@ ` timestamp` Info: Setting /tmp/diefast on every WL pod to speedup its demise."
255
261
256
262
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: "
260
264
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 ;"
264
266
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") }'
265
271
266
272
echo " @@ ` timestamp` Info: About to delete each domain."
267
273
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 )
269
275
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 )
271
277
do
272
278
doDeleteByName -n $ns domain $dn
273
279
count=$(( count + 1 ))
@@ -282,7 +288,7 @@ deleteDomains() {
282
288
deleteOperators () {
283
289
echo " @@ ` timestamp` Info: Deleting operator deployments."
284
290
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 )
286
292
do
287
293
if [ " $BG_DELETE " = " true" ]; then
288
294
doDeleteByRange -n $ns deployments -l weblogic.operatorName &
@@ -297,7 +303,7 @@ deleteOperators() {
297
303
deleteWebLogicPods () {
298
304
echo " @@ ` timestamp` Info: Deleting WebLogic pods."
299
305
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 )
301
307
do
302
308
if [ " $BG_DELETE " = " true" ]; then
303
309
# WLS pods
@@ -338,13 +344,14 @@ deleteLabel() {
338
344
-l " $LABEL_SELECTOR " \
339
345
-o=jsonpath=' {range .items[*]}{.metadata.name}{" -n "}{.metadata.namespace}{"\n"}{end}' \
340
346
--all-namespaces=true \
347
+ | stripRange \
341
348
| patchPVCFinalizer
342
349
fi
343
350
344
351
${KUBERNETES_CLI} get $resource_type \
345
352
-l " $LABEL_SELECTOR " \
346
353
-o=jsonpath=' {range .items[*]}{.kind}{" "}{.metadata.name}{" -n "}{.metadata.namespace}{"\n"}{end}' \
347
- --all-namespaces=true >> $1
354
+ --all-namespaces=true | stripRange >> $1
348
355
done
349
356
350
357
#
@@ -357,7 +364,7 @@ deleteLabel() {
357
364
${KUBERNETES_CLI} get $resource_type \
358
365
-l " $LABEL_SELECTOR " \
359
366
-o=jsonpath=' {range .items[*]}{.kind}{" "}{.metadata.name}{"\n"}{end}' \
360
- --all-namespaces=true >> $1
367
+ --all-namespaces=true | stripRange >> $1
361
368
done
362
369
363
370
#
@@ -486,7 +493,7 @@ genericDelete() {
486
493
${KUBERNETES_CLI} get pvc \
487
494
-o=jsonpath=' {range .items[*]}{.metadata.name}{" -n "}{.metadata.namespace}{"\n"}{end}' \
488
495
--all-namespaces=true \
489
- | grep -E -e " ($3 )" | patchPVCFinalizer
496
+ | stripRange | grep -E -e " ($3 )" | patchPVCFinalizer
490
497
fi
491
498
492
499
while : ; do
@@ -497,14 +504,14 @@ genericDelete() {
497
504
${KUBERNETES_CLI} get $1 \
498
505
-o=jsonpath=' {range .items[*]}{.metadata.namespace}{" "}{.kind}{"/"}{.metadata.name}{"\n"}{end}' \
499
506
--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
501
508
artcount_yes=" ` cat $resfile_yes | wc -l` "
502
509
503
510
# leftover non-namespaced artifacts
504
511
${KUBERNETES_CLI} get $2 \
505
512
-o=jsonpath=' {range .items[*]}{.kind}{"/"}{.metadata.name}{"\n"}{end}' \
506
513
--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
508
515
artcount_no=" ` cat $resfile_no | wc -l` "
509
516
510
517
artcount_total=$(( artcount_yes + artcount_no))
0 commit comments