Skip to content

Commit 16a28ad

Browse files
committed
fix: r
Signed-off-by: Ashing Zheng <[email protected]>
1 parent 97866c6 commit 16a28ad

10 files changed

+40
-30
lines changed

internal/controller/apisixconsumer_controller.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ func (r *ApisixConsumerReconciler) Reconcile(ctx context.Context, req ctrl.Reque
9090
err error
9191
)
9292

93-
if ingressClass, err = FindMatchingIngressClass(tctx, r.Client, r.Log, ac); err != nil {
93+
if ingressClass, err = FindMatchingIngressClassByObject(tctx, r.Client, r.Log, ac, r.ICGV.String()); err != nil {
9494
r.Log.V(1).Info("no matching IngressClass available",
9595
"ingressClassName", ac.Spec.IngressClassName,
9696
"error", err.Error())
@@ -128,7 +128,7 @@ func (r *ApisixConsumerReconciler) SetupWithManager(mgr ctrl.Manager) error {
128128
return ctrl.NewControllerManagedBy(mgr).
129129
For(&apiv2.ApisixConsumer{},
130130
builder.WithPredicates(
131-
MatchesIngressClassPredicate(r.Client, r.Log),
131+
MatchesIngressClassPredicateByAPIVersion(r.Client, r.Log, r.ICGV.String()),
132132
)).
133133
WithEventFilter(
134134
predicate.Or(

internal/controller/apisixglobalrule_controller.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ func (r *ApisixGlobalRuleReconciler) Reconcile(ctx context.Context, req ctrl.Req
8787
tctx := provider.NewDefaultTranslateContext(ctx)
8888

8989
// get the ingress class
90-
ingressClass, err := FindMatchingIngressClass(tctx, r.Client, r.Log, &globalRule)
90+
ingressClass, err := FindMatchingIngressClassByObject(tctx, r.Client, r.Log, &globalRule, r.ICGV.String())
9191
if err != nil {
9292
r.Log.V(1).Info("no matching IngressClass available",
9393
"ingressClassName", globalRule.Spec.IngressClassName,
@@ -144,7 +144,7 @@ func (r *ApisixGlobalRuleReconciler) SetupWithManager(mgr ctrl.Manager) error {
144144
return ctrl.NewControllerManagedBy(mgr).
145145
For(&apiv2.ApisixGlobalRule{},
146146
builder.WithPredicates(
147-
MatchesIngressClassPredicate(r.Client, r.Log),
147+
MatchesIngressClassPredicateByAPIVersion(r.Client, r.Log, r.ICGV.String()),
148148
),
149149
).
150150
WithEventFilter(

internal/controller/apisixpluginconfig_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ func (r *ApisixPluginConfigReconciler) Reconcile(ctx context.Context, req ctrl.R
6060
}
6161
tctx := provider.NewDefaultTranslateContext(ctx)
6262

63-
_, err := FindMatchingIngressClass(tctx, r.Client, r.Log, &pc)
63+
_, err := FindMatchingIngressClassByObject(tctx, r.Client, r.Log, &pc, r.ICGV.String())
6464
if err != nil {
6565
r.Log.V(1).Info("no matching IngressClass available",
6666
"ingressClassName", pc.Spec.IngressClassName,

internal/controller/apisixroute_controller.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ func (r *ApisixRouteReconciler) SetupWithManager(mgr ctrl.Manager) error {
9393
bdr := ctrl.NewControllerManagedBy(mgr).
9494
For(&apiv2.ApisixRoute{},
9595
builder.WithPredicates(
96-
MatchesIngressClassPredicate(r.Client, r.Log),
96+
MatchesIngressClassPredicateByAPIVersion(r.Client, r.Log, r.ICGV.String()),
9797
),
9898
).
9999
WithEventFilter(predicate.Or(eventFilters...)).
@@ -155,7 +155,7 @@ func (r *ApisixRouteReconciler) Reconcile(ctx context.Context, req ctrl.Request)
155155
err error
156156
)
157157

158-
if ic, err = FindMatchingIngressClass(tctx, r.Client, r.Log, &ar); err != nil {
158+
if ic, err = FindMatchingIngressClassByObject(tctx, r.Client, r.Log, &ar, r.ICGV.String()); err != nil {
159159
r.Log.V(1).Info("no matching IngressClass available",
160160
"ingressClassName", ar.Spec.IngressClassName,
161161
"error", err.Error())

internal/controller/apisixtls_controller.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ func (r *ApisixTlsReconciler) SetupWithManager(mgr ctrl.Manager) error {
7070
return ctrl.NewControllerManagedBy(mgr).
7171
For(&apiv2.ApisixTls{},
7272
builder.WithPredicates(
73-
MatchesIngressClassPredicate(r.Client, r.Log),
73+
MatchesIngressClassPredicateByAPIVersion(r.Client, r.Log, r.ICGV.String()),
7474
),
7575
).
7676
WithEventFilter(
@@ -126,7 +126,7 @@ func (r *ApisixTlsReconciler) Reconcile(ctx context.Context, req ctrl.Request) (
126126
tctx := provider.NewDefaultTranslateContext(ctx)
127127

128128
// get the ingress class
129-
ingressClass, err := FindMatchingIngressClass(tctx, r.Client, r.Log, &tls)
129+
ingressClass, err := FindMatchingIngressClassByObject(tctx, r.Client, r.Log, &tls, r.ICGV.String())
130130
if err != nil {
131131
r.Log.V(1).Info("no matching IngressClass available, skip processing",
132132
"ingressClassName", tls.Spec.IngressClassName,

internal/controller/apisixupstream_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ func (r *ApisixUpstreamReconciler) Reconcile(ctx context.Context, req ctrl.Reque
6060

6161
tctx := provider.NewDefaultTranslateContext(ctx)
6262

63-
_, err := FindMatchingIngressClass(tctx, r.Client, r.Log, &au)
63+
_, err := FindMatchingIngressClassByObject(tctx, r.Client, r.Log, &au, r.ICGV.String())
6464
if err != nil {
6565
r.Log.V(1).Info("no matching IngressClass available, skip processing",
6666
"ingressClassName", au.Spec.IngressClassName,

internal/controller/httproutepolicy.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ func (r *IngressReconciler) updateHTTPRoutePolicyStatusOnDeleting(ctx context.Co
198198
if err := r.Get(ctx, namespacedName, &ingress); err != nil {
199199
continue
200200
}
201-
ingressClass, err := FindMatchingIngressClass(ctx, r.Client, r.Log, &ingress)
201+
ingressClass, err := FindMatchingIngressClassByObject(ctx, r.Client, r.Log, &ingress, "")
202202
if err != nil {
203203
continue
204204
}

internal/controller/ingress_controller.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ func (r *IngressReconciler) SetupWithManager(mgr ctrl.Manager) error {
8787
bdr := ctrl.NewControllerManagedBy(mgr).
8888
For(&networkingv1.Ingress{},
8989
builder.WithPredicates(
90-
MatchesIngressClassPredicate(r.Client, r.Log),
90+
MatchesIngressClassPredicateByAPIVersion(r.Client, r.Log, ""),
9191
),
9292
).
9393
WithEventFilter(predicate.Or(eventFilters...)).
@@ -166,7 +166,7 @@ func (r *IngressReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct
166166
// create a translate context
167167
tctx := provider.NewDefaultTranslateContext(ctx)
168168

169-
ingressClass, err := FindMatchingIngressClass(tctx, r.Client, r.Log, ingress)
169+
ingressClass, err := FindMatchingIngressClassByObject(tctx, r.Client, r.Log, ingress, "")
170170
if err != nil {
171171
if err := r.Provider.Delete(ctx, ingress); err != nil {
172172
r.Log.Error(err, "failed to delete ingress resources", "ingress", ingress.Name)
@@ -309,7 +309,7 @@ func (r *IngressReconciler) listIngressesByService(ctx context.Context, obj clie
309309

310310
requests := make([]reconcile.Request, 0, len(ingressList.Items))
311311
for _, ingress := range ingressList.Items {
312-
if MatchesIngressClass(r.Client, r.Log, &ingress) {
312+
if MatchesIngressClassByAPIVersion(r.Client, r.Log, &ingress, "") {
313313
requests = append(requests, reconcile.Request{
314314
NamespacedName: client.ObjectKey{
315315
Namespace: ingress.Namespace,
@@ -343,7 +343,7 @@ func (r *IngressReconciler) listIngressesByEndpoints(ctx context.Context, obj cl
343343

344344
requests := make([]reconcile.Request, 0, len(ingressList.Items))
345345
for _, ingress := range ingressList.Items {
346-
if r.checkIngressClass(&ingress) {
346+
if MatchesIngressClassByAPIVersion(r.Client, r.Log, &ingress, "") {
347347
requests = append(requests, reconcile.Request{
348348
NamespacedName: client.ObjectKey{
349349
Namespace: ingress.Namespace,
@@ -376,7 +376,7 @@ func (r *IngressReconciler) listIngressesBySecret(ctx context.Context, obj clien
376376

377377
requests := make([]reconcile.Request, 0, len(ingressList.Items))
378378
for _, ingress := range ingressList.Items {
379-
if MatchesIngressClass(r.Client, r.Log, &ingress) {
379+
if MatchesIngressClassByAPIVersion(r.Client, r.Log, &ingress, "") {
380380
requests = append(requests, reconcile.Request{
381381
NamespacedName: client.ObjectKey{
382382
Namespace: ingress.Namespace,

internal/controller/utils.go

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1396,6 +1396,7 @@ func GetIngressClassV1Beta1(ctx context.Context, c client.Client, log logr.Logge
13961396
return &ic, nil
13971397
}
13981398
}
1399+
log.V(1).Info("no default ingress class(v1beta1) found")
13991400
return nil, errors.New("no default ingress class found")
14001401
}
14011402

@@ -1412,12 +1413,7 @@ func GetIngressClassV1Beta1(ctx context.Context, c client.Client, log logr.Logge
14121413
return nil, errors.New("ingress class is not controlled by us")
14131414
}
14141415

1415-
func FindMatchingIngressClass(ctx context.Context, c client.Client, log logr.Logger, obj client.Object) (*networkingv1.IngressClass, error) {
1416-
ingressClassName := ExtractIngressClass(obj)
1417-
return FindMatchingIngressClassByName(ctx, c, log, ingressClassName)
1418-
}
1419-
1420-
func FindMatchingIngressClassByName(ctx context.Context, c client.Client, log logr.Logger, ingressClassName string) (*networkingv1.IngressClass, error) {
1416+
func GetIngressClassV1(ctx context.Context, c client.Client, log logr.Logger, ingressClassName string) (*networkingv1.IngressClass, error) {
14211417
if ingressClassName == "" {
14221418
// Check for default ingress class
14231419
ingressClassList := &networkingv1.IngressClassList{}
@@ -1451,7 +1447,21 @@ func FindMatchingIngressClassByName(ctx context.Context, c client.Client, log lo
14511447
return nil, errors.New("ingress class is not controlled by us")
14521448
}
14531449

1454-
func GetIngressClass(ctx context.Context, c client.Client, log logr.Logger, ingressClassName string, apiVersion string) (*networkingv1.IngressClass, error) {
1450+
func FindMatchingIngressClassByObject(ctx context.Context, c client.Client, log logr.Logger, obj client.Object, apiVersion string) (*networkingv1.IngressClass, error) {
1451+
ingressClassName := ExtractIngressClass(obj)
1452+
switch apiVersion {
1453+
case networkingv1beta1.SchemeGroupVersion.String():
1454+
icBeta, err := GetIngressClassV1Beta1(ctx, c, log, ingressClassName)
1455+
if err != nil {
1456+
return nil, err
1457+
}
1458+
return pkgutils.ConvertToIngressClassV1(icBeta), nil
1459+
default:
1460+
return GetIngressClassV1(ctx, c, log, ingressClassName)
1461+
}
1462+
}
1463+
1464+
func FindMatchingIngressClassByName(ctx context.Context, c client.Client, log logr.Logger, ingressClassName string, apiVersion string) (*networkingv1.IngressClass, error) {
14551465
switch apiVersion {
14561466
case networkingv1beta1.SchemeGroupVersion.String():
14571467
icBeta, err := GetIngressClassV1Beta1(ctx, c, log, ingressClassName)
@@ -1460,7 +1470,7 @@ func GetIngressClass(ctx context.Context, c client.Client, log logr.Logger, ingr
14601470
}
14611471
return pkgutils.ConvertToIngressClassV1(icBeta), nil
14621472
default:
1463-
return GetIngressClassv1(ctx, c, log, ingressClassName)
1473+
return GetIngressClassV1(ctx, c, log, ingressClassName)
14641474
}
14651475
}
14661476

@@ -1634,18 +1644,18 @@ func filterEndpointSliceByTargetPod(ctx context.Context, c client.Client, item d
16341644
return item
16351645
}
16361646

1637-
func MatchesIngressClassPredicate(c client.Client, log logr.Logger) predicate.Funcs {
1647+
func MatchesIngressClassPredicateByAPIVersion(c client.Client, log logr.Logger, apiVersion string) predicate.Funcs {
16381648
predicateFuncs := predicate.NewPredicateFuncs(func(obj client.Object) bool {
1639-
return MatchesIngressClass(c, log, obj)
1649+
return MatchesIngressClassByAPIVersion(c, log, obj, apiVersion)
16401650
})
16411651
predicateFuncs.UpdateFunc = func(e event.UpdateEvent) bool {
1642-
return MatchesIngressClass(c, log, e.ObjectOld) || MatchesIngressClass(c, log, e.ObjectNew)
1652+
return MatchesIngressClassByAPIVersion(c, log, e.ObjectOld, apiVersion) || MatchesIngressClassByAPIVersion(c, log, e.ObjectNew, apiVersion)
16431653
}
16441654
return predicateFuncs
16451655
}
16461656

1647-
func MatchesIngressClass(c client.Client, log logr.Logger, obj client.Object) bool {
1648-
_, err := FindMatchingIngressClass(context.Background(), c, log, obj)
1657+
func MatchesIngressClassByAPIVersion(c client.Client, log logr.Logger, obj client.Object, apiVersion string) bool {
1658+
_, err := FindMatchingIngressClassByObject(context.Background(), c, log, obj, apiVersion)
16491659
return err == nil
16501660
}
16511661

internal/manager/controllers.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ func registerV2ForReadinessGVK(mgr manager.Manager, readier readiness.ReadinessM
266266
GVKs: gvks,
267267
Filter: readiness.GVKFilter(func(obj *unstructured.Unstructured) bool {
268268
icName, _, _ := unstructured.NestedString(obj.Object, "spec", "ingressClassName")
269-
ingressClass, _ := controller.FindMatchingIngressClassByName(context.Background(), c, log, icName)
269+
ingressClass, _ := controller.FindMatchingIngressClassByName(context.Background(), c, log, icName, icgv.String())
270270
return ingressClass != nil
271271
}),
272272
})

0 commit comments

Comments
 (0)