From 8c900b54eecdd80b6fc6ac8bee7a4b3d094d9d1e Mon Sep 17 00:00:00 2001 From: kita456 Date: Sun, 8 Mar 2026 18:23:05 +0900 Subject: [PATCH 1/2] feature: add missing fields to kubectl describe statefulset output Kubernetes-commit: a8ebac6b586211d98d470ea4ce83e7b240bd4b9a --- pkg/describe/describe.go | 12 ++++++++++- pkg/describe/describe_test.go | 38 +++++++++++++++++++++++++++++------ 2 files changed, 43 insertions(+), 7 deletions(-) diff --git a/pkg/describe/describe.go b/pkg/describe/describe.go index 6b586a86f..379ecb58f 100644 --- a/pkg/describe/describe.go +++ b/pkg/describe/describe.go @@ -3703,6 +3703,12 @@ func describeStatefulSet(ps *appsv1.StatefulSet, selector labels.Selector, event w.Write(LEVEL_0, "Selector:\t%s\n", selector) printLabelsMultiline(w, "Labels", ps.Labels) printAnnotationsMultiline(w, "Annotations", ps.Annotations) + if len(ps.Spec.ServiceName) > 0 { + w.Write(LEVEL_0, "Service Name:\t%s\n", ps.Spec.ServiceName) + } + if len(ps.Spec.PodManagementPolicy) > 0 { + w.Write(LEVEL_0, "Pod Management Policy:\t%s\n", ps.Spec.PodManagementPolicy) + } w.Write(LEVEL_0, "Replicas:\t%d desired | %d total\n", *ps.Spec.Replicas, ps.Status.Replicas) w.Write(LEVEL_0, "Update Strategy:\t%s\n", ps.Spec.UpdateStrategy.Type) if ps.Spec.UpdateStrategy.RollingUpdate != nil { @@ -3714,7 +3720,11 @@ func describeStatefulSet(ps *appsv1.StatefulSet, selector labels.Selector, event } } } - + if ps.Spec.PersistentVolumeClaimRetentionPolicy != nil { + w.Write(LEVEL_0, "Persistent Volume Claim Retention Policy:\n") + w.Write(LEVEL_1, "WhenDeleted:\t%s\n", ps.Spec.PersistentVolumeClaimRetentionPolicy.WhenDeleted) + w.Write(LEVEL_1, "WhenScaled:\t%s\n", ps.Spec.PersistentVolumeClaimRetentionPolicy.WhenScaled) + } w.Write(LEVEL_0, "Pods Status:\t%d Running / %d Waiting / %d Succeeded / %d Failed\n", running, waiting, succeeded, failed) DescribePodTemplate(&ps.Spec.Template, w) describeVolumeClaimTemplates(ps.Spec.VolumeClaimTemplates, w) diff --git a/pkg/describe/describe_test.go b/pkg/describe/describe_test.go index 5f1c28d89..d31defbbb 100644 --- a/pkg/describe/describe_test.go +++ b/pkg/describe/describe_test.go @@ -6846,19 +6846,32 @@ func TestDescribeStatefulSet(t *testing.T) { var replicas int32 = 1 statefulSet := &appsv1.StatefulSet{ ObjectMeta: metav1.ObjectMeta{ - Name: "bar", - Namespace: "foo", + Name: "bar", + Namespace: "foo", + Labels: map[string]string{"app": "mytest"}, + Annotations: map[string]string{"annotation1": "value1"}, }, Spec: appsv1.StatefulSetSpec{ - Replicas: &replicas, - Selector: &metav1.LabelSelector{}, + PodManagementPolicy: appsv1.ParallelPodManagement, + Replicas: &replicas, + Selector: &metav1.LabelSelector{ + MatchLabels: map[string]string{"app": "mytest"}, + }, Template: corev1.PodTemplateSpec{ Spec: corev1.PodSpec{ Containers: []corev1.Container{ - {Image: "mytest-image:latest"}, + { + Name: "metest", + Image: "mytest-image:latest", + }, }, }, }, + ServiceName: "test-service", + PersistentVolumeClaimRetentionPolicy: &appsv1.StatefulSetPersistentVolumeClaimRetentionPolicy{ + WhenDeleted: appsv1.DeletePersistentVolumeClaimRetentionPolicyType, + WhenScaled: appsv1.RetainPersistentVolumeClaimRetentionPolicyType, + }, UpdateStrategy: appsv1.StatefulSetUpdateStrategy{ Type: appsv1.RollingUpdateStatefulSetStrategyType, RollingUpdate: &appsv1.RollingUpdateStatefulSetStrategy{ @@ -6874,7 +6887,20 @@ func TestDescribeStatefulSet(t *testing.T) { t.Errorf("unexpected error: %v", err) } expectedOutputs := []string{ - "bar", "foo", "Containers:", "mytest-image:latest", "Update Strategy", "RollingUpdate", "Partition", "2672", + "Name: bar", + "Namespace: foo", + "CreationTimestamp: Mon, 01 Jan 0001 00:00:00 +0000", + "Selector: app=mytest", + "Labels: app=mytest", + "Annotations: annotation1: value1", + "Service Name: test-service", + "Pod Management Policy: Parallel", + "Replicas: 1 desired | 0 total", + "Update Strategy: RollingUpdate", + " Partition: 2672", + "Persistent Volume Claim Retention Policy:", + " WhenDeleted: Delete", + " WhenScaled: Retain", } for _, o := range expectedOutputs { if !strings.Contains(out, o) { From 543ddcbffd75a7cc2c5bf201721c0bdb08c22655 Mon Sep 17 00:00:00 2001 From: kfess Date: Fri, 22 May 2026 19:11:44 +0900 Subject: [PATCH 2/2] update describe test Kubernetes-commit: 18259cb1469d3811203ba4dff086e30658536429 --- pkg/describe/describe_test.go | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/pkg/describe/describe_test.go b/pkg/describe/describe_test.go index d31defbbb..8c76b76a6 100644 --- a/pkg/describe/describe_test.go +++ b/pkg/describe/describe_test.go @@ -6846,10 +6846,8 @@ func TestDescribeStatefulSet(t *testing.T) { var replicas int32 = 1 statefulSet := &appsv1.StatefulSet{ ObjectMeta: metav1.ObjectMeta{ - Name: "bar", - Namespace: "foo", - Labels: map[string]string{"app": "mytest"}, - Annotations: map[string]string{"annotation1": "value1"}, + Name: "bar", + Namespace: "foo", }, Spec: appsv1.StatefulSetSpec{ PodManagementPolicy: appsv1.ParallelPodManagement, @@ -6861,7 +6859,7 @@ func TestDescribeStatefulSet(t *testing.T) { Spec: corev1.PodSpec{ Containers: []corev1.Container{ { - Name: "metest", + Name: "mytest", Image: "mytest-image:latest", }, }, @@ -6891,8 +6889,6 @@ func TestDescribeStatefulSet(t *testing.T) { "Namespace: foo", "CreationTimestamp: Mon, 01 Jan 0001 00:00:00 +0000", "Selector: app=mytest", - "Labels: app=mytest", - "Annotations: annotation1: value1", "Service Name: test-service", "Pod Management Policy: Parallel", "Replicas: 1 desired | 0 total",