@@ -2,11 +2,11 @@ package ingress
22
33import (
44 "context"
5- elbv2sdk "github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2"
65 wafv2sdk "github.com/aws/aws-sdk-go-v2/service/wafv2"
76 wafv2types "github.com/aws/aws-sdk-go-v2/service/wafv2/types"
87 "k8s.io/apimachinery/pkg/util/cache"
98 "reflect"
9+ "sigs.k8s.io/aws-load-balancer-controller/pkg/shared_utils"
1010 "strconv"
1111 "sync"
1212 "time"
@@ -39,9 +39,8 @@ import (
3939)
4040
4141const (
42- controllerName = "ingress"
43- defaultTargetGroupNameToARNCacheTTL = 20 * time .Minute
44- defaultWebACLNameToARNCacheTTL = 60 * time .Minute
42+ controllerName = "ingress"
43+ defaultWebACLNameToARNCacheTTL = 60 * time .Minute
4544)
4645
4746// ModelBuilder is responsible for build mode stack for a IngressGroup.
@@ -58,7 +57,7 @@ func NewDefaultModelBuilder(k8sClient client.Client, eventRecorder record.EventR
5857 trackingProvider tracking.Provider , elbv2TaggingManager elbv2deploy.TaggingManager , featureGates config.FeatureGates ,
5958 vpcID string , clusterName string , defaultTags map [string ]string , externalManagedTags []string , defaultSSLPolicy string , defaultTargetType string , defaultLoadBalancerScheme string ,
6059 backendSGProvider networkingpkg.BackendSGProvider , sgResolver networkingpkg.SecurityGroupResolver ,
61- enableBackendSG bool , defaultEnableManageBackendSGRules bool , disableRestrictedSGRules bool , allowedCAARNs []string , enableIPTargetType bool , logger logr.Logger , metricsCollector lbcmetrics.MetricCollector ) * defaultModelBuilder {
60+ enableBackendSG bool , defaultEnableManageBackendSGRules bool , disableRestrictedSGRules bool , allowedCAARNs []string , enableIPTargetType bool , targetGroupNameToArnMapper shared_utils. TargetGroupARNMapper , logger logr.Logger , metricsCollector lbcmetrics.MetricCollector ) * defaultModelBuilder {
6261 certDiscovery := certs .NewACMCertDiscovery (acmClient , allowedCAARNs , logger )
6362 ruleOptimizer := NewDefaultRuleOptimizer (logger )
6463 return & defaultModelBuilder {
@@ -88,7 +87,7 @@ func NewDefaultModelBuilder(k8sClient client.Client, eventRecorder record.EventR
8887 enableManageBackendSGRules : defaultEnableManageBackendSGRules ,
8988 disableRestrictedSGRules : disableRestrictedSGRules ,
9089 enableIPTargetType : enableIPTargetType ,
91- targetGroupNameToArnMapper : newTargetGroupNameToArnMapper ( elbv2Client , defaultTargetGroupNameToARNCacheTTL ) ,
90+ targetGroupNameToArnMapper : targetGroupNameToArnMapper ,
9291 webACLNameToArnMapper : newWebACLNameToArnMapper (wafv2Client , defaultWebACLNameToARNCacheTTL ),
9392 logger : logger ,
9493 metricsCollector : metricsCollector ,
@@ -128,7 +127,7 @@ type defaultModelBuilder struct {
128127 enableManageBackendSGRules bool
129128 disableRestrictedSGRules bool
130129 enableIPTargetType bool
131- targetGroupNameToArnMapper * targetGroupNameToArnMapper
130+ targetGroupNameToArnMapper shared_utils. TargetGroupARNMapper
132131 webACLNameToArnMapper * webACLNameToArnMapper
133132
134133 logger logr.Logger
@@ -255,7 +254,7 @@ type defaultModelBuildTask struct {
255254 secretKeys []types.NamespacedName
256255 frontendNlb * elbv2model.LoadBalancer
257256 frontendNlbTargetGroupDesiredState * core.FrontendNlbTargetGroupDesiredState
258- targetGroupNameToArnMapper * targetGroupNameToArnMapper
257+ targetGroupNameToArnMapper shared_utils. TargetGroupARNMapper
259258 webACLNameToArnMapper * webACLNameToArnMapper
260259
261260 metricsCollector lbcmetrics.MetricCollector
@@ -566,45 +565,6 @@ func newWebACLNameToArnMapper(wafv2Client services.WAFv2, ttl time.Duration) *we
566565 }
567566}
568567
569- type targetGroupNameToArnMapper struct {
570- elbv2Client services.ELBV2
571- cache * cache.Expiring
572- cacheTTL time.Duration
573- cacheMutex sync.RWMutex
574- }
575-
576- func newTargetGroupNameToArnMapper (elbv2Client services.ELBV2 , ttl time.Duration ) * targetGroupNameToArnMapper {
577- return & targetGroupNameToArnMapper {
578- elbv2Client : elbv2Client ,
579- cache : cache .NewExpiring (),
580- cacheTTL : ttl ,
581- }
582- }
583-
584- // getArnByName returns the ARN of an AWS target group identified by its name
585- func (t * targetGroupNameToArnMapper ) getArnByName (ctx context.Context , targetGroupName string ) (string , error ) {
586- t .cacheMutex .Lock ()
587- defer t .cacheMutex .Unlock ()
588-
589- if rawCacheItem , exists := t .cache .Get (targetGroupName ); exists {
590- return rawCacheItem .(string ), nil
591- }
592- req := & elbv2sdk.DescribeTargetGroupsInput {
593- Names : []string {targetGroupName },
594- }
595-
596- targetGroups , err := t .elbv2Client .DescribeTargetGroupsAsList (ctx , req )
597- if err != nil {
598- return "" , err
599- }
600- if len (targetGroups ) != 1 {
601- return "" , errors .Errorf ("expecting a single targetGroup with query [%s] but got %v" , targetGroupName , len (targetGroups ))
602- }
603- arn := * targetGroups [0 ].TargetGroupArn
604- t .cache .Set (targetGroupName , arn , t .cacheTTL )
605- return arn , nil
606- }
607-
608568func (w * webACLNameToArnMapper ) getArnByName (ctx context.Context , webACLName string ) (string , error ) {
609569 w .cacheMutex .Lock ()
610570 defer w .cacheMutex .Unlock ()
0 commit comments