@@ -294,65 +294,72 @@ func (h *eventHandlerImpl) waitForStatusUpdates(ctx context.Context) {
294
294
return
295
295
}
296
296
297
- // TODO(sberman): once we support multiple Gateways, we'll have to get
298
- // the correct Graph for the Deployment contained in the update message
299
297
gr := h .cfg .processor .GetLatestGraph ()
300
298
if gr == nil {
301
299
continue
302
300
}
303
301
302
+ deploymentName := item .Deployment
303
+ gw := gr .Gateways [deploymentName ]
304
+
304
305
var nginxReloadRes graph.NginxReloadResult
305
- for _ , gw := range gr .Gateways {
306
- switch {
307
- case item .Error != nil :
308
- h .cfg .logger .Error (item .Error , "Failed to update NGINX configuration" )
309
- nginxReloadRes .Error = item .Error
310
- case gw != nil :
311
- h .cfg .logger .Info ("NGINX configuration was successfully updated" )
312
- }
313
- gr .LatestReloadResult = nginxReloadRes
314
-
315
- switch item .UpdateType {
316
- case status .UpdateAll :
317
- h .updateStatuses (ctx , gr , gw )
318
- case status .UpdateGateway :
319
- gwAddresses , err := getGatewayAddresses (
320
- ctx ,
321
- h .cfg .k8sClient ,
306
+ switch {
307
+ case item .Error != nil :
308
+ h .cfg .logger .Error (item .Error , "Failed to update NGINX configuration" )
309
+ nginxReloadRes .Error = item .Error
310
+ case gw != nil :
311
+ h .cfg .logger .Info ("NGINX configuration was successfully updated" )
312
+ }
313
+ gr .LatestReloadResult [deploymentName ] = nginxReloadRes
314
+
315
+ switch item .UpdateType {
316
+ case status .UpdateAll :
317
+ h .updateStatuses (ctx , gr , gw )
318
+ case status .UpdateGateway :
319
+ gwAddresses , err := getGatewayAddresses (
320
+ ctx ,
321
+ h .cfg .k8sClient ,
322
+ item .GatewayService ,
323
+ gw ,
324
+ h .cfg .gatewayClassName ,
325
+ )
326
+ if err != nil {
327
+ msg := "error getting Gateway Service IP address"
328
+ h .cfg .logger .Error (err , msg )
329
+ h .cfg .eventRecorder .Eventf (
322
330
item .GatewayService ,
323
- gw ,
324
- h .cfg .gatewayClassName ,
325
- )
326
- if err != nil {
327
- msg := "error getting Gateway Service IP address"
328
- h .cfg .logger .Error (err , msg )
329
- h .cfg .eventRecorder .Eventf (
330
- item .GatewayService ,
331
- v1 .EventTypeWarning ,
332
- "GetServiceIPFailed" ,
333
- msg + ": %s" ,
334
- err .Error (),
335
- )
336
- continue
337
- }
338
-
339
- transitionTime := metav1 .Now ()
340
-
341
- gatewayStatuses := status .PrepareGatewayRequests (
342
- gw ,
343
- transitionTime ,
344
- gwAddresses ,
345
- gr .LatestReloadResult ,
331
+ v1 .EventTypeWarning ,
332
+ "GetServiceIPFailed" ,
333
+ msg + ": %s" ,
334
+ err .Error (),
346
335
)
347
- h .cfg .statusUpdater .UpdateGroup (ctx , groupGateways , gatewayStatuses ... )
348
- default :
349
- panic (fmt .Sprintf ("unknown event type %T" , item .UpdateType ))
336
+ continue
350
337
}
338
+
339
+ transitionTime := metav1 .Now ()
340
+
341
+ gatewayStatuses := status .PrepareGatewayRequests (
342
+ gw ,
343
+ transitionTime ,
344
+ gwAddresses ,
345
+ gr .LatestReloadResult [deploymentName ],
346
+ )
347
+ h .cfg .statusUpdater .UpdateGroup (ctx , groupGateways , gatewayStatuses ... )
348
+ default :
349
+ panic (fmt .Sprintf ("unknown event type %T" , item .UpdateType ))
351
350
}
352
351
}
353
352
}
354
353
355
354
func (h * eventHandlerImpl ) updateStatuses (ctx context.Context , gr * graph.Graph , gw * graph.Gateway ) {
355
+ transitionTime := metav1 .Now ()
356
+ gcReqs := status .PrepareGatewayClassRequests (gr .GatewayClass , gr .IgnoredGatewayClasses , transitionTime )
357
+
358
+ if gw == nil || gw .DeploymentName == (types.NamespacedName {}) {
359
+ h .cfg .statusUpdater .UpdateGroup (ctx , groupAllExceptGateways , gcReqs ... )
360
+ return
361
+ }
362
+
356
363
gwAddresses , err := getGatewayAddresses (ctx , h .cfg .k8sClient , nil , gw , h .cfg .gatewayClassName )
357
364
if err != nil {
358
365
msg := "error getting Gateway Service IP address"
@@ -366,14 +373,11 @@ func (h *eventHandlerImpl) updateStatuses(ctx context.Context, gr *graph.Graph,
366
373
)
367
374
}
368
375
369
- transitionTime := metav1 .Now ()
370
-
371
- gcReqs := status .PrepareGatewayClassRequests (gr .GatewayClass , gr .IgnoredGatewayClasses , transitionTime )
372
376
routeReqs := status .PrepareRouteRequests (
373
377
gr .L4Routes ,
374
378
gr .Routes ,
375
379
transitionTime ,
376
- gr .LatestReloadResult ,
380
+ gr .LatestReloadResult [ gw . DeploymentName ] ,
377
381
h .cfg .gatewayCtlrName ,
378
382
)
379
383
@@ -404,7 +408,7 @@ func (h *eventHandlerImpl) updateStatuses(ctx context.Context, gr *graph.Graph,
404
408
gw ,
405
409
transitionTime ,
406
410
gwAddresses ,
407
- gr .LatestReloadResult ,
411
+ gr .LatestReloadResult [ gw . DeploymentName ] ,
408
412
)
409
413
h .cfg .statusUpdater .UpdateGroup (ctx , groupGateways , gwReqs ... )
410
414
}
0 commit comments