in pkg/gateway/model_build_listener.go [84:134]
func (t *latticeServiceModelBuildTask) buildListeners(ctx context.Context, stackSvcId string) error {
if !t.route.DeletionTimestamp().IsZero() {
t.log.Debugf(ctx, "Route %s-%s is deleted, skipping listener build", t.route.Name(), t.route.Namespace())
return nil
}
if len(t.route.Spec().ParentRefs()) == 0 {
t.log.Debugf(ctx, "No ParentRefs on route %s-%s, nothing to do", t.route.Name(), t.route.Namespace())
return nil
}
// when a service is associate to multiple service network(s), all listener config MUST be same
// so here we are only using the 1st gateway
gw, err := t.findGateway(ctx)
if err != nil {
return err
}
for _, parentRef := range t.route.Spec().ParentRefs() {
if string(parentRef.Name) != gw.Name {
continue
}
port, protocol, err := t.extractListenerInfo(ctx, parentRef, gw)
if err != nil {
return err
}
defaultAction, err := t.getListenerDefaultAction(ctx, protocol)
if err != nil {
return err
}
spec := model.ListenerSpec{
StackServiceId: stackSvcId,
K8SRouteName: t.route.Name(),
K8SRouteNamespace: t.route.Namespace(),
Port: port,
Protocol: protocol,
DefaultAction: defaultAction,
}
modelListener, err := model.NewListener(t.stack, spec)
if err != nil {
return err
}
t.log.Debugf(ctx, "Added listener %s-%s to the stack (ID %s)",
modelListener.Spec.K8SRouteName, modelListener.Spec.K8SRouteNamespace, modelListener.ID())
}
return nil
}