Skip to content

Commit 473623d

Browse files
committed
print typed podlist for correct serialization
1 parent 0e0901c commit 473623d

File tree

3 files changed

+28
-6
lines changed

3 files changed

+28
-6
lines changed

pkg/cmd/admin/node/listpods.go

+8-2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
kerrors "k8s.io/apimachinery/pkg/util/errors"
1313
kapi "k8s.io/kubernetes/pkg/api"
1414
kcmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
15+
kapiv1 "k8s.io/kubernetes/pkg/api/v1"
1516
kprinters "k8s.io/kubernetes/pkg/printers"
1617
)
1718

@@ -90,7 +91,12 @@ func (l *ListPodsOptions) runListPods(node *kapi.Node, printer kprinters.Resourc
9091
// objects for every node, into a single list. This allows output containing multiple nodes to be
9192
// printed to a single writer, and be easily parsed as a single data format.
9293
func (l *ListPodsOptions) handleRESTOutput(nodes []*kapi.Node, printer kprinters.ResourcePrinter) []error {
93-
unifiedPodList := &kapi.PodList{}
94+
unifiedPodList := &kapiv1.PodList{
95+
TypeMeta: metav1.TypeMeta{
96+
Kind: "List",
97+
APIVersion: "v1",
98+
},
99+
}
94100

95101
errList := []error{}
96102
for _, node := range nodes {
@@ -101,7 +107,7 @@ func (l *ListPodsOptions) handleRESTOutput(nodes []*kapi.Node, printer kprinters
101107
}
102108
fieldSelector := fields.Set{GetPodHostFieldLabel(node.TypeMeta.APIVersion): node.ObjectMeta.Name}.AsSelector()
103109

104-
pods, err := l.Options.KubeClient.Core().Pods(metav1.NamespaceAll).List(metav1.ListOptions{LabelSelector: labelSelector.String(), FieldSelector: fieldSelector.String()})
110+
pods, err := l.Options.ExternalKubeClient.CoreV1().Pods(metav1.NamespaceAll).List(metav1.ListOptions{LabelSelector: labelSelector.String(), FieldSelector: fieldSelector.String()})
105111
if err != nil {
106112
errList = append(errList, err)
107113
continue

pkg/cmd/admin/node/node_options.go

+18-4
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
kerrors "k8s.io/apimachinery/pkg/util/errors"
1717
"k8s.io/apimachinery/pkg/util/sets"
1818
kapi "k8s.io/kubernetes/pkg/api"
19+
externalclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
1920
kclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
2021
"k8s.io/kubernetes/pkg/kubectl/resource"
2122
kprinters "k8s.io/kubernetes/pkg/printers"
@@ -24,10 +25,11 @@ import (
2425
)
2526

2627
type NodeOptions struct {
27-
DefaultNamespace string
28-
KubeClient kclientset.Interface
29-
Writer io.Writer
30-
ErrWriter io.Writer
28+
DefaultNamespace string
29+
KubeClient kclientset.Interface
30+
ExternalKubeClient externalclientset.Interface
31+
Writer io.Writer
32+
ErrWriter io.Writer
3133

3234
Mapper meta.RESTMapper
3335
Typer runtime.ObjectTyper
@@ -49,10 +51,21 @@ func (n *NodeOptions) Complete(f *clientcmd.Factory, c *cobra.Command, args []st
4951
if err != nil {
5052
return err
5153
}
54+
5255
_, kc, err := f.Clients()
5356
if err != nil {
5457
return err
5558
}
59+
60+
config, err := f.ClientConfig()
61+
if err != nil {
62+
return err
63+
}
64+
externalkc, err := externalclientset.NewForConfig(config)
65+
if err != nil {
66+
return err
67+
}
68+
5669
cmdPrinter, output, err := f.PrinterForCommand(c)
5770
if err != nil {
5871
return err
@@ -61,6 +74,7 @@ func (n *NodeOptions) Complete(f *clientcmd.Factory, c *cobra.Command, args []st
6174

6275
n.DefaultNamespace = defaultNamespace
6376
n.KubeClient = kc
77+
n.ExternalKubeClient = externalkc
6478
n.Writer = out
6579
n.ErrWriter = errout
6680
n.Mapper = mapper

test/cmd/admin.sh

+2
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ os::cmd::expect_success_and_not_text 'oadm manage-node --selector= --schedulable
7878
os::cmd::expect_success_and_not_text 'oc get node -o yaml' 'unschedulable: true'
7979
os::cmd::expect_success_and_text 'oadm manage-node --selector= --schedulable=false' 'SchedulingDisabled'
8080
os::cmd::expect_success_and_text 'oc get node -o yaml' 'unschedulable: true'
81+
# ensure correct serialization of podList output
82+
os::cmd::expect_success_and_text "oadm manage-node --list-pods --selector= -o jsonpath='{ .kind }'" 'List'
8183
echo "manage-node: ok"
8284
os::test::junit::declare_suite_end
8385

0 commit comments

Comments
 (0)