@@ -42,6 +42,12 @@ func SetupIndexer(mgr ctrl.Manager) error {
4242 if err := setupBackendTrafficPolicyIndexer (mgr ); err != nil {
4343 return err
4444 }
45+ if err := setupIngressClassIndexer (mgr ); err != nil {
46+ return err
47+ }
48+ if err := setupGatewayProxyIndexer (mgr ); err != nil {
49+ return err
50+ }
4551 return nil
4652}
4753
@@ -149,53 +155,90 @@ func setupHTTPRouteIndexer(mgr ctrl.Manager) error {
149155 return nil
150156}
151157
152- func setupIngressIndexer (mgr ctrl.Manager ) error {
158+ func setupIngressClassIndexer (mgr ctrl.Manager ) error {
153159 // create IngressClass index
154160 if err := mgr .GetFieldIndexer ().IndexField (
155161 context .Background (),
156- & networkingv1.Ingress {},
157- IngressClassRef ,
158- IngressClassRefIndexFunc ,
162+ & networkingv1.IngressClass {},
163+ IngressClass ,
164+ IngressClassIndexFunc ,
159165 ); err != nil {
160166 return err
161167 }
162168
163- // create Service index for quick lookup of Ingresses using specific services
169+ // create IngressClassParametersRef index
164170 if err := mgr .GetFieldIndexer ().IndexField (
165171 context .Background (),
166- & networkingv1.Ingress {},
167- ServiceIndexRef ,
168- IngressServiceIndexFunc ,
172+ & networkingv1.IngressClass {},
173+ IngressClassParametersRef ,
174+ IngressClassParametersRefIndexFunc ,
169175 ); err != nil {
170176 return err
171177 }
172178
173- // create secret index for TLS
179+ return nil
180+ }
181+
182+ func setupGatewayProxyIndexer (mgr ctrl.Manager ) error {
174183 if err := mgr .GetFieldIndexer ().IndexField (
175184 context .Background (),
176- & networkingv1. Ingress {},
185+ & v1alpha1. GatewayProxy {},
177186 SecretIndexRef ,
178- IngressSecretIndexFunc ,
187+ GatewayProxySecretIndexFunc ,
179188 ); err != nil {
180189 return err
181190 }
191+ return nil
192+ }
182193
194+ func GatewayProxySecretIndexFunc (rawObj client.Object ) []string {
195+ gatewayProxy := rawObj .(* v1alpha1.GatewayProxy )
196+ secretKeys := make ([]string , 0 )
197+
198+ // Check if provider is ControlPlane type and has AdminKey auth
199+ if gatewayProxy .Spec .Provider != nil &&
200+ gatewayProxy .Spec .Provider .Type == v1alpha1 .ProviderTypeControlPlane &&
201+ gatewayProxy .Spec .Provider .ControlPlane != nil &&
202+ gatewayProxy .Spec .Provider .ControlPlane .Auth .Type == v1alpha1 .AuthTypeAdminKey &&
203+ gatewayProxy .Spec .Provider .ControlPlane .Auth .AdminKey != nil &&
204+ gatewayProxy .Spec .Provider .ControlPlane .Auth .AdminKey .ValueFrom != nil &&
205+ gatewayProxy .Spec .Provider .ControlPlane .Auth .AdminKey .ValueFrom .SecretKeyRef != nil {
206+
207+ ref := gatewayProxy .Spec .Provider .ControlPlane .Auth .AdminKey .ValueFrom .SecretKeyRef
208+ ns := gatewayProxy .GetNamespace ()
209+ key := GenIndexKey (ns , ref .Name )
210+ secretKeys = append (secretKeys , key )
211+ }
212+ return secretKeys
213+ }
214+
215+ func setupIngressIndexer (mgr ctrl.Manager ) error {
183216 // create IngressClass index
184217 if err := mgr .GetFieldIndexer ().IndexField (
185218 context .Background (),
186- & networkingv1.IngressClass {},
187- IngressClass ,
188- IngressClassIndexFunc ,
219+ & networkingv1.Ingress {},
220+ IngressClassRef ,
221+ IngressClassRefIndexFunc ,
189222 ); err != nil {
190223 return err
191224 }
192225
193- // create IngressClassParametersRef index
226+ // create Service index for quick lookup of Ingresses using specific services
194227 if err := mgr .GetFieldIndexer ().IndexField (
195228 context .Background (),
196- & networkingv1.IngressClass {},
197- IngressClassParametersRef ,
198- IngressClassParametersRefIndexFunc ,
229+ & networkingv1.Ingress {},
230+ ServiceIndexRef ,
231+ IngressServiceIndexFunc ,
232+ ); err != nil {
233+ return err
234+ }
235+
236+ // create secret index for TLS
237+ if err := mgr .GetFieldIndexer ().IndexField (
238+ context .Background (),
239+ & networkingv1.Ingress {},
240+ SecretIndexRef ,
241+ IngressSecretIndexFunc ,
199242 ); err != nil {
200243 return err
201244 }
0 commit comments