in pkg/deploy/lattice/listener_synthesizer.go [36:91]
func (l *listenerSynthesizer) Synthesize(ctx context.Context) error {
var stackListeners []*model.Listener
err := l.stack.ListResources(&stackListeners)
if err != nil {
return err
}
var listenerErr error
for _, listener := range stackListeners {
svc := &model.Service{}
err := l.stack.GetResource(listener.Spec.StackServiceId, svc)
if err != nil {
return err
}
if listener.Spec.DefaultAction.Forward != nil {
// Fill the listener forward action target group ids
if err := l.tgManager.ResolveRuleTgIds(ctx, listener.Spec.DefaultAction.Forward, l.stack); err != nil {
return fmt.Errorf("failed to resolve rule tg ids, err = %v", err)
}
}
status, err := l.listenerMgr.Upsert(ctx, listener, svc)
if err != nil {
listenerErr = errors.Join(listenerErr,
fmt.Errorf("failed ListenerManager.Upsert %s-%s due to err %s",
listener.Spec.K8SRouteName, listener.Spec.K8SRouteNamespace, err))
continue
}
listener.Status = &status
}
if listenerErr != nil {
return listenerErr
}
// All deletions happen here, we fetch all listeners for NON-deleted
// services, since service deletion will delete its listeners
latticeListenersAsModel, err := l.getLatticeListenersAsModels(ctx)
if err != nil {
return err
}
for _, latticeListenerAsModel := range latticeListenersAsModel {
if l.shouldDelete(latticeListenerAsModel, stackListeners) {
err = l.listenerMgr.Delete(ctx, latticeListenerAsModel)
if err != nil {
l.log.Infof(ctx, "Failed ListenerManager.Delete %s due to %s", latticeListenerAsModel.Status.Id, err)
}
}
}
return nil
}