in pkg/providers/gateway/provider.go [109:181]
func NewGatewayProvider(opts *ProviderOptions) (*Provider, error) {
var err error
if opts.RestConfig == nil {
restConfig, err := kube.BuildRestConfig(opts.Cfg.Kubernetes.Kubeconfig, "")
if err != nil {
return nil, err
}
opts.RestConfig = restConfig
}
gatewayKubeClient, err := gatewayclientset.NewForConfig(opts.RestConfig)
if err != nil {
return nil, err
}
rClient, err := runtimeclient.New(opts.RestConfig, runtimeclient.Options{Scheme: scheme.Scheme})
if err != nil {
return nil, err
}
p := &Provider{
name: ProviderName,
gatewayClasses: make(map[string]struct{}),
listeners: make(map[string]map[string]*types.ListenerConf),
portListeners: make(map[gatewayv1beta1.PortNumber]*types.ListenerConf),
ProviderOptions: opts,
gatewayClient: gatewayKubeClient,
runtimeClient: rClient,
translator: gatewaytranslation.NewTranslator(&gatewaytranslation.TranslatorOptions{
KubeTranslator: opts.KubeTranslator,
}),
}
gatewayFactory := gatewayexternalversions.NewSharedInformerFactory(p.gatewayClient, p.Cfg.Kubernetes.ResyncInterval.Duration)
p.gatewayLister = gatewayFactory.Gateway().V1beta1().Gateways().Lister()
p.gatewayInformer = gatewayFactory.Gateway().V1beta1().Gateways().Informer()
p.gatewayClassLister = gatewayFactory.Gateway().V1beta1().GatewayClasses().Lister()
p.gatewayClassInformer = gatewayFactory.Gateway().V1beta1().GatewayClasses().Informer()
p.gatewayHTTPRouteLister = gatewayFactory.Gateway().V1beta1().HTTPRoutes().Lister()
p.gatewayHTTPRouteInformer = gatewayFactory.Gateway().V1beta1().HTTPRoutes().Informer()
p.gatewayTLSRouteLister = gatewayFactory.Gateway().V1alpha2().TLSRoutes().Lister()
p.gatewayTLSRouteInformer = gatewayFactory.Gateway().V1alpha2().TLSRoutes().Informer()
p.gatewayTCPRouteLister = gatewayFactory.Gateway().V1alpha2().TCPRoutes().Lister()
p.gatewayTCPRouteInformer = gatewayFactory.Gateway().V1alpha2().TCPRoutes().Informer()
p.gatewayUDPRouteLister = gatewayFactory.Gateway().V1alpha2().UDPRoutes().Lister()
p.gatewayUDPRouteInformer = gatewayFactory.Gateway().V1alpha2().UDPRoutes().Informer()
p.gatewayController = newGatewayController(p)
p.validator = *newValidator(p)
p.gatewayClassController, err = newGatewayClassController(p)
if err != nil {
return nil, err
}
p.gatewayHTTPRouteController = newGatewayHTTPRouteController(p)
p.gatewayTLSRouteController = newGatewayTLSRouteController(p)
p.gatewayUDPRouteController = newGatewayUDPRouteController(p)
p.gatewayTCPRouteController = newGatewayTCPRouteController(p)
return p, nil
}