@@ -2,6 +2,8 @@ package model
22
33import (
44 "context"
5+ "strconv"
6+
57 "github.com/go-logr/logr"
68 "github.com/pkg/errors"
79 "k8s.io/apimachinery/pkg/util/sets"
@@ -19,7 +21,6 @@ import (
1921 "sigs.k8s.io/aws-load-balancer-controller/pkg/networking"
2022 "sigs.k8s.io/aws-load-balancer-controller/pkg/shared_constants"
2123 gwv1 "sigs.k8s.io/gateway-api/apis/v1"
22- "strconv"
2324)
2425
2526// Builder builds the model stack for a Gateway resource.
@@ -31,10 +32,10 @@ type Builder interface {
3132// NewModelBuilder construct a new baseModelBuilder
3233func NewModelBuilder (subnetsResolver networking.SubnetsResolver ,
3334 vpcInfoProvider networking.VPCInfoProvider , vpcID string , loadBalancerType elbv2model.LoadBalancerType , trackingProvider tracking.Provider ,
34- elbv2TaggingManager elbv2deploy.TaggingManager , lbcConfig config.ControllerConfig , ec2Client services.EC2 , featureGates config.FeatureGates , clusterName string , defaultTags map [string ]string ,
35+ elbv2TaggingManager elbv2deploy.TaggingManager , lbcConfig config.ControllerConfig , ec2Client services.EC2 , acmClient services. ACM , featureGates config.FeatureGates , clusterName string , defaultTags map [string ]string ,
3536 externalManagedTags sets.Set [string ], defaultSSLPolicy string , defaultTargetType string , defaultLoadBalancerScheme string ,
3637 backendSGProvider networking.BackendSGProvider , sgResolver networking.SecurityGroupResolver , enableBackendSG bool ,
37- disableRestrictedSGRules bool , logger logr.Logger ) Builder {
38+ disableRestrictedSGRules bool , allowedCAARNs [] string , logger logr.Logger ) Builder {
3839
3940 gwTagHelper := newTagHelper (sets .New (lbcConfig .ExternalManagedTags ... ), lbcConfig .DefaultTags )
4041 subnetBuilder := newSubnetModelBuilder (loadBalancerType , trackingProvider , subnetsResolver , elbv2TaggingManager )
@@ -51,6 +52,7 @@ func NewModelBuilder(subnetsResolver networking.SubnetsResolver,
5152 elbv2TaggingManager : elbv2TaggingManager ,
5253 featureGates : featureGates ,
5354 ec2Client : ec2Client ,
55+ acmClient : acmClient ,
5456 subnetBuilder : subnetBuilder ,
5557 securityGroupBuilder : sgBuilder ,
5658 loadBalancerType : loadBalancerType ,
@@ -65,6 +67,7 @@ func NewModelBuilder(subnetsResolver networking.SubnetsResolver,
6567
6668 defaultLoadBalancerScheme : elbv2model .LoadBalancerScheme (defaultLoadBalancerScheme ),
6769 defaultIPType : elbv2model .IPAddressTypeIPV4 ,
70+ allowedCAARNs : allowedCAARNs ,
6871 }
6972}
7073
@@ -89,6 +92,8 @@ type baseModelBuilder struct {
8992 defaultTargetType string
9093 disableRestrictedSGRules bool
9194 ec2Client services.EC2
95+ acmClient services.ACM
96+ allowedCAARNs []string
9297 metricsCollector lbcmetrics.MetricCollector
9398 lbBuilder loadBalancerBuilder
9499 gwTagHelper tagHelper
@@ -105,7 +110,7 @@ type baseModelBuilder struct {
105110func (baseBuilder * baseModelBuilder ) Build (ctx context.Context , gw * gwv1.Gateway , lbConf * elbv2gw.LoadBalancerConfiguration , routes map [int32 ][]routeutils.RouteDescriptor ) (core.Stack , * elbv2model.LoadBalancer , bool , error ) {
106111 stack := core .NewDefaultStack (core .StackID (k8s .NamespacedName (gw )))
107112 tgBuilder := newTargetGroupBuilder (baseBuilder .clusterName , baseBuilder .vpcID , baseBuilder .gwTagHelper , baseBuilder .loadBalancerType , baseBuilder .disableRestrictedSGRules , baseBuilder .defaultTargetType )
108- listenerBuilder := newListenerBuilder (baseBuilder .loadBalancerType , tgBuilder , baseBuilder .gwTagHelper , baseBuilder .clusterName , baseBuilder .defaultSSLPolicy , baseBuilder .logger )
113+ listenerBuilder := newListenerBuilder (ctx , baseBuilder .loadBalancerType , tgBuilder , baseBuilder .gwTagHelper , baseBuilder .clusterName , baseBuilder .defaultSSLPolicy , baseBuilder . acmClient , baseBuilder . allowedCAARNs , baseBuilder .logger )
109114 if gw .DeletionTimestamp != nil && ! gw .DeletionTimestamp .IsZero () {
110115 if baseBuilder .isDeleteProtected (lbConf ) {
111116 return nil , nil , false , errors .Errorf ("Unable to delete gateway %+v because deletion protection is enabled." , k8s .NamespacedName (gw ))
@@ -151,7 +156,7 @@ func (baseBuilder *baseModelBuilder) Build(ctx context.Context, gw *gwv1.Gateway
151156
152157 lb := elbv2model .NewLoadBalancer (stack , resourceIDLoadBalancer , spec )
153158
154- if err := listenerBuilder .buildListeners (stack , lb , securityGroups , gw , routes , lbConf ); err != nil {
159+ if err := listenerBuilder .buildListeners (ctx , stack , lb , securityGroups , gw , routes , lbConf ); err != nil {
155160 return nil , nil , false , err
156161 }
157162
0 commit comments