k8s.io/kubernetes@v1.29.3/test/cmd/delete.sh (about) 1 #!/usr/bin/env bash 2 3 # Copyright 2018 The Kubernetes Authors. 4 # 5 # Licensed under the Apache License, Version 2.0 (the "License"); 6 # you may not use this file except in compliance with the License. 7 # You may obtain a copy of the License at 8 # 9 # http://www.apache.org/licenses/LICENSE-2.0 10 # 11 # Unless required by applicable law or agreed to in writing, software 12 # distributed under the License is distributed on an "AS IS" BASIS, 13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 # See the License for the specific language governing permissions and 15 # limitations under the License. 16 17 set -o errexit 18 set -o nounset 19 set -o pipefail 20 21 # Runs tests related to kubectl delete --all-namespaces. 22 run_kubectl_delete_allnamespaces_tests() { 23 set -o nounset 24 set -o errexit 25 26 ns_one="namespace-$(date +%s)-${RANDOM}" 27 ns_two="namespace-$(date +%s)-${RANDOM}" 28 kubectl create namespace "${ns_one}" 29 kubectl create namespace "${ns_two}" 30 31 kubectl create configmap "one" --namespace="${ns_one}" 32 kubectl create configmap "two" --namespace="${ns_two}" 33 kubectl label configmap "one" --namespace="${ns_one}" deletetest=true 34 kubectl label configmap "two" --namespace="${ns_two}" deletetest=true 35 36 # dry-run 37 kubectl delete configmap --dry-run=client -l deletetest=true --all-namespaces 38 kubectl delete configmap --dry-run=server -l deletetest=true --all-namespaces 39 kubectl config set-context "${CONTEXT}" --namespace="${ns_one}" 40 kube::test::get_object_assert 'configmap -l deletetest' "{{range.items}}{{${id_field:?}}}:{{end}}" 'one:' 41 kubectl config set-context "${CONTEXT}" --namespace="${ns_two}" 42 kube::test::get_object_assert 'configmap -l deletetest' "{{range.items}}{{${id_field:?}}}:{{end}}" 'two:' 43 44 kubectl delete configmap -l deletetest=true --all-namespaces 45 46 # no configmaps should be in either of those namespaces with label deletetest 47 kubectl config set-context "${CONTEXT}" --namespace="${ns_one}" 48 kube::test::get_object_assert 'configmap -l deletetest' "{{range.items}}{{${id_field:?}}}:{{end}}" '' 49 kubectl config set-context "${CONTEXT}" --namespace="${ns_two}" 50 kube::test::get_object_assert 'configmap -l deletetest' "{{range.items}}{{${id_field:?}}}:{{end}}" '' 51 52 set +o nounset 53 set +o errexit 54 } 55 56 # Runs tests related to kubectl delete --confirm 57 run_kubectl_delete_interactive_tests() { 58 set -o nounset 59 set -o errexit 60 61 ns_one="namespace-$(date +%s)-${RANDOM}" 62 ns_two="namespace-$(date +%s)-${RANDOM}" 63 kubectl create namespace "${ns_one}" 64 kubectl create namespace "${ns_two}" 65 66 # create configmaps 67 kubectl create configmap "one" --namespace="${ns_one}" 68 kubectl create configmap "two" --namespace="${ns_two}" 69 kubectl label configmap "one" --namespace="${ns_one}" deletetest=true 70 kubectl label configmap "two" --namespace="${ns_two}" deletetest=true 71 72 # not confirm dry-run=server deletions 73 output_message=$(kubectl delete configmap --dry-run=server --interactive -l deletetest=true --all-namespaces <<< $'n\n') 74 kube::test::if_has_string "${output_message}" 'configmap/two' 'configmap/one' 75 # confirm dry-run=server deletions 76 kubectl delete configmap --dry-run=server --interactive -l deletetest=true --all-namespaces <<< $'y\n' 77 # not confirm resource deletions 78 output_message=$(kubectl delete configmap --interactive -l deletetest=true --all-namespaces <<< $'n\n') 79 kube::test::if_has_string "${output_message}" 'configmap/two' 'configmap/one' 80 kubectl config set-context "${CONTEXT}" --namespace="${ns_one}" 81 kube::test::get_object_assert 'configmap -l deletetest' "{{range.items}}{{${id_field:?}}}:{{end}}" 'one:' 82 kubectl config set-context "${CONTEXT}" --namespace="${ns_two}" 83 kube::test::get_object_assert 'configmap -l deletetest' "{{range.items}}{{${id_field:?}}}:{{end}}" 'two:' 84 85 # clean configmaps with label deletetest=true 86 kubectl delete configmap -l deletetest=true --all-namespaces 87 88 # create new configmaps 89 kubectl create configmap "third" --namespace="${ns_one}" 90 kubectl create configmap "fourth" --namespace="${ns_two}" 91 kubectl label configmap "third" --namespace="${ns_one}" deletetest2=true 92 kubectl label configmap "fourth" --namespace="${ns_two}" deletetest2=true 93 94 # confirm all resource deletions with waiting 95 kubectl delete configmaps --interactive -l deletetest2=true --all-namespaces --wait <<< $'y\n' 96 97 # no configmaps should be in either of those namespaces with label deletetest2 98 kubectl config set-context "${CONTEXT}" --namespace="${ns_one}" 99 kube::test::get_object_assert 'configmap -l deletetest2' "{{range.items}}{{${id_field:?}}}:{{end}}" '' 100 kubectl config set-context "${CONTEXT}" --namespace="${ns_two}" 101 kube::test::get_object_assert 'configmap -l deletetest2' "{{range.items}}{{${id_field:?}}}:{{end}}" '' 102 103 # clean configmaps with label deletetest2=true 104 kubectl delete configmap -l deletetest2=true --all-namespaces 105 106 # create new configmaps in one namespace 107 kubectl create configmap "fifth" --namespace="${ns_one}" 108 kubectl create configmap "sixth" --namespace="${ns_one}" 109 kubectl label configmap "fifth" --namespace="${ns_one}" deletetest3=true 110 kubectl label configmap "sixth" --namespace="${ns_one}" deletetest3=true 111 112 # confirm all resource deletions with forcing and waiting 113 kubectl delete configmaps -l deletetest3=true --force --interactive --namespace="${ns_one}" --wait <<< $'y\n' 114 115 # no configmaps should be in either of those namespaces with label deletetest3 116 kubectl config set-context "${CONTEXT}" --namespace="${ns_one}" 117 kube::test::get_object_assert 'configmap -l deletetest3' "{{range.items}}{{${id_field:?}}}:{{end}}" '' 118 119 set +o nounset 120 set +o errexit 121 }