From a2c029f6c382fd5ac4503dd20aa6ac1d806e79c8 Mon Sep 17 00:00:00 2001 From: WanLinghao Date: Thu, 12 Apr 2018 12:50:15 +0800 Subject: [PATCH] 1.fix kubectl get * --all-namespaces namespace miss error 2.also add a test case modified: pkg/kubectl/cmd/get/get.go modified: hack/make-rules/test-cmd-util.sh --- hack/make-rules/test-cmd-util.sh | 14 ++++++++++++++ pkg/kubectl/cmd/get/get.go | 16 ++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/hack/make-rules/test-cmd-util.sh b/hack/make-rules/test-cmd-util.sh index 995ef719d32..da80a561ca8 100755 --- a/hack/make-rules/test-cmd-util.sh +++ b/hack/make-rules/test-cmd-util.sh @@ -4474,6 +4474,20 @@ run_kubectl_all_namespace_tests() { # Command kubectl get pods --all-namespaces --namespace=default + ### Check --all-namespaces option shows namespaces + # Create objects in multiple namespaces + kubectl create "${kube_flags[@]}" namespace all-ns-test-1 + kubectl create "${kube_flags[@]}" serviceaccount test -n all-ns-test-1 + kubectl create "${kube_flags[@]}" namespace all-ns-test-2 + kubectl create "${kube_flags[@]}" serviceaccount test -n all-ns-test-2 + # Ensure listing across namespaces displays the namespace + output_message=$(kubectl get serviceaccounts --all-namespaces "${kube_flags[@]}") + kube::test::if_has_string "${output_message}" "all-ns-test-1" + kube::test::if_has_string "${output_message}" "all-ns-test-2" + # Clean up + kubectl delete "${kube_flags[@]}" namespace all-ns-test-1 + kubectl delete "${kube_flags[@]}" namespace all-ns-test-2 + ### Clean up # Pre-condition: valid-pod exists kube::test::get_object_assert pods "{{range.items}}{{$id_field}}:{{end}}" 'valid-pod:' diff --git a/pkg/kubectl/cmd/get/get.go b/pkg/kubectl/cmd/get/get.go index 2e53cfaaeca..b38054753ee 100644 --- a/pkg/kubectl/cmd/get/get.go +++ b/pkg/kubectl/cmd/get/get.go @@ -614,6 +614,22 @@ func (o *GetOptions) decodeIntoTable(encoder runtime.Encoder, obj runtime.Object return nil, err } + for i := range table.Rows { + row := &table.Rows[i] + if row.Object.Raw == nil || row.Object.Object != nil { + //if row already has Object.Object + //we don't change it + continue + } + + converted, err := runtime.Decode(unstructured.UnstructuredJSONScheme, row.Object.Raw) + if err != nil { + //if error happens, we just continue + continue + } + row.Object.Object = converted + } + return table, nil }