Fix golangci-lint errors (#10196)
* Fix golangci-lint errors Signed-off-by: z1cheng <imchench@gmail.com> * Fix dupl errors Signed-off-by: z1cheng <imchench@gmail.com> * Fix comments Signed-off-by: z1cheng <imchench@gmail.com> * Fix errcheck lint errors Signed-off-by: z1cheng <imchench@gmail.com> * Fix assert in e2e test Signed-off-by: z1cheng <imchench@gmail.com> * Not interrupt the waitForPodsReady Signed-off-by: z1cheng <imchench@gmail.com> * Replace string with constant Signed-off-by: z1cheng <imchench@gmail.com> * Fix comments Signed-off-by: z1cheng <imchench@gmail.com> * Revert write file permision Signed-off-by: z1cheng <imchench@gmail.com> --------- Signed-off-by: z1cheng <imchench@gmail.com>
This commit is contained in:
parent
46d87d3462
commit
b3060bfbd0
253 changed files with 2434 additions and 2113 deletions
|
|
@ -88,10 +88,11 @@ func (s *k8sStore) getPemCertificate(secretName string) (*ingress.SSLCert, error
|
|||
auth := secret.Data["auth"]
|
||||
|
||||
// namespace/secretName -> namespace-secretName
|
||||
nsSecName := strings.Replace(secretName, "/", "-", -1)
|
||||
nsSecName := strings.ReplaceAll(secretName, "/", "-")
|
||||
|
||||
var sslCert *ingress.SSLCert
|
||||
if okcert && okkey {
|
||||
switch {
|
||||
case okcert && okkey:
|
||||
if cert == nil {
|
||||
return nil, fmt.Errorf("key 'tls.crt' missing from Secret %q", secretName)
|
||||
}
|
||||
|
|
@ -144,7 +145,7 @@ func (s *k8sStore) getPemCertificate(secretName string) (*ingress.SSLCert, error
|
|||
}
|
||||
|
||||
klog.V(3).InfoS(msg)
|
||||
} else if len(ca) > 0 {
|
||||
case len(ca) > 0:
|
||||
sslCert, err = ssl.CreateCACert(ca)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("unexpected error creating SSL Cert: %v", err)
|
||||
|
|
@ -166,7 +167,7 @@ func (s *k8sStore) getPemCertificate(secretName string) (*ingress.SSLCert, error
|
|||
// makes this secret in 'syncSecret' to be used for Certificate Authentication
|
||||
// this does not enable Certificate Authentication
|
||||
klog.V(3).InfoS("Configuring Secret for TLS authentication", "secret", secretName)
|
||||
} else {
|
||||
default:
|
||||
if auth != nil {
|
||||
return nil, ErrSecretForAuth
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ func (s *EndpointSliceLister) MatchByKey(key string) ([]*discoveryv1.EndpointSli
|
|||
keyNsLen = 0
|
||||
} else {
|
||||
// count '/' char
|
||||
keyNsLen += 1
|
||||
keyNsLen++
|
||||
}
|
||||
// filter endpointSlices owned by svc
|
||||
for _, listKey := range s.ListKeys() {
|
||||
|
|
|
|||
|
|
@ -87,7 +87,6 @@ func TestEndpointSliceLister(t *testing.T) {
|
|||
t.Errorf("unexpected error %v", err)
|
||||
}
|
||||
eps, err := el.MatchByKey(key)
|
||||
|
||||
if err != nil {
|
||||
t.Errorf("unexpeted error %v", err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ type Storer interface {
|
|||
Run(stopCh chan struct{})
|
||||
|
||||
// GetIngressClass validates given ingress against ingress class configuration and returns the ingress class.
|
||||
GetIngressClass(ing *networkingv1.Ingress, icConfig *ingressclass.IngressClassConfiguration) (string, error)
|
||||
GetIngressClass(ing *networkingv1.Ingress, icConfig *ingressclass.Configuration) (string, error)
|
||||
}
|
||||
|
||||
// EventType type of event associated with an informer
|
||||
|
|
@ -242,7 +242,9 @@ type k8sStore struct {
|
|||
defaultSSLCertificate string
|
||||
}
|
||||
|
||||
// New creates a new object store to be used in the ingress controller
|
||||
// New creates a new object store to be used in the ingress controller.
|
||||
//
|
||||
//nolint:gocyclo // Ignore function complexity error.
|
||||
func New(
|
||||
namespace string,
|
||||
namespaceSelector labels.Selector,
|
||||
|
|
@ -252,9 +254,9 @@ func New(
|
|||
updateCh *channels.RingChannel,
|
||||
disableCatchAll bool,
|
||||
deepInspector bool,
|
||||
icConfig *ingressclass.IngressClassConfiguration,
|
||||
disableSyncEvents bool) Storer {
|
||||
|
||||
icConfig *ingressclass.Configuration,
|
||||
disableSyncEvents bool,
|
||||
) Storer {
|
||||
store := &k8sStore{
|
||||
informers: &Informer{},
|
||||
listers: &Lister{},
|
||||
|
|
@ -474,7 +476,8 @@ func New(
|
|||
_, errOld = store.GetIngressClass(oldIng, icConfig)
|
||||
classCur, errCur = store.GetIngressClass(curIng, icConfig)
|
||||
}
|
||||
if errOld != nil && errCur == nil {
|
||||
switch {
|
||||
case errOld != nil && errCur == nil:
|
||||
if hasCatchAllIngressRule(curIng.Spec) && disableCatchAll {
|
||||
klog.InfoS("ignoring update for catch-all ingress because of --disable-catch-all", "ingress", klog.KObj(curIng))
|
||||
return
|
||||
|
|
@ -482,11 +485,11 @@ func New(
|
|||
|
||||
klog.InfoS("creating ingress", "ingress", klog.KObj(curIng), "ingressclass", classCur)
|
||||
recorder.Eventf(curIng, corev1.EventTypeNormal, "Sync", "Scheduled for sync")
|
||||
} else if errOld == nil && errCur != nil {
|
||||
case errOld == nil && errCur != nil:
|
||||
klog.InfoS("removing ingress because of unknown ingressclass", "ingress", klog.KObj(curIng))
|
||||
ingDeleteHandler(old)
|
||||
return
|
||||
} else if errCur == nil && !reflect.DeepEqual(old, cur) {
|
||||
case errCur == nil && !reflect.DeepEqual(old, cur):
|
||||
if hasCatchAllIngressRule(curIng.Spec) && disableCatchAll {
|
||||
klog.InfoS("ignoring update for catch-all ingress and delete old one because of --disable-catch-all", "ingress", klog.KObj(curIng))
|
||||
ingDeleteHandler(old)
|
||||
|
|
@ -494,7 +497,7 @@ func New(
|
|||
}
|
||||
|
||||
recorder.Eventf(curIng, corev1.EventTypeNormal, "Sync", "Scheduled for sync")
|
||||
} else {
|
||||
default:
|
||||
klog.V(3).InfoS("No changes on ingress. Skipping update", "ingress", klog.KObj(curIng))
|
||||
return
|
||||
}
|
||||
|
|
@ -519,7 +522,10 @@ func New(
|
|||
|
||||
ingressClassEventHandler := cache.ResourceEventHandlerFuncs{
|
||||
AddFunc: func(obj interface{}) {
|
||||
ingressclass := obj.(*networkingv1.IngressClass)
|
||||
ingressclass, ok := obj.(*networkingv1.IngressClass)
|
||||
if !ok {
|
||||
klog.Errorf("unexpected type: %T", obj)
|
||||
}
|
||||
foundClassByName := false
|
||||
if icConfig.IngressClassByName && ingressclass.Name == icConfig.AnnotationValue {
|
||||
klog.InfoS("adding ingressclass as ingress-class-by-name is configured", "ingressclass", klog.KObj(ingressclass))
|
||||
|
|
@ -541,7 +547,10 @@ func New(
|
|||
}
|
||||
},
|
||||
DeleteFunc: func(obj interface{}) {
|
||||
ingressclass := obj.(*networkingv1.IngressClass)
|
||||
ingressclass, ok := obj.(*networkingv1.IngressClass)
|
||||
if !ok {
|
||||
klog.Errorf("unexpected type: %T", obj)
|
||||
}
|
||||
if ingressclass.Spec.Controller != icConfig.Controller {
|
||||
klog.InfoS("ignoring ingressclass as the spec.controller is not the same of this ingress", "ingressclass", klog.KObj(ingressclass))
|
||||
return
|
||||
|
|
@ -557,8 +566,14 @@ func New(
|
|||
}
|
||||
},
|
||||
UpdateFunc: func(old, cur interface{}) {
|
||||
oic := old.(*networkingv1.IngressClass)
|
||||
cic := cur.(*networkingv1.IngressClass)
|
||||
oic, ok := old.(*networkingv1.IngressClass)
|
||||
if !ok {
|
||||
klog.Errorf("unexpected type: %T", old)
|
||||
}
|
||||
cic, ok := cur.(*networkingv1.IngressClass)
|
||||
if !ok {
|
||||
klog.Errorf("unexpected type: %T", cur)
|
||||
}
|
||||
if cic.Spec.Controller != icConfig.Controller {
|
||||
klog.InfoS("ignoring ingressclass as the spec.controller is not the same of this ingress", "ingressclass", klog.KObj(cic))
|
||||
return
|
||||
|
|
@ -581,7 +596,10 @@ func New(
|
|||
|
||||
secrEventHandler := cache.ResourceEventHandlerFuncs{
|
||||
AddFunc: func(obj interface{}) {
|
||||
sec := obj.(*corev1.Secret)
|
||||
sec, ok := obj.(*corev1.Secret)
|
||||
if !ok {
|
||||
klog.Errorf("unexpected type: %T", obj)
|
||||
}
|
||||
key := k8s.MetaNamespaceKey(sec)
|
||||
|
||||
if store.defaultSSLCertificate == key {
|
||||
|
|
@ -608,7 +626,10 @@ func New(
|
|||
},
|
||||
UpdateFunc: func(old, cur interface{}) {
|
||||
if !reflect.DeepEqual(old, cur) {
|
||||
sec := cur.(*corev1.Secret)
|
||||
sec, ok := cur.(*corev1.Secret)
|
||||
if !ok {
|
||||
klog.Errorf("unexpected type: %T", cur)
|
||||
}
|
||||
key := k8s.MetaNamespaceKey(sec)
|
||||
|
||||
if !watchedNamespace(sec.Namespace) {
|
||||
|
|
@ -695,8 +716,14 @@ func New(
|
|||
}
|
||||
},
|
||||
UpdateFunc: func(old, cur interface{}) {
|
||||
oeps := old.(*discoveryv1.EndpointSlice)
|
||||
ceps := cur.(*discoveryv1.EndpointSlice)
|
||||
oeps, ok := old.(*discoveryv1.EndpointSlice)
|
||||
if !ok {
|
||||
klog.Errorf("unexpected type: %T", old)
|
||||
}
|
||||
ceps, ok := cur.(*discoveryv1.EndpointSlice)
|
||||
if !ok {
|
||||
klog.Errorf("unexpected type: %T", cur)
|
||||
}
|
||||
if !reflect.DeepEqual(ceps.Endpoints, oeps.Endpoints) {
|
||||
updateCh.In() <- Event{
|
||||
Type: UpdateEvent,
|
||||
|
|
@ -750,7 +777,10 @@ func New(
|
|||
|
||||
cmEventHandler := cache.ResourceEventHandlerFuncs{
|
||||
AddFunc: func(obj interface{}) {
|
||||
cfgMap := obj.(*corev1.ConfigMap)
|
||||
cfgMap, ok := obj.(*corev1.ConfigMap)
|
||||
if !ok {
|
||||
klog.Errorf("unexpected type: %T", obj)
|
||||
}
|
||||
key := k8s.MetaNamespaceKey(cfgMap)
|
||||
handleCfgMapEvent(key, cfgMap, "CREATE")
|
||||
},
|
||||
|
|
@ -759,7 +789,10 @@ func New(
|
|||
return
|
||||
}
|
||||
|
||||
cfgMap := cur.(*corev1.ConfigMap)
|
||||
cfgMap, ok := cur.(*corev1.ConfigMap)
|
||||
if !ok {
|
||||
klog.Errorf("unexpected type: %T", cur)
|
||||
}
|
||||
key := k8s.MetaNamespaceKey(cfgMap)
|
||||
handleCfgMapEvent(key, cfgMap, "UPDATE")
|
||||
},
|
||||
|
|
@ -767,7 +800,10 @@ func New(
|
|||
|
||||
serviceHandler := cache.ResourceEventHandlerFuncs{
|
||||
AddFunc: func(obj interface{}) {
|
||||
svc := obj.(*corev1.Service)
|
||||
svc, ok := obj.(*corev1.Service)
|
||||
if !ok {
|
||||
klog.Errorf("unexpected type: %T", obj)
|
||||
}
|
||||
if svc.Spec.Type == corev1.ServiceTypeExternalName {
|
||||
updateCh.In() <- Event{
|
||||
Type: CreateEvent,
|
||||
|
|
@ -776,7 +812,10 @@ func New(
|
|||
}
|
||||
},
|
||||
DeleteFunc: func(obj interface{}) {
|
||||
svc := obj.(*corev1.Service)
|
||||
svc, ok := obj.(*corev1.Service)
|
||||
if !ok {
|
||||
klog.Errorf("unexpected type: %T", obj)
|
||||
}
|
||||
if svc.Spec.Type == corev1.ServiceTypeExternalName {
|
||||
updateCh.In() <- Event{
|
||||
Type: DeleteEvent,
|
||||
|
|
@ -785,8 +824,14 @@ func New(
|
|||
}
|
||||
},
|
||||
UpdateFunc: func(old, cur interface{}) {
|
||||
oldSvc := old.(*corev1.Service)
|
||||
curSvc := cur.(*corev1.Service)
|
||||
oldSvc, ok := old.(*corev1.Service)
|
||||
if !ok {
|
||||
klog.Errorf("unexpected type: %T", old)
|
||||
}
|
||||
curSvc, ok := cur.(*corev1.Service)
|
||||
if !ok {
|
||||
klog.Errorf("unexpected type: %T", cur)
|
||||
}
|
||||
|
||||
if reflect.DeepEqual(oldSvc, curSvc) {
|
||||
return
|
||||
|
|
@ -821,7 +866,10 @@ func New(
|
|||
}
|
||||
|
||||
// do not wait for informers to read the configmap configuration
|
||||
ns, name, _ := k8s.ParseNameNS(configmap)
|
||||
ns, name, err := k8s.ParseNameNS(configmap)
|
||||
if err != nil {
|
||||
klog.Errorf("unexpected error parsing name and ns: %v", err)
|
||||
}
|
||||
cm, err := client.CoreV1().ConfigMaps(ns).Get(context.TODO(), name, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
klog.Warningf("Unexpected error reading configuration configmap: %v", err)
|
||||
|
|
@ -837,10 +885,10 @@ func hasCatchAllIngressRule(spec networkingv1.IngressSpec) bool {
|
|||
return spec.DefaultBackend != nil
|
||||
}
|
||||
|
||||
func checkBadAnnotationValue(annotations map[string]string, badwords string) error {
|
||||
func checkBadAnnotationValue(annotationMap map[string]string, badwords string) error {
|
||||
arraybadWords := strings.Split(strings.TrimSpace(badwords), ",")
|
||||
|
||||
for annotation, value := range annotations {
|
||||
for annotation, value := range annotationMap {
|
||||
if strings.HasPrefix(annotation, fmt.Sprintf("%s/", parser.AnnotationsPrefix)) {
|
||||
for _, forbiddenvalue := range arraybadWords {
|
||||
if strings.Contains(value, forbiddenvalue) {
|
||||
|
|
@ -999,7 +1047,7 @@ func (s *k8sStore) GetService(key string) (*corev1.Service, error) {
|
|||
return s.listers.Service.ByKey(key)
|
||||
}
|
||||
|
||||
func (s *k8sStore) GetIngressClass(ing *networkingv1.Ingress, icConfig *ingressclass.IngressClassConfiguration) (string, error) {
|
||||
func (s *k8sStore) GetIngressClass(ing *networkingv1.Ingress, icConfig *ingressclass.Configuration) (string, error) {
|
||||
// First we try ingressClassName
|
||||
if !icConfig.IgnoreIngressClass && ing.Spec.IngressClassName != nil {
|
||||
iclass, err := s.listers.IngressClass.ByKey(*ing.Spec.IngressClassName)
|
||||
|
|
@ -1010,11 +1058,11 @@ func (s *k8sStore) GetIngressClass(ing *networkingv1.Ingress, icConfig *ingressc
|
|||
}
|
||||
|
||||
// Then we try annotation
|
||||
if ingressclass, ok := ing.GetAnnotations()[ingressclass.IngressKey]; ok {
|
||||
if ingressclass != icConfig.AnnotationValue {
|
||||
if class, ok := ing.GetAnnotations()[ingressclass.IngressKey]; ok {
|
||||
if class != icConfig.AnnotationValue {
|
||||
return "", fmt.Errorf("ingress class annotation is not equal to the expected by Ingress Controller")
|
||||
}
|
||||
return ingressclass, nil
|
||||
return class, nil
|
||||
}
|
||||
|
||||
// Then we accept if the WithoutClass is enabled
|
||||
|
|
@ -1055,7 +1103,10 @@ func (s *k8sStore) ListIngresses() []*ingress.Ingress {
|
|||
// filter ingress rules
|
||||
ingresses := make([]*ingress.Ingress, 0)
|
||||
for _, item := range s.listers.IngressWithAnnotation.List() {
|
||||
ing := item.(*ingress.Ingress)
|
||||
ing, ok := item.(*ingress.Ingress)
|
||||
if !ok {
|
||||
klog.Errorf("unexpected type: %T", item)
|
||||
}
|
||||
ingresses = append(ingresses, ing)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -44,29 +44,27 @@ import (
|
|||
|
||||
var pathPrefix networking.PathType = networking.PathTypePrefix
|
||||
|
||||
var DefaultClassConfig = &ingressclass.IngressClassConfiguration{
|
||||
var DefaultClassConfig = &ingressclass.Configuration{
|
||||
Controller: ingressclass.DefaultControllerName,
|
||||
AnnotationValue: ingressclass.DefaultAnnotationValue,
|
||||
WatchWithoutClass: false,
|
||||
}
|
||||
|
||||
var (
|
||||
commonIngressSpec = networking.IngressSpec{
|
||||
Rules: []networking.IngressRule{
|
||||
{
|
||||
Host: "dummy",
|
||||
IngressRuleValue: networking.IngressRuleValue{
|
||||
HTTP: &networking.HTTPIngressRuleValue{
|
||||
Paths: []networking.HTTPIngressPath{
|
||||
{
|
||||
Path: "/",
|
||||
PathType: &pathPrefix,
|
||||
Backend: networking.IngressBackend{
|
||||
Service: &networking.IngressServiceBackend{
|
||||
Name: "http-svc",
|
||||
Port: networking.ServiceBackendPort{
|
||||
Number: 80,
|
||||
},
|
||||
var commonIngressSpec = networking.IngressSpec{
|
||||
Rules: []networking.IngressRule{
|
||||
{
|
||||
Host: "dummy",
|
||||
IngressRuleValue: networking.IngressRuleValue{
|
||||
HTTP: &networking.HTTPIngressRuleValue{
|
||||
Paths: []networking.HTTPIngressPath{
|
||||
{
|
||||
Path: "/",
|
||||
PathType: &pathPrefix,
|
||||
Backend: networking.IngressBackend{
|
||||
Service: &networking.IngressServiceBackend{
|
||||
Name: "http-svc",
|
||||
Port: networking.ServiceBackendPort{
|
||||
Number: 80,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
@ -75,12 +73,15 @@ var (
|
|||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
)
|
||||
},
|
||||
}
|
||||
|
||||
const updateDummyHost = "update-dummy"
|
||||
|
||||
//nolint:gocyclo // Ignore function complexity error
|
||||
func TestStore(t *testing.T) {
|
||||
//TODO: move env definition to docker image?
|
||||
os.Setenv("KUBEBUILDER_ASSETS", "/usr/local/bin")
|
||||
// TODO: move env definition to docker image?
|
||||
t.Setenv("KUBEBUILDER_ASSETS", "/usr/local/bin")
|
||||
|
||||
pathPrefix = networking.PathTypePrefix
|
||||
|
||||
|
|
@ -90,9 +91,12 @@ func TestStore(t *testing.T) {
|
|||
t.Fatalf("error: %v", err)
|
||||
}
|
||||
|
||||
emptySelector, _ := labels.Parse("")
|
||||
emptySelector, err := labels.Parse("")
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
|
||||
defer te.Stop() //nolint:errcheck
|
||||
defer te.Stop() //nolint:errcheck // Ignore the error
|
||||
|
||||
clientSet, err := kubernetes.NewForConfig(cfg)
|
||||
if err != nil {
|
||||
|
|
@ -176,7 +180,11 @@ func TestStore(t *testing.T) {
|
|||
return
|
||||
}
|
||||
|
||||
e := evt.(Event)
|
||||
e, ok := evt.(Event)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
|
||||
if e.Obj == nil {
|
||||
continue
|
||||
}
|
||||
|
|
@ -230,7 +238,7 @@ func TestStore(t *testing.T) {
|
|||
time.Sleep(1 * time.Second)
|
||||
|
||||
ni := ing.DeepCopy()
|
||||
ni.Spec.Rules[0].Host = "update-dummy"
|
||||
ni.Spec.Rules[0].Host = updateDummyHost
|
||||
_ = ensureIngress(ni, clientSet, t)
|
||||
if err != nil {
|
||||
t.Errorf("error creating ingress: %v", err)
|
||||
|
|
@ -281,7 +289,10 @@ func TestStore(t *testing.T) {
|
|||
return
|
||||
}
|
||||
|
||||
e := evt.(Event)
|
||||
e, ok := evt.(Event)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
if e.Obj == nil {
|
||||
continue
|
||||
}
|
||||
|
|
@ -343,7 +354,7 @@ func TestStore(t *testing.T) {
|
|||
defer deleteIngress(invalidIngress, clientSet, t)
|
||||
|
||||
ni := ing.DeepCopy()
|
||||
ni.Spec.Rules[0].Host = "update-dummy"
|
||||
ni.Spec.Rules[0].Host = updateDummyHost
|
||||
_ = ensureIngress(ni, clientSet, t)
|
||||
if err != nil {
|
||||
t.Errorf("error creating ingress: %v", err)
|
||||
|
|
@ -392,7 +403,10 @@ func TestStore(t *testing.T) {
|
|||
return
|
||||
}
|
||||
|
||||
e := evt.(Event)
|
||||
e, ok := evt.(Event)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
if e.Obj == nil {
|
||||
continue
|
||||
}
|
||||
|
|
@ -411,7 +425,7 @@ func TestStore(t *testing.T) {
|
|||
}
|
||||
}(updateCh)
|
||||
|
||||
ingressClassconfig := &ingressclass.IngressClassConfiguration{
|
||||
ingressClassconfig := &ingressclass.Configuration{
|
||||
Controller: ingressclass.DefaultControllerName,
|
||||
AnnotationValue: ingressclass.DefaultAnnotationValue,
|
||||
WatchWithoutClass: true,
|
||||
|
|
@ -463,7 +477,7 @@ func TestStore(t *testing.T) {
|
|||
time.Sleep(1 * time.Second)
|
||||
|
||||
validIngressUpdated := validIngress1.DeepCopy()
|
||||
validIngressUpdated.Spec.Rules[0].Host = "update-dummy"
|
||||
validIngressUpdated.Spec.Rules[0].Host = updateDummyHost
|
||||
_ = ensureIngress(validIngressUpdated, clientSet, t)
|
||||
if err != nil {
|
||||
t.Errorf("error updating ingress: %v", err)
|
||||
|
|
@ -523,7 +537,10 @@ func TestStore(t *testing.T) {
|
|||
return
|
||||
}
|
||||
|
||||
e := evt.(Event)
|
||||
e, ok := evt.(Event)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
if e.Obj == nil {
|
||||
continue
|
||||
}
|
||||
|
|
@ -542,7 +559,7 @@ func TestStore(t *testing.T) {
|
|||
}
|
||||
}(updateCh)
|
||||
|
||||
ingressClassconfig := &ingressclass.IngressClassConfiguration{
|
||||
ingressClassconfig := &ingressclass.Configuration{
|
||||
Controller: ingressclass.DefaultControllerName,
|
||||
AnnotationValue: ic,
|
||||
IngressClassByName: true,
|
||||
|
|
@ -581,7 +598,7 @@ func TestStore(t *testing.T) {
|
|||
time.Sleep(1 * time.Second)
|
||||
|
||||
ingressUpdated := ing.DeepCopy()
|
||||
ingressUpdated.Spec.Rules[0].Host = "update-dummy"
|
||||
ingressUpdated.Spec.Rules[0].Host = updateDummyHost
|
||||
_ = ensureIngress(ingressUpdated, clientSet, t)
|
||||
if err != nil {
|
||||
t.Errorf("error updating ingress: %v", err)
|
||||
|
|
@ -630,7 +647,10 @@ func TestStore(t *testing.T) {
|
|||
return
|
||||
}
|
||||
|
||||
e := evt.(Event)
|
||||
e, ok := evt.(Event)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
if e.Obj == nil {
|
||||
continue
|
||||
}
|
||||
|
|
@ -684,7 +704,7 @@ func TestStore(t *testing.T) {
|
|||
time.Sleep(1 * time.Second)
|
||||
|
||||
invalidIngressUpdated := invalidIngress.DeepCopy()
|
||||
invalidIngressUpdated.Spec.Rules[0].Host = "update-dummy"
|
||||
invalidIngressUpdated.Spec.Rules[0].Host = updateDummyHost
|
||||
_ = ensureIngress(invalidIngressUpdated, clientSet, t)
|
||||
if err != nil {
|
||||
t.Errorf("error creating ingress: %v", err)
|
||||
|
|
@ -725,7 +745,10 @@ func TestStore(t *testing.T) {
|
|||
return
|
||||
}
|
||||
|
||||
e := evt.(Event)
|
||||
e, ok := evt.(Event)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
if e.Obj == nil {
|
||||
continue
|
||||
}
|
||||
|
|
@ -778,7 +801,7 @@ func TestStore(t *testing.T) {
|
|||
time.Sleep(1 * time.Second)
|
||||
|
||||
invalidIngressUpdated := invalidIngress.DeepCopy()
|
||||
invalidIngressUpdated.Spec.Rules[0].Host = "update-dummy"
|
||||
invalidIngressUpdated.Spec.Rules[0].Host = updateDummyHost
|
||||
_ = ensureIngress(invalidIngressUpdated, clientSet, t)
|
||||
if err != nil {
|
||||
t.Errorf("error creating ingress: %v", err)
|
||||
|
|
@ -816,7 +839,10 @@ func TestStore(t *testing.T) {
|
|||
return
|
||||
}
|
||||
|
||||
e := evt.(Event)
|
||||
e, ok := evt.(Event)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
if e.Obj == nil {
|
||||
continue
|
||||
}
|
||||
|
|
@ -908,7 +934,10 @@ func TestStore(t *testing.T) {
|
|||
return
|
||||
}
|
||||
|
||||
e := evt.(Event)
|
||||
e, ok := evt.(Event)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
if e.Obj == nil {
|
||||
continue
|
||||
}
|
||||
|
|
@ -1008,7 +1037,6 @@ func TestStore(t *testing.T) {
|
|||
if atomic.LoadUint64(&del) != 1 {
|
||||
t.Errorf("expected 1 events of type Delete but %v occurred", del)
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
t.Run("should create an ingress with a secret which does not exist", func(t *testing.T) {
|
||||
|
|
@ -1032,7 +1060,10 @@ func TestStore(t *testing.T) {
|
|||
return
|
||||
}
|
||||
|
||||
e := evt.(Event)
|
||||
e, ok := evt.(Event)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
if e.Obj == nil {
|
||||
continue
|
||||
}
|
||||
|
|
@ -1159,7 +1190,10 @@ func TestStore(t *testing.T) {
|
|||
return
|
||||
}
|
||||
|
||||
e := evt.(Event)
|
||||
e, ok := evt.(Event)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
if e.Obj == nil {
|
||||
continue
|
||||
}
|
||||
|
|
@ -1174,7 +1208,10 @@ func TestStore(t *testing.T) {
|
|||
}
|
||||
}(updateCh)
|
||||
|
||||
namesapceSelector, _ := labels.Parse("foo=bar")
|
||||
namesapceSelector, err := labels.Parse("foo=bar")
|
||||
if err != nil {
|
||||
t.Errorf("unexpected error: %v", err)
|
||||
}
|
||||
storer := New(
|
||||
ns,
|
||||
namesapceSelector,
|
||||
|
|
@ -1236,7 +1273,6 @@ func TestStore(t *testing.T) {
|
|||
if atomic.LoadUint64(&del) != 0 {
|
||||
t.Errorf("expected 0 events of type Delete but %v occurred", del)
|
||||
}
|
||||
|
||||
})
|
||||
// test add ingress with secret it doesn't exists and then add secret
|
||||
// check secret is generated on fs
|
||||
|
|
@ -1274,16 +1310,16 @@ func deleteNamespace(ns string, clientSet kubernetes.Interface, t *testing.T) {
|
|||
|
||||
func createIngressClass(clientSet kubernetes.Interface, t *testing.T, controller string) string {
|
||||
t.Helper()
|
||||
ingressclass := &networking.IngressClass{
|
||||
class := &networking.IngressClass{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: fmt.Sprintf("ingress-nginx-%v", time.Now().Unix()),
|
||||
//Namespace: "xpto" // TODO: We don't support namespaced ingress-class yet
|
||||
// Namespace: "xpto" // TODO: We don't support namespaced ingress-class yet
|
||||
},
|
||||
Spec: networking.IngressClassSpec{
|
||||
Controller: controller,
|
||||
},
|
||||
}
|
||||
ic, err := clientSet.NetworkingV1().IngressClasses().Create(context.TODO(), ingressclass, metav1.CreateOptions{})
|
||||
ic, err := clientSet.NetworkingV1().IngressClasses().Create(context.TODO(), class, metav1.CreateOptions{})
|
||||
if err != nil {
|
||||
t.Errorf("error creating ingress class: %v", err)
|
||||
}
|
||||
|
|
@ -1299,7 +1335,7 @@ func deleteIngressClass(ic string, clientSet kubernetes.Interface, t *testing.T)
|
|||
}
|
||||
}
|
||||
|
||||
func createConfigMap(clientSet kubernetes.Interface, ns string, t *testing.T) string {
|
||||
func createConfigMap(clientSet kubernetes.Interface, ns string, t *testing.T) {
|
||||
t.Helper()
|
||||
|
||||
configMap := &v1.ConfigMap{
|
||||
|
|
@ -1308,51 +1344,47 @@ func createConfigMap(clientSet kubernetes.Interface, ns string, t *testing.T) st
|
|||
},
|
||||
}
|
||||
|
||||
cm, err := clientSet.CoreV1().ConfigMaps(ns).Create(context.TODO(), configMap, metav1.CreateOptions{})
|
||||
_, err := clientSet.CoreV1().ConfigMaps(ns).Create(context.TODO(), configMap, metav1.CreateOptions{})
|
||||
if err != nil {
|
||||
t.Errorf("error creating the configuration map: %v", err)
|
||||
}
|
||||
|
||||
return cm.Name
|
||||
}
|
||||
|
||||
func ensureIngress(ingress *networking.Ingress, clientSet kubernetes.Interface, t *testing.T) *networking.Ingress {
|
||||
func ensureIngress(ing *networking.Ingress, clientSet kubernetes.Interface, t *testing.T) *networking.Ingress {
|
||||
t.Helper()
|
||||
ing, err := clientSet.NetworkingV1().Ingresses(ingress.Namespace).Update(context.TODO(), ingress, metav1.UpdateOptions{})
|
||||
|
||||
newIngress, err := clientSet.NetworkingV1().Ingresses(ing.Namespace).Update(context.TODO(), ing, metav1.UpdateOptions{})
|
||||
if err != nil {
|
||||
if k8sErrors.IsNotFound(err) {
|
||||
t.Logf("Ingress %v not found, creating", ingress)
|
||||
t.Logf("Ingress %v not found, creating", ing)
|
||||
|
||||
ing, err = clientSet.NetworkingV1().Ingresses(ingress.Namespace).Create(context.TODO(), ingress, metav1.CreateOptions{})
|
||||
newIngress, err = clientSet.NetworkingV1().Ingresses(ing.Namespace).Create(context.TODO(), ing, metav1.CreateOptions{})
|
||||
if err != nil {
|
||||
t.Fatalf("error creating ingress %+v: %v", ingress, err)
|
||||
t.Fatalf("error creating ingress %+v: %v", ing, err)
|
||||
}
|
||||
|
||||
t.Logf("Ingress %+v created", ingress)
|
||||
return ing
|
||||
t.Logf("Ingress %+v created", ing)
|
||||
return newIngress
|
||||
}
|
||||
|
||||
t.Fatalf("error updating ingress %+v: %v", ingress, err)
|
||||
t.Fatalf("error updating ingress %+v: %v", ing, err)
|
||||
}
|
||||
|
||||
return ing
|
||||
return newIngress
|
||||
}
|
||||
|
||||
func deleteIngress(ingress *networking.Ingress, clientSet kubernetes.Interface, t *testing.T) {
|
||||
func deleteIngress(ing *networking.Ingress, clientSet kubernetes.Interface, t *testing.T) {
|
||||
t.Helper()
|
||||
err := clientSet.NetworkingV1().Ingresses(ingress.Namespace).Delete(context.TODO(), ingress.Name, metav1.DeleteOptions{})
|
||||
|
||||
err := clientSet.NetworkingV1().Ingresses(ing.Namespace).Delete(context.TODO(), ing.Name, metav1.DeleteOptions{})
|
||||
if err != nil {
|
||||
t.Errorf("failed to delete ingress %+v: %v", ingress, err)
|
||||
t.Errorf("failed to delete ingress %+v: %v", ing, err)
|
||||
}
|
||||
|
||||
t.Logf("Ingress %+v deleted", ingress)
|
||||
t.Logf("Ingress %+v deleted", ing)
|
||||
}
|
||||
|
||||
// newStore creates a new mock object store for tests which do not require the
|
||||
// use of Informers.
|
||||
func newStore(t *testing.T) *k8sStore {
|
||||
func newStore() *k8sStore {
|
||||
return &k8sStore{
|
||||
listers: &Lister{
|
||||
// add more listers if needed
|
||||
|
|
@ -1369,7 +1401,7 @@ func newStore(t *testing.T) *k8sStore {
|
|||
}
|
||||
|
||||
func TestUpdateSecretIngressMap(t *testing.T) {
|
||||
s := newStore(t)
|
||||
s := newStore()
|
||||
|
||||
ingTpl := &networking.Ingress{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
|
|
@ -1431,7 +1463,9 @@ func TestUpdateSecretIngressMap(t *testing.T) {
|
|||
ing.ObjectMeta.SetAnnotations(map[string]string{
|
||||
parser.GetAnnotationWithPrefix("auth-secret"): "anotherns/auth",
|
||||
})
|
||||
s.listers.Ingress.Update(ing)
|
||||
if err := s.listers.Ingress.Update(ing); err != nil {
|
||||
t.Errorf("error updating the Ingress: %v", err)
|
||||
}
|
||||
s.updateSecretIngressMap(ing)
|
||||
|
||||
if l := s.secretIngressMap.Len(); l != 0 {
|
||||
|
|
@ -1456,7 +1490,7 @@ func TestUpdateSecretIngressMap(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestListIngresses(t *testing.T) {
|
||||
s := newStore(t)
|
||||
s := newStore()
|
||||
invalidIngressClass := "something"
|
||||
validIngressClass := ingressclass.DefaultControllerName
|
||||
|
||||
|
|
@ -1586,7 +1620,7 @@ func TestWriteSSLSessionTicketKey(t *testing.T) {
|
|||
}
|
||||
|
||||
for _, test := range tests {
|
||||
s := newStore(t)
|
||||
s := newStore()
|
||||
|
||||
cmap := &v1.ConfigMap{
|
||||
Data: map[string]string{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue