diff --git a/hack/testdata/prune/a_selector.yaml b/hack/testdata/prune/a_selector.yaml new file mode 100644 index 00000000000..08c8134cb76 --- /dev/null +++ b/hack/testdata/prune/a_selector.yaml @@ -0,0 +1,35 @@ +apiVersion: v1 +kind: Pod +metadata: + name: a + namespace: nsbprune + labels: + prune-group: "true" +spec: + containers: + - name: kubernetes-pause + image: registry.k8s.io/pause:3.9 +--- +apiVersion: v1 +kind: Pod +metadata: + name: b + namespace: nsbprune + labels: + prune-group: "true" +spec: + containers: + - name: kubernetes-pause + image: registry.k8s.io/pause:3.9 +--- +apiVersion: v1 +kind: Pod +metadata: + name: c + namespace: nsbprune + labels: + prune-group: "false" +spec: + containers: + - name: kubernetes-pause + image: registry.k8s.io/pause:3.9 diff --git a/hack/testdata/prune/a_selector_prune.yaml b/hack/testdata/prune/a_selector_prune.yaml new file mode 100644 index 00000000000..f957f6aa0a7 --- /dev/null +++ b/hack/testdata/prune/a_selector_prune.yaml @@ -0,0 +1,23 @@ +apiVersion: v1 +kind: Pod +metadata: + name: a + namespace: nsbprune + labels: + prune-group: "true" +spec: + containers: + - name: kubernetes-pause + image: registry.k8s.io/pause:3.9 +--- +apiVersion: v1 +kind: Pod +metadata: + name: c + namespace: nsbprune + labels: + prune-group: "false" +spec: + containers: + - name: kubernetes-pause + image: registry.k8s.io/pause:3.9 \ No newline at end of file diff --git a/staging/src/k8s.io/kubectl/pkg/cmd/diff/prune.go b/staging/src/k8s.io/kubectl/pkg/cmd/diff/prune.go index ef77fac894a..e87d2106f76 100644 --- a/staging/src/k8s.io/kubectl/pkg/cmd/diff/prune.go +++ b/staging/src/k8s.io/kubectl/pkg/cmd/diff/prune.go @@ -47,7 +47,7 @@ func newPruner(dc dynamic.Interface, m meta.RESTMapper, r []prune.Resource, sele dynamicClient: dc, mapper: m, resources: r, - labelSelector: selector, + //labelSelector: selector, } } diff --git a/test/cmd/diff.sh b/test/cmd/diff.sh index 0e5ae9e92eb..2c75ad91da5 100755 --- a/test/cmd/diff.sh +++ b/test/cmd/diff.sh @@ -114,6 +114,26 @@ run_kubectl_diff_tests() { kubectl delete -f hack/testdata/pod.yaml kubectl delete -f hack/testdata/prune/b.yaml + ## kubectl diff --prune with label selector + kubectl create ns nsbprune + kubectl apply --namespace nsbprune -f hack/testdata/prune/a_selector.yaml + kube::test::get_object_assert 'pods a -n nsbprune' "{{${id_field:?}}}" 'a' + kube::test::get_object_assert 'pods b -n nsbprune' "{{${id_field:?}}}" 'b' + kube::test::get_object_assert 'pods c -n nsbprune' "{{${id_field:?}}}" 'c' + # Make sure that kubectl diff does not return neither pod 'b' nor pod 'c' without prune flag + output_message=$(kubectl diff -l prune-group=true -f hack/testdata/prune/a_selector_prune.yaml) + kube::test::if_has_not_string "${output_message}" "name: b" + kube::test::if_has_not_string "${output_message}" "name: c" + # the exist code for diff is 1 because pod name 'b' is found in the given label selector but not 'c' + output_message=$(kubectl diff --prune -l prune-group=true -f hack/testdata/prune/a_selector_prune.yaml || test $? -eq 1) + # pod 'b' should be in output, it is pruned. On the other hand, 'c' should not be, it's label selector is different + kube::test::if_has_string "${output_message}" 'name: b' + kube::test::if_has_not_string "${output_message}" "name: c" + + # Cleanup + kubectl delete -f hack/testdata/prune/a_selector.yaml + + set +o nounset set +o errexit }