mirror of https://github.com/k3s-io/k3s
Add strategy description for 'kubectl describe sts' command
parent
dc62a73742
commit
2fd73130db
|
@ -2764,6 +2764,14 @@ func describeStatefulSet(ps *apps.StatefulSet, selector labels.Selector, events
|
||||||
printLabelsMultiline(w, "Labels", ps.Labels)
|
printLabelsMultiline(w, "Labels", ps.Labels)
|
||||||
printAnnotationsMultiline(w, "Annotations", ps.Annotations)
|
printAnnotationsMultiline(w, "Annotations", ps.Annotations)
|
||||||
w.Write(LEVEL_0, "Replicas:\t%d desired | %d total\n", ps.Spec.Replicas, ps.Status.Replicas)
|
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 {
|
||||||
|
ru := ps.Spec.UpdateStrategy.RollingUpdate
|
||||||
|
if ru.Partition != 0 {
|
||||||
|
w.Write(LEVEL_1, "Partition:\t%d\n", ru.Partition)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
w.Write(LEVEL_0, "Pods Status:\t%d Running / %d Waiting / %d Succeeded / %d Failed\n", running, waiting, succeeded, failed)
|
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)
|
DescribePodTemplate(&ps.Spec.Template, w)
|
||||||
describeVolumeClaimTemplates(ps.Spec.VolumeClaimTemplates, w)
|
describeVolumeClaimTemplates(ps.Spec.VolumeClaimTemplates, w)
|
||||||
|
|
|
@ -33,6 +33,7 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||||
"k8s.io/apimachinery/pkg/util/intstr"
|
"k8s.io/apimachinery/pkg/util/intstr"
|
||||||
versionedfake "k8s.io/client-go/kubernetes/fake"
|
versionedfake "k8s.io/client-go/kubernetes/fake"
|
||||||
|
"k8s.io/kubernetes/pkg/apis/apps"
|
||||||
"k8s.io/kubernetes/pkg/apis/autoscaling"
|
"k8s.io/kubernetes/pkg/apis/autoscaling"
|
||||||
api "k8s.io/kubernetes/pkg/apis/core"
|
api "k8s.io/kubernetes/pkg/apis/core"
|
||||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
|
@ -2526,6 +2527,46 @@ func TestDescribeNode(t *testing.T) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestDescribeStatefulSet(t *testing.T) {
|
||||||
|
fake := fake.NewSimpleClientset(&apps.StatefulSet{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: "bar",
|
||||||
|
Namespace: "foo",
|
||||||
|
},
|
||||||
|
Spec: apps.StatefulSetSpec{
|
||||||
|
Replicas: 1,
|
||||||
|
Selector: &metav1.LabelSelector{},
|
||||||
|
Template: api.PodTemplateSpec{
|
||||||
|
Spec: api.PodSpec{
|
||||||
|
Containers: []api.Container{
|
||||||
|
{Image: "mytest-image:latest"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
UpdateStrategy: apps.StatefulSetUpdateStrategy{
|
||||||
|
Type: apps.RollingUpdateStatefulSetStrategyType,
|
||||||
|
RollingUpdate: &apps.RollingUpdateStatefulSetStrategy{
|
||||||
|
Partition: 2,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
d := StatefulSetDescriber{fake}
|
||||||
|
out, err := d.Describe("foo", "bar", printers.DescriberSettings{ShowEvents: true})
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("unexpected error: %v", err)
|
||||||
|
}
|
||||||
|
expectedOutputs := []string{
|
||||||
|
"bar", "foo", "Containers:", "mytest-image:latest", "Update Strategy", "RollingUpdate", "Partition",
|
||||||
|
}
|
||||||
|
for _, o := range expectedOutputs {
|
||||||
|
if !strings.Contains(out, o) {
|
||||||
|
t.Errorf("unexpected out: %s", out)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// boolPtr returns a pointer to a bool
|
// boolPtr returns a pointer to a bool
|
||||||
func boolPtr(b bool) *bool {
|
func boolPtr(b bool) *bool {
|
||||||
o := b
|
o := b
|
||||||
|
|
Loading…
Reference in New Issue