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  }