in pkg/controllers/gateway_controller.go [64:114]
func RegisterGatewayController(
log gwlog.Logger,
cloud aws.Cloud,
finalizerManager k8s.FinalizerManager,
mgr ctrl.Manager,
) error {
mgrClient := mgr.GetClient()
scheme := mgr.GetScheme()
evtRec := mgr.GetEventRecorderFor("gateway")
r := &gatewayReconciler{
log: log,
client: mgrClient,
scheme: scheme,
finalizerManager: finalizerManager,
eventRecorder: evtRec,
cloud: cloud,
}
if config.DefaultServiceNetwork != "" {
// Attempt creation of default service network, move gracefully even if it fails.
snManager := deploy.NewDefaultServiceNetworkManager(log, cloud)
_, err := snManager.CreateOrUpdate(context.Background(), &model.ServiceNetwork{
Spec: model.ServiceNetworkSpec{
Name: config.DefaultServiceNetwork,
},
})
if err != nil {
log.Infof(context.TODO(), "Could not setup default service network %s, proceeding without it - %s",
config.DefaultServiceNetwork, err.Error())
}
}
gwClassEventHandler := eventhandlers.NewEnqueueRequestsForGatewayClassEvent(log, mgrClient)
vpcAssociationPolicyEventHandler := eventhandlers.NewVpcAssociationPolicyEventHandler(log, mgrClient)
builder := ctrl.NewControllerManagedBy(mgr).
For(&gwv1.Gateway{}, pkg_builder.WithPredicates(predicate.GenerationChangedPredicate{}))
builder.Watches(&gwv1.GatewayClass{}, gwClassEventHandler)
//Watch VpcAssociationPolicy CRD if it is installed
ok, err := k8s.IsGVKSupported(mgr, anv1alpha1.GroupVersion.String(), anv1alpha1.VpcAssociationPolicyKind)
if err != nil {
return err
}
if ok {
builder.Watches(&anv1alpha1.VpcAssociationPolicy{}, vpcAssociationPolicyEventHandler.MapToGateway())
} else {
log.Infof(context.TODO(), "VpcAssociationPolicy CRD is not installed, skipping watch")
}
return builder.Complete(r)
}