Fix bug The statefulset have duplicate revision after resource was updated

Kubernetes-commit: e081d1dca65e738a2541023968251e58b9abf656
This commit is contained in:
ZP-AlwaysWin 2019-09-12 22:26:09 +08:00 committed by Kubernetes Publisher
parent 80d16cd173
commit da06ecc74b
2 changed files with 62 additions and 1 deletions

View File

@ -242,7 +242,7 @@ func (h *StatefulSetHistoryViewer) ViewHistory(namespace, name string, revision
if len(history) <= 0 {
return "No rollout history found.", nil
}
revisions := make([]int64, len(history))
revisions := make([]int64, 0, len(history))
for _, revision := range history {
revisions = append(revisions, revision.Revision)
}

View File

@ -17,6 +17,9 @@ limitations under the License.
package polymorphichelpers
import (
appsv1 "k8s.io/api/apps/v1"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"reflect"
"testing"
@ -44,3 +47,61 @@ func TestHistoryViewerFor(t *testing.T) {
}
}
}
func TestViewHistory(t *testing.T) {
var (
trueVar = true
replicas = int32(1)
podStub = corev1.PodTemplateSpec{
ObjectMeta: metav1.ObjectMeta{Labels: map[string]string{"foo": "bar"}},
Spec: corev1.PodSpec{Containers: []corev1.Container{{Name: "test", Image: "nginx"}}},
}
ssStub = &appsv1.StatefulSet{
ObjectMeta: metav1.ObjectMeta{
Name: "moons",
Namespace: "default",
UID: "1993",
Labels: map[string]string{"foo": "bar"},
},
Spec: appsv1.StatefulSetSpec{Selector: &metav1.LabelSelector{MatchLabels: podStub.ObjectMeta.Labels}, Replicas: &replicas, Template: podStub},
}
ssStub1 = &appsv1.ControllerRevision{
ObjectMeta: metav1.ObjectMeta{
Name: "moons",
Namespace: "default",
Labels: map[string]string{"foo": "bar"},
OwnerReferences: []metav1.OwnerReference{{"apps/v1", "StatefulSet", "moons", "1993", &trueVar, nil}},
},
TypeMeta: metav1.TypeMeta{Kind: "StatefulSet", APIVersion: "apps/v1"},
Revision: 1,
}
)
fakeClientSet := fake.NewSimpleClientset(ssStub)
_, err := fakeClientSet.AppsV1().ControllerRevisions("default").Create(ssStub1)
if err != nil {
t.Fatalf("create controllerRevisions error %v occurred ", err)
}
var sts = &StatefulSetHistoryViewer{
fakeClientSet,
}
result, err := sts.ViewHistory("default", "moons", 1)
if err != nil {
t.Fatalf("error getting ViewHistory for a StatefulSets moons: %v", err)
}
expected := `REVISION
1
`
if result != expected {
t.Fatalf("unexpected output (%v was expected but got %v)", expected, result)
}
}