in pkg/deploy/stack_deployer.go [66:107]
func NewLatticeServiceStackDeploy(
log gwlog.Logger,
cloud pkg_aws.Cloud,
k8sClient client.Client,
) *latticeServiceStackDeployer {
brTgBuilder := gateway.NewBackendRefTargetGroupBuilder(log, k8sClient)
tgMgr := lattice.NewTargetGroupManager(log, cloud)
tgSvcExpBuilder := gateway.NewSvcExportTargetGroupBuilder(log, k8sClient)
svcBuilder := gateway.NewLatticeServiceBuilder(log, k8sClient, brTgBuilder)
tgGcOnce.Do(func() {
// TODO: need to refactor TG synthesizer. Remove stack from constructor
// arguments and use it as Synth argument. That will help with Synth
// reuse for GC purposes
tgGcSynth := lattice.NewTargetGroupSynthesizer(log, cloud, k8sClient, tgMgr, tgSvcExpBuilder, svcBuilder, nil)
tgGcFn := NewTgGcFn(tgGcSynth)
tgGc = &TgGc{
lock: sync.RWMutex{},
log: log.Named("tg-gc"),
ctx: context.TODO(),
isDone: atomic.Bool{},
ivl: TG_GC_IVL,
cycleFn: tgGcFn,
}
tgGc.start()
})
return &latticeServiceStackDeployer{
log: log,
cloud: cloud,
k8sClient: k8sClient,
latticeServiceManager: lattice.NewServiceManager(log, cloud),
targetGroupManager: tgMgr,
targetsManager: lattice.NewTargetsManager(log, cloud),
listenerManager: lattice.NewListenerManager(log, cloud),
ruleManager: lattice.NewRuleManager(log, cloud),
dnsEndpointManager: externaldns.NewDnsEndpointManager(log, k8sClient),
svcExportTgBuilder: tgSvcExpBuilder,
svcBuilder: svcBuilder,
}
}