1
1
package node
2
2
3
3
import (
4
+ "encoding/json"
4
5
"fmt"
5
6
6
7
"github.com/spf13/cobra"
@@ -11,6 +12,7 @@ import (
11
12
"k8s.io/apimachinery/pkg/runtime/schema"
12
13
kerrors "k8s.io/apimachinery/pkg/util/errors"
13
14
kapi "k8s.io/kubernetes/pkg/api"
15
+ kapiv1 "k8s.io/kubernetes/pkg/api/v1"
14
16
kcmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
15
17
kprinters "k8s.io/kubernetes/pkg/printers"
16
18
)
@@ -90,7 +92,12 @@ func (l *ListPodsOptions) runListPods(node *kapi.Node, printer kprinters.Resourc
90
92
// objects for every node, into a single list. This allows output containing multiple nodes to be
91
93
// printed to a single writer, and be easily parsed as a single data format.
92
94
func (l * ListPodsOptions ) handleRESTOutput (nodes []* kapi.Node , printer kprinters.ResourcePrinter ) []error {
93
- unifiedPodList := & kapi.PodList {}
95
+ unifiedPodList := & kapiv1.PodList {
96
+ TypeMeta : metav1.TypeMeta {
97
+ Kind : "List" ,
98
+ APIVersion : "v1" ,
99
+ },
100
+ }
94
101
95
102
errList := []error {}
96
103
for _ , node := range nodes {
@@ -107,7 +114,23 @@ func (l *ListPodsOptions) handleRESTOutput(nodes []*kapi.Node, printer kprinters
107
114
continue
108
115
}
109
116
110
- unifiedPodList .Items = append (unifiedPodList .Items , pods .Items ... )
117
+ unifiedPodList .ListMeta .SelfLink = pods .ListMeta .SelfLink
118
+
119
+ for _ , pod := range pods .Items {
120
+ typedPod := & kapiv1.Pod {}
121
+ b , err := json .Marshal (pod )
122
+ if err != nil {
123
+ errList = append (errList , err )
124
+ continue
125
+ }
126
+ err = json .Unmarshal (b , typedPod )
127
+ if err != nil {
128
+ errList = append (errList , err )
129
+ continue
130
+ }
131
+
132
+ unifiedPodList .Items = append (unifiedPodList .Items , * typedPod )
133
+ }
111
134
}
112
135
113
136
printer .PrintObj (unifiedPodList , l .Options .Writer )
0 commit comments