diff --git a/staging/src/k8s.io/kubectl/pkg/describe/describe.go b/staging/src/k8s.io/kubectl/pkg/describe/describe.go index 8ce8d940145..e1a7b1363b6 100644 --- a/staging/src/k8s.io/kubectl/pkg/describe/describe.go +++ b/staging/src/k8s.io/kubectl/pkg/describe/describe.go @@ -2527,18 +2527,14 @@ func (d *DaemonSetDescriber) Describe(namespace, name string, describerSettings events, _ = searchEvents(d.CoreV1(), daemon, describerSettings.ChunkSize) } - return describeDaemonSet(daemon, events, running, waiting, succeeded, failed) + return describeDaemonSet(daemon, selector, events, running, waiting, succeeded, failed) } -func describeDaemonSet(daemon *appsv1.DaemonSet, events *corev1.EventList, running, waiting, succeeded, failed int) (string, error) { +func describeDaemonSet(daemon *appsv1.DaemonSet, selector labels.Selector, events *corev1.EventList, running, waiting, succeeded, failed int) (string, error) { return tabbedString(func(out io.Writer) error { w := NewPrefixWriter(out) w.Write(LEVEL_0, "Name:\t%s\n", daemon.Name) - selector, err := metav1.LabelSelectorAsSelector(daemon.Spec.Selector) - if err != nil { - // this shouldn't happen if LabelSelector passed validation - return err - } + w.Write(LEVEL_0, "Namespace:\t%s\n", daemon.Namespace) w.Write(LEVEL_0, "Selector:\t%s\n", selector) w.Write(LEVEL_0, "Node-Selector:\t%s\n", labels.FormatLabels(daemon.Spec.Template.Spec.NodeSelector)) printLabelsMultiline(w, "Labels", daemon.Labels) diff --git a/staging/src/k8s.io/kubectl/pkg/describe/describe_test.go b/staging/src/k8s.io/kubectl/pkg/describe/describe_test.go index 1f4f9c92182..8003354f52c 100644 --- a/staging/src/k8s.io/kubectl/pkg/describe/describe_test.go +++ b/staging/src/k8s.io/kubectl/pkg/describe/describe_test.go @@ -6397,6 +6397,41 @@ func TestDescribeStatefulSet(t *testing.T) { } } +func TestDescribeDaemonSet(t *testing.T) { + fake := fake.NewSimpleClientset(&appsv1.DaemonSet{ + ObjectMeta: metav1.ObjectMeta{ + Name: "bar", + Namespace: "foo", + }, + Spec: appsv1.DaemonSetSpec{ + Selector: &metav1.LabelSelector{ + MatchLabels: map[string]string{"node-role.kubernetes.io/control-plane": "true"}, + }, + Template: corev1.PodTemplateSpec{ + Spec: corev1.PodSpec{ + Containers: []corev1.Container{ + {Image: "mytest-image:latest"}, + }, + }, + }, + }, + }) + d := DaemonSetDescriber{fake} + out, err := d.Describe("foo", "bar", DescriberSettings{ShowEvents: true}) + if err != nil { + t.Errorf("unexpected error: %v", err) + } + expectedOutputs := []string{ + "bar", "foo", "Containers:", "mytest-image:latest", "Selector", "node-role.kubernetes.io/control-plane=true", + } + for _, o := range expectedOutputs { + if !strings.Contains(out, o) { + t.Errorf("unexpected out: %s", out) + break + } + } +} + func TestDescribeEndpointSlice(t *testing.T) { protocolTCP := corev1.ProtocolTCP port80 := int32(80)