7
7
elbv2sdk "github.com/aws/aws-sdk-go/service/elbv2"
8
8
"github.com/pkg/errors"
9
9
elbv2model "sigs.k8s.io/aws-load-balancer-controller/pkg/model/elbv2"
10
+ "sigs.k8s.io/aws-load-balancer-controller/pkg/config"
10
11
"time"
11
12
)
12
13
@@ -15,12 +16,12 @@ const (
15
16
defaultWaitLSExistenceTimeout = 20 * time .Second
16
17
)
17
18
18
- func buildSDKActions (modelActions []elbv2model.Action ) ([]* elbv2sdk.Action , error ) {
19
+ func buildSDKActions (modelActions []elbv2model.Action , featureGate config. FeatureGate ) ([]* elbv2sdk.Action , error ) {
19
20
var sdkActions []* elbv2sdk.Action
20
21
if len (modelActions ) != 0 {
21
22
sdkActions = make ([]* elbv2sdk.Action , 0 , len (modelActions ))
22
23
for index , modelAction := range modelActions {
23
- sdkAction , err := buildSDKAction (modelAction )
24
+ sdkAction , err := buildSDKAction (modelAction , featureGate )
24
25
sdkAction .Order = awssdk .Int64 (int64 (index ) + 1 )
25
26
if err != nil {
26
27
return nil , err
@@ -31,7 +32,7 @@ func buildSDKActions(modelActions []elbv2model.Action) ([]*elbv2sdk.Action, erro
31
32
return sdkActions , nil
32
33
}
33
34
34
- func buildSDKAction (modelAction elbv2model.Action ) (* elbv2sdk.Action , error ) {
35
+ func buildSDKAction (modelAction elbv2model.Action , featureGate config. FeatureGate ) (* elbv2sdk.Action , error ) {
35
36
sdkObj := & elbv2sdk.Action {}
36
37
sdkObj .Type = awssdk .String (string (modelAction .Type ))
37
38
if modelAction .AuthenticateCognitoConfig != nil {
@@ -51,7 +52,15 @@ func buildSDKAction(modelAction elbv2model.Action) (*elbv2sdk.Action, error) {
51
52
if err != nil {
52
53
return nil , err
53
54
}
54
- sdkObj .ForwardConfig = forwardConfig
55
+ if featureGate .Enabled (config .EnforceSingleTargetGroup ) {
56
+ if len (forwardConfig .TargetGroups ) == 1 {
57
+ sdkObj .TargetGroupArn = forwardConfig .TargetGroups [0 ].TargetGroupArn
58
+ } else {
59
+ return nil , errors .New ("The controller is configured to specify single Target Group but has more than one." )
60
+ }
61
+ } else {
62
+ sdkObj .ForwardConfig = forwardConfig
63
+ }
55
64
}
56
65
return sdkObj , nil
57
66
}
@@ -60,28 +69,28 @@ func buildSDKAuthenticateCognitoActionConfig(modelCfg elbv2model.AuthenticateCog
60
69
return & elbv2sdk.AuthenticateCognitoActionConfig {
61
70
AuthenticationRequestExtraParams : awssdk .StringMap (modelCfg .AuthenticationRequestExtraParams ),
62
71
OnUnauthenticatedRequest : (* string )(modelCfg .OnUnauthenticatedRequest ),
63
- Scope : modelCfg .Scope ,
64
- SessionCookieName : modelCfg .SessionCookieName ,
65
- SessionTimeout : modelCfg .SessionTimeout ,
66
- UserPoolArn : awssdk .String (modelCfg .UserPoolARN ),
67
- UserPoolClientId : awssdk .String (modelCfg .UserPoolClientID ),
68
- UserPoolDomain : awssdk .String (modelCfg .UserPoolDomain ),
72
+ Scope : modelCfg .Scope ,
73
+ SessionCookieName : modelCfg .SessionCookieName ,
74
+ SessionTimeout : modelCfg .SessionTimeout ,
75
+ UserPoolArn : awssdk .String (modelCfg .UserPoolARN ),
76
+ UserPoolClientId : awssdk .String (modelCfg .UserPoolClientID ),
77
+ UserPoolDomain : awssdk .String (modelCfg .UserPoolDomain ),
69
78
}
70
79
}
71
80
72
81
func buildSDKAuthenticateOidcActionConfig (modelCfg elbv2model.AuthenticateOIDCActionConfig ) * elbv2sdk.AuthenticateOidcActionConfig {
73
82
return & elbv2sdk.AuthenticateOidcActionConfig {
74
83
AuthenticationRequestExtraParams : awssdk .StringMap (modelCfg .AuthenticationRequestExtraParams ),
75
84
OnUnauthenticatedRequest : (* string )(modelCfg .OnUnauthenticatedRequest ),
76
- Scope : modelCfg .Scope ,
77
- SessionCookieName : modelCfg .SessionCookieName ,
78
- SessionTimeout : modelCfg .SessionTimeout ,
79
- ClientId : awssdk .String (modelCfg .ClientID ),
80
- ClientSecret : awssdk .String (modelCfg .ClientSecret ),
81
- Issuer : awssdk .String (modelCfg .Issuer ),
82
- AuthorizationEndpoint : awssdk .String (modelCfg .AuthorizationEndpoint ),
83
- TokenEndpoint : awssdk .String (modelCfg .TokenEndpoint ),
84
- UserInfoEndpoint : awssdk .String (modelCfg .UserInfoEndpoint ),
85
+ Scope : modelCfg .Scope ,
86
+ SessionCookieName : modelCfg .SessionCookieName ,
87
+ SessionTimeout : modelCfg .SessionTimeout ,
88
+ ClientId : awssdk .String (modelCfg .ClientID ),
89
+ ClientSecret : awssdk .String (modelCfg .ClientSecret ),
90
+ Issuer : awssdk .String (modelCfg .Issuer ),
91
+ AuthorizationEndpoint : awssdk .String (modelCfg .AuthorizationEndpoint ),
92
+ TokenEndpoint : awssdk .String (modelCfg .TokenEndpoint ),
93
+ UserInfoEndpoint : awssdk .String (modelCfg .UserInfoEndpoint ),
85
94
}
86
95
}
87
96
0 commit comments