github.com/cilium/cilium@v1.16.2/operator/pkg/gateway-api/gatewayclass.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // Copyright Authors of Cilium 3 4 package gateway_api 5 6 import ( 7 "k8s.io/apimachinery/pkg/runtime" 8 ctrl "sigs.k8s.io/controller-runtime" 9 "sigs.k8s.io/controller-runtime/pkg/builder" 10 "sigs.k8s.io/controller-runtime/pkg/client" 11 "sigs.k8s.io/controller-runtime/pkg/predicate" 12 gatewayv1 "sigs.k8s.io/gateway-api/apis/v1" 13 ) 14 15 // gatewayClassReconciler reconciles a GatewayClass object 16 type gatewayClassReconciler struct { 17 client.Client 18 Scheme *runtime.Scheme 19 } 20 21 func newGatewayClassReconciler(mgr ctrl.Manager) *gatewayClassReconciler { 22 return &gatewayClassReconciler{ 23 Client: mgr.GetClient(), 24 Scheme: mgr.GetScheme(), 25 } 26 } 27 28 // SetupWithManager sets up the controller with the Manager. 29 func (r *gatewayClassReconciler) SetupWithManager(mgr ctrl.Manager) error { 30 return ctrl.NewControllerManagedBy(mgr). 31 For(&gatewayv1.GatewayClass{}, 32 builder.WithPredicates(predicate.NewPredicateFuncs(matchesControllerName(controllerName)))). 33 Complete(r) 34 } 35 36 func matchesControllerName(controllerName string) func(object client.Object) bool { 37 return func(object client.Object) bool { 38 gwc, ok := object.(*gatewayv1.GatewayClass) 39 if !ok { 40 return false 41 } 42 return string(gwc.Spec.ControllerName) == controllerName 43 } 44 }