Sort ingresses by creation timestamp

This commit is contained in:
Manuel Alejandro de Brito Fontes 2018-12-19 10:58:42 -03:00
parent cac694ecce
commit b2fa243b97
No known key found for this signature in database
GPG key ID: 786136016A8BA02A
3 changed files with 29 additions and 9 deletions

View file

@ -120,13 +120,7 @@ func (n *NGINXController) syncIngress(interface{}) error {
return nil
}
// sort Ingresses using the ResourceVersion field
ings := n.store.ListIngresses()
sort.SliceStable(ings, func(i, j int) bool {
ir := ings[i].ResourceVersion
jr := ings[j].ResourceVersion
return ir < jr
})
upstreams, servers := n.getBackendServers(ings)
var passUpstreams []*ingress.SSLPassthroughBackend

View file

@ -21,6 +21,7 @@ import (
"fmt"
"io/ioutil"
"reflect"
"sort"
"sync"
"time"
@ -736,6 +737,13 @@ func (s *k8sStore) ListIngresses() []*ingress.Ingress {
ingresses = append(ingresses, ing)
}
// sort Ingresses using the CreationTimestamp field
sort.SliceStable(ingresses, func(i, j int) bool {
ir := ingresses[i].CreationTimestamp
jr := ingresses[j].CreationTimestamp
return ir.Before(&jr)
})
return ingresses
}

View file

@ -34,7 +34,7 @@ import (
"encoding/base64"
"io/ioutil"
"k8s.io/api/core/v1"
v1 "k8s.io/api/core/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes/fake"
"k8s.io/ingress-nginx/internal/file"
@ -939,6 +939,8 @@ func TestUpdateSecretIngressMap(t *testing.T) {
func TestListIngresses(t *testing.T) {
s := newStore(t)
sameTime := metav1.NewTime(time.Now())
ingressToIgnore := &ingress.Ingress{
Ingress: extensions.Ingress{
ObjectMeta: metav1.ObjectMeta{
@ -947,6 +949,7 @@ func TestListIngresses(t *testing.T) {
Annotations: map[string]string{
"kubernetes.io/ingress.class": "something",
},
CreationTimestamp: sameTime,
},
Spec: extensions.IngressSpec{
Backend: &extensions.IngressBackend{
@ -961,8 +964,9 @@ func TestListIngresses(t *testing.T) {
ingressWithoutPath := &ingress.Ingress{
Ingress: extensions.Ingress{
ObjectMeta: metav1.ObjectMeta{
Name: "test-3",
Namespace: "testns",
Name: "test-3",
Namespace: "testns",
CreationTimestamp: sameTime,
},
Spec: extensions.IngressSpec{
Rules: []extensions.IngressRule{
@ -995,6 +999,7 @@ func TestListIngresses(t *testing.T) {
Annotations: map[string]string{
"kubernetes.io/ingress.class": "nginx",
},
CreationTimestamp: metav1.NewTime(time.Now()),
},
Spec: extensions.IngressSpec{
Rules: []extensions.IngressRule{
@ -1021,9 +1026,22 @@ func TestListIngresses(t *testing.T) {
s.listers.IngressWithAnnotation.Add(ingressWithNginxClass)
ingresses := s.ListIngresses()
if s := len(ingresses); s != 3 {
t.Errorf("Expected 3 Ingresses but got %v", s)
}
if ingresses[0].Name != "test-2" {
t.Errorf("Expected Ingress test-2 but got %v", ingresses[0].Name)
}
if ingresses[1].Name != "test-3" {
t.Errorf("Expected Ingress test-3 but got %v", ingresses[1].Name)
}
if ingresses[2].Name != "test-4" {
t.Errorf("Expected Ingress test-4 but got %v", ingresses[2].Name)
}
}
func TestWriteSSLSessionTicketKey(t *testing.T) {