pkg/deploy/lattice/service_synthesizer.go (65 lines of code) (raw):

package lattice import ( "context" "errors" "fmt" "github.com/aws/aws-application-networking-k8s/pkg/utils" "github.com/aws/aws-application-networking-k8s/pkg/deploy/externaldns" "github.com/aws/aws-application-networking-k8s/pkg/model/core" model "github.com/aws/aws-application-networking-k8s/pkg/model/lattice" "github.com/aws/aws-application-networking-k8s/pkg/utils/gwlog" ) func NewServiceSynthesizer( log gwlog.Logger, serviceManager ServiceManager, dnsEndpointManager externaldns.DnsEndpointManager, stack core.Stack, ) *serviceSynthesizer { return &serviceSynthesizer{ log: log, serviceManager: serviceManager, dnsEndpointManager: dnsEndpointManager, stack: stack, } } type serviceSynthesizer struct { log gwlog.Logger serviceManager ServiceManager dnsEndpointManager externaldns.DnsEndpointManager stack core.Stack } func (s *serviceSynthesizer) Synthesize(ctx context.Context) error { var resServices []*model.Service s.stack.ListResources(&resServices) var svcErr error for _, resService := range resServices { svcName := utils.LatticeServiceName(resService.Spec.RouteName, resService.Spec.RouteNamespace) s.log.Debugf(ctx, "Synthesizing service: %s", svcName) if resService.IsDeleted { err := s.serviceManager.Delete(ctx, resService) if err != nil { svcErr = errors.Join(svcErr, fmt.Errorf("failed ServiceManager.Delete %s due to %w", svcName, err)) continue } } else { serviceStatus, err := s.serviceManager.Upsert(ctx, resService) if err != nil { svcErr = errors.Join(svcErr, fmt.Errorf("failed ServiceManager.Upsert %s due to %w", svcName, err)) continue } resService.Status = &serviceStatus err = s.dnsEndpointManager.Create(ctx, resService) if err != nil { svcErr = errors.Join(svcErr, fmt.Errorf("failed DnsEndpointManager.Create %s due to %w", svcName, err)) continue } } } return svcErr } func (s *serviceSynthesizer) PostSynthesize(ctx context.Context) error { // nothing to do here return nil }