mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 20:53:33 +00:00
select the lower name ingressClass in e2e
This commit is contained in:
parent
08f9125cb0
commit
a76c0f9898
@ -18,7 +18,7 @@ package network
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"strings"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
networkingv1 "k8s.io/api/networking/v1"
|
networkingv1 "k8s.io/api/networking/v1"
|
||||||
@ -73,7 +73,7 @@ var _ = common.SIGDescribe("IngressClass [Feature:Ingress]", func() {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
ginkgo.It("should prevent Ingress creation if more than 1 IngressClass marked as default [Serial]", func() {
|
ginkgo.It("should choose the one with the later CreationTimestamp, if equal the one with the lower name when two ingressClasses are marked as default[Serial]", func() {
|
||||||
ingressClass1, err := createIngressClass(cs, "ingressclass1", true, f.UniqueName)
|
ingressClass1, err := createIngressClass(cs, "ingressclass1", true, f.UniqueName)
|
||||||
framework.ExpectNoError(err)
|
framework.ExpectNoError(err)
|
||||||
defer deleteIngressClass(cs, ingressClass1.Name)
|
defer deleteIngressClass(cs, ingressClass1.Name)
|
||||||
@ -82,19 +82,42 @@ var _ = common.SIGDescribe("IngressClass [Feature:Ingress]", func() {
|
|||||||
framework.ExpectNoError(err)
|
framework.ExpectNoError(err)
|
||||||
defer deleteIngressClass(cs, ingressClass2.Name)
|
defer deleteIngressClass(cs, ingressClass2.Name)
|
||||||
|
|
||||||
|
expectedName := ingressClass1.Name
|
||||||
|
if ingressClass2.CreationTimestamp.UnixNano() > ingressClass1.CreationTimestamp.UnixNano() {
|
||||||
|
expectedName = ingressClass2.Name
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
|
defer cancel()
|
||||||
|
|
||||||
// the admission controller may take a few seconds to observe both ingress classes
|
// the admission controller may take a few seconds to observe both ingress classes
|
||||||
expectedErr := "2 default IngressClasses were found, only 1 allowed"
|
|
||||||
var lastErr error
|
|
||||||
if err := wait.Poll(time.Second, time.Minute, func() (bool, error) {
|
if err := wait.Poll(time.Second, time.Minute, func() (bool, error) {
|
||||||
defer cs.NetworkingV1().Ingresses(f.Namespace.Name).Delete(context.TODO(), "ingress1", metav1.DeleteOptions{})
|
classes, err := cs.NetworkingV1().IngressClasses().List(ctx, metav1.ListOptions{})
|
||||||
_, err := createBasicIngress(cs, f.Namespace.Name)
|
if err != nil {
|
||||||
if err == nil {
|
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
lastErr = err
|
cntDefault := 0
|
||||||
return strings.Contains(err.Error(), expectedErr), nil
|
for _, class := range classes.Items {
|
||||||
|
if class.Annotations[networkingv1.AnnotationIsDefaultIngressClass] == "true" {
|
||||||
|
cntDefault++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if cntDefault < 2 {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
ingress, err := createBasicIngress(cs, f.Namespace.Name)
|
||||||
|
if err != nil {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
if ingress.Spec.IngressClassName == nil {
|
||||||
|
return false, fmt.Errorf("expected IngressClassName to be set by Admission Controller")
|
||||||
|
}
|
||||||
|
if *ingress.Spec.IngressClassName != expectedName {
|
||||||
|
return false, fmt.Errorf("expected ingress class %s but created with %s", expectedName, *ingress.Spec.IngressClassName)
|
||||||
|
}
|
||||||
|
return true, nil
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
framework.Failf("Expected error to contain %s, got %s", expectedErr, lastErr.Error())
|
framework.Failf("Failed to create ingress when two ingressClasses are marked as default ,got error %v", err)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user