Skip to content

Commit abacc75

Browse files
committed
migrate EKS client to AWS SDK V2
Signed-off-by: Pankaj Walke <[email protected]>
1 parent a5c3e0a commit abacc75

40 files changed

+1338
-4086
lines changed

controlplane/eks/api/v1beta1/types.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ package v1beta1
1919
import (
2020
"fmt"
2121

22-
"github.com/aws/aws-sdk-go/service/eks"
22+
ekstypes "github.com/aws/aws-sdk-go-v2/service/eks/types"
2323
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2424

2525
infrav1 "sigs.k8s.io/cluster-api-provider-aws/v2/api/v1beta2"
@@ -51,16 +51,16 @@ func (s *ControlPlaneLoggingSpec) IsLogEnabled(logName string) bool {
5151
return false
5252
}
5353

54-
switch logName {
55-
case eks.LogTypeApi:
54+
switch ekstypes.LogType(logName) {
55+
case ekstypes.LogTypeApi:
5656
return s.APIServer
57-
case eks.LogTypeAudit:
57+
case ekstypes.LogTypeAudit:
5858
return s.Audit
59-
case eks.LogTypeAuthenticator:
59+
case ekstypes.LogTypeAuthenticator:
6060
return s.Authenticator
61-
case eks.LogTypeControllerManager:
61+
case ekstypes.LogTypeControllerManager:
6262
return s.ControllerManager
63-
case eks.LogTypeScheduler:
63+
case ekstypes.LogTypeScheduler:
6464
return s.Scheduler
6565
default:
6666
return false

controlplane/eks/api/v1beta2/types.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ package v1beta2
1919
import (
2020
"fmt"
2121

22-
"github.com/aws/aws-sdk-go/service/eks"
22+
ekstypes "github.com/aws/aws-sdk-go-v2/service/eks/types"
2323
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2424

2525
infrav1 "sigs.k8s.io/cluster-api-provider-aws/v2/api/v1beta2"
@@ -51,16 +51,16 @@ func (s *ControlPlaneLoggingSpec) IsLogEnabled(logName string) bool {
5151
return false
5252
}
5353

54-
switch logName {
55-
case eks.LogTypeApi:
54+
switch ekstypes.LogType(logName) {
55+
case ekstypes.LogTypeApi:
5656
return s.APIServer
57-
case eks.LogTypeAudit:
57+
case ekstypes.LogTypeAudit:
5858
return s.Audit
59-
case eks.LogTypeAuthenticator:
59+
case ekstypes.LogTypeAuthenticator:
6060
return s.Authenticator
61-
case eks.LogTypeControllerManager:
61+
case ekstypes.LogTypeControllerManager:
6262
return s.ControllerManager
63-
case eks.LogTypeScheduler:
63+
case ekstypes.LogTypeScheduler:
6464
return s.Scheduler
6565
default:
6666
return false

controlplane/eks/controllers/awsmanagedcontrolplane_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ func (r *AWSManagedControlPlaneReconciler) reconcileDelete(ctx context.Context,
405405
networkSvc := network.NewService(managedScope)
406406
sgService := securitygroup.NewService(managedScope, securityGroupRolesForControlPlane(managedScope))
407407

408-
if err := ekssvc.DeleteControlPlane(); err != nil {
408+
if err := ekssvc.DeleteControlPlane(ctx); err != nil {
409409
log.Error(err, "error deleting EKS cluster for EKS control plane", "namespace", controlPlane.Namespace, "name", controlPlane.Name)
410410
return reconcile.Result{}, err
411411
}

controlplane/eks/controllers/awsmanagedcontrolplane_controller_test.go

Lines changed: 31 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,12 @@ import (
2525
"testing"
2626
"time"
2727

28-
"github.com/aws/aws-sdk-go/aws"
28+
"github.com/aws/aws-sdk-go-v2/aws"
29+
"github.com/aws/aws-sdk-go-v2/service/eks"
30+
ekstypes "github.com/aws/aws-sdk-go-v2/service/eks/types"
2931
"github.com/aws/aws-sdk-go/aws/awserr"
3032
stsrequest "github.com/aws/aws-sdk-go/aws/request"
3133
"github.com/aws/aws-sdk-go/service/ec2"
32-
"github.com/aws/aws-sdk-go/service/eks"
3334
"github.com/aws/aws-sdk-go/service/iam"
3435
"github.com/aws/aws-sdk-go/service/sts"
3536
"github.com/golang/mock/gomock"
@@ -129,7 +130,7 @@ func TestAWSManagedControlPlaneReconcilerIntegrationTests(t *testing.T) {
129130
mockedCreateSGCalls(ec2Mock.EXPECT())
130131
mockedDescribeInstanceCall(ec2Mock.EXPECT())
131132
mockedEKSControlPlaneIAMRole(g, iamMock.EXPECT())
132-
mockedEKSCluster(g, eksMock.EXPECT(), iamMock.EXPECT(), ec2Mock.EXPECT(), stsMock.EXPECT(), awsNodeMock.EXPECT(), kubeProxyMock.EXPECT(), iamAuthenticatorMock.EXPECT())
133+
mockedEKSCluster(ctx, g, eksMock.EXPECT(), iamMock.EXPECT(), ec2Mock.EXPECT(), stsMock.EXPECT(), awsNodeMock.EXPECT(), kubeProxyMock.EXPECT(), iamAuthenticatorMock.EXPECT())
133134

134135
g.Expect(testEnv.Create(ctx, &cluster)).To(Succeed())
135136
cluster.Status.InfrastructureReady = true
@@ -828,10 +829,12 @@ func mockedEKSControlPlaneIAMRole(g *WithT, iamRec *mock_iamauth.MockIAMAPIMockR
828829
}).After(getPolicyCall).Return(&iam.AttachRolePolicyOutput{}, nil)
829830
}
830831

831-
func mockedEKSCluster(g *WithT, eksRec *mock_eksiface.MockEKSAPIMockRecorder, iamRec *mock_iamauth.MockIAMAPIMockRecorder, ec2Rec *mocks.MockEC2APIMockRecorder, stsRec *mock_stsiface.MockSTSAPIMockRecorder, awsNodeRec *mock_services.MockAWSNodeInterfaceMockRecorder, kubeProxyRec *mock_services.MockKubeProxyInterfaceMockRecorder, iamAuthenticatorRec *mock_services.MockIAMAuthenticatorInterfaceMockRecorder) {
832-
describeClusterCall := eksRec.DescribeCluster(&eks.DescribeClusterInput{
832+
func mockedEKSCluster(ctx context.Context, g *WithT, eksRec *mock_eksiface.MockEKSAPIMockRecorder, iamRec *mock_iamauth.MockIAMAPIMockRecorder, ec2Rec *mocks.MockEC2APIMockRecorder, stsRec *mock_stsiface.MockSTSAPIMockRecorder, awsNodeRec *mock_services.MockAWSNodeInterfaceMockRecorder, kubeProxyRec *mock_services.MockKubeProxyInterfaceMockRecorder, iamAuthenticatorRec *mock_services.MockIAMAuthenticatorInterfaceMockRecorder) {
833+
describeClusterCall := eksRec.DescribeCluster(ctx, &eks.DescribeClusterInput{
833834
Name: aws.String("test-cluster"),
834-
}).Return(nil, awserr.New(eks.ErrCodeResourceNotFoundException, "", nil))
835+
}).Return(nil, &ekstypes.ResourceNotFoundException{
836+
Message: aws.String("cluster not found"),
837+
})
835838

836839
getRoleCall := iamRec.GetRole(&iam.GetRoleInput{
837840
RoleName: aws.String("test-cluster-iam-service-role"),
@@ -842,55 +845,55 @@ func mockedEKSCluster(g *WithT, eksRec *mock_eksiface.MockEKSAPIMockRecorder, ia
842845
},
843846
}, nil)
844847

845-
resourcesVpcConfig := &eks.VpcConfigResponse{
848+
resourcesVpcConfig := &ekstypes.VpcConfigResponse{
846849
ClusterSecurityGroupId: aws.String("eks-cluster-sg-test-cluster-44556677"),
847850
}
848851

849852
clusterARN := aws.String("arn:aws:eks:us-east-1:1133557799:cluster/test-cluster")
850-
clusterCreating := eks.Cluster{
853+
clusterCreating := ekstypes.Cluster{
851854
Arn: clusterARN,
852855
Name: aws.String("test-cluster"),
853-
Status: aws.String(eks.ClusterStatusCreating),
856+
Status: ekstypes.ClusterStatusCreating,
854857
ResourcesVpcConfig: resourcesVpcConfig,
855-
CertificateAuthority: &eks.Certificate{
858+
CertificateAuthority: &ekstypes.Certificate{
856859
Data: aws.String(base64.StdEncoding.EncodeToString([]byte("foobar"))),
857860
},
858-
Logging: &eks.Logging{
859-
ClusterLogging: []*eks.LogSetup{
861+
Logging: &ekstypes.Logging{
862+
ClusterLogging: []ekstypes.LogSetup{
860863
{
861864
Enabled: aws.Bool(true),
862-
Types: []*string{aws.String(eks.LogTypeApi)},
865+
Types: []ekstypes.LogType{ekstypes.LogTypeApi},
863866
},
864867
{
865868
Enabled: aws.Bool(false),
866-
Types: []*string{
867-
aws.String(eks.LogTypeAudit),
868-
aws.String(eks.LogTypeAuthenticator),
869-
aws.String(eks.LogTypeControllerManager),
870-
aws.String(eks.LogTypeScheduler),
869+
Types: []ekstypes.LogType{
870+
ekstypes.LogTypeAudit,
871+
ekstypes.LogTypeAuthenticator,
872+
ekstypes.LogTypeControllerManager,
873+
ekstypes.LogTypeScheduler,
871874
},
872875
},
873876
},
874877
},
875878
}
876879

877-
createClusterCall := eksRec.CreateCluster(gomock.Any()).After(getRoleCall).DoAndReturn(func(input *eks.CreateClusterInput) (*eks.CreateClusterOutput, error) {
880+
createClusterCall := eksRec.CreateCluster(ctx, gomock.Any()).After(getRoleCall).DoAndReturn(func(ctx context.Context, input *eks.CreateClusterInput, optFns ...func(*eks.Options)) (*eks.CreateClusterOutput, error) {
878881
g.Expect(input.Name).To(BeComparableTo(aws.String("test-cluster")))
879882
return &eks.CreateClusterOutput{
880883
Cluster: &clusterCreating,
881884
}, nil
882885
})
883886

884-
waitUntilClusterActiveCall := eksRec.WaitUntilClusterActive(&eks.DescribeClusterInput{
887+
waitUntilClusterActiveCall := eksRec.WaitUntilClusterActive(ctx, &eks.DescribeClusterInput{
885888
Name: aws.String("test-cluster"),
886889
}).After(createClusterCall).Return(nil)
887890

888891
clusterActive := clusterCreating // copy
889-
clusterActive.Status = aws.String(eks.ClusterStatusActive)
892+
clusterActive.Status = ekstypes.ClusterStatusActive
890893
clusterActive.Endpoint = aws.String("https://F00D133712341337.gr7.us-east-1.eks.amazonaws.com")
891894
clusterActive.Version = aws.String("1.24")
892895

893-
eksRec.DescribeCluster(&eks.DescribeClusterInput{
896+
eksRec.DescribeCluster(ctx, &eks.DescribeClusterInput{
894897
Name: aws.String("test-cluster"),
895898
}).After(waitUntilClusterActiveCall).Return(&eks.DescribeClusterOutput{
896899
Cluster: &clusterActive,
@@ -927,19 +930,21 @@ func mockedEKSCluster(g *WithT, eksRec *mock_eksiface.MockEKSAPIMockRecorder, ia
927930
Operation: &stsrequest.Operation{},
928931
}, &sts.GetCallerIdentityOutput{})
929932

930-
eksRec.TagResource(&eks.TagResourceInput{
933+
eksRec.TagResource(ctx, &eks.TagResourceInput{
931934
ResourceArn: clusterARN,
932-
Tags: aws.StringMap(map[string]string{
935+
Tags: map[string]string{
933936
"Name": "test-cluster",
934937
"sigs.k8s.io/cluster-api-provider-aws/cluster/test-cluster": "owned",
935938
"sigs.k8s.io/cluster-api-provider-aws/role": "common",
936-
}),
939+
},
937940
}).Return(&eks.TagResourceOutput{}, nil)
938941

939-
eksRec.ListAddons(&eks.ListAddonsInput{
942+
eksRec.ListAddons(ctx, &eks.ListAddonsInput{
940943
ClusterName: aws.String("test-cluster"),
941944
}).Return(&eks.ListAddonsOutput{}, nil)
942945

946+
eksRec.UpdateClusterConfig(ctx, gomock.AssignableToTypeOf(&eks.UpdateClusterConfigInput{})).After(waitUntilClusterActiveCall).Return(&eks.UpdateClusterConfigOutput{}, nil)
947+
943948
awsNodeRec.ReconcileCNI(gomock.Any()).Return(nil)
944949
kubeProxyRec.ReconcileKubeProxy(gomock.Any()).Return(nil)
945950
iamAuthenticatorRec.ReconcileIAMAuthenticator(gomock.Any()).Return(nil)

exp/controllers/awsfargatepool_controller.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ func (r *AWSFargateProfileReconciler) Reconcile(ctx context.Context, req ctrl.Re
140140
}
141141

142142
func (r *AWSFargateProfileReconciler) reconcileNormal(
143-
_ context.Context,
143+
ctx context.Context,
144144
fargateProfileScope *scope.FargateProfileScope,
145145
) (ctrl.Result, error) {
146146
fargateProfileScope.Info("Reconciling AWSFargateProfile")
@@ -153,7 +153,7 @@ func (r *AWSFargateProfileReconciler) reconcileNormal(
153153

154154
ekssvc := eks.NewFargateService(fargateProfileScope)
155155

156-
res, err := ekssvc.Reconcile()
156+
res, err := ekssvc.Reconcile(ctx)
157157
if err != nil {
158158
return res, errors.Wrapf(err, "failed to reconcile fargate profile for AWSFargateProfile %s/%s", fargateProfileScope.FargateProfile.Namespace, fargateProfileScope.FargateProfile.Name)
159159
}
@@ -162,14 +162,14 @@ func (r *AWSFargateProfileReconciler) reconcileNormal(
162162
}
163163

164164
func (r *AWSFargateProfileReconciler) reconcileDelete(
165-
_ context.Context,
165+
ctx context.Context,
166166
fargateProfileScope *scope.FargateProfileScope,
167167
) (ctrl.Result, error) {
168168
fargateProfileScope.Info("Reconciling deletion of AWSFargateProfile")
169169

170170
ekssvc := eks.NewFargateService(fargateProfileScope)
171171

172-
res, err := ekssvc.ReconcileDelete()
172+
res, err := ekssvc.ReconcileDelete(ctx)
173173
if err != nil {
174174
return res, errors.Wrapf(err, "failed to reconcile fargate profile deletion for AWSFargateProfile %s/%s", fargateProfileScope.FargateProfile.Namespace, fargateProfileScope.FargateProfile.Name)
175175
}

exp/controllers/awsmanagedmachinepool_controller.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ func (r *AWSManagedMachinePoolReconciler) reconcileNormal(
243243
}
244244

245245
func (r *AWSManagedMachinePoolReconciler) reconcileDelete(
246-
_ context.Context,
246+
ctx context.Context,
247247
machinePoolScope *scope.ManagedMachinePoolScope,
248248
ec2Scope scope.EC2Scope,
249249
) error {
@@ -252,7 +252,7 @@ func (r *AWSManagedMachinePoolReconciler) reconcileDelete(
252252
ekssvc := eks.NewNodegroupService(machinePoolScope)
253253
ec2Svc := ec2.NewService(ec2Scope)
254254

255-
if err := ekssvc.ReconcilePoolDelete(); err != nil {
255+
if err := ekssvc.ReconcilePoolDelete(ctx); err != nil {
256256
return errors.Wrapf(err, "failed to reconcile machine pool deletion for AWSManagedMachinePool %s/%s", machinePoolScope.ManagedMachinePool.Namespace, machinePoolScope.ManagedMachinePool.Name)
257257
}
258258

go.mod

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@ require (
1212
github.com/aws/aws-lambda-go v1.41.0
1313
github.com/aws/aws-sdk-go v1.55.5
1414
github.com/aws/aws-sdk-go-v2 v1.36.3
15+
github.com/aws/aws-sdk-go-v2 v1.36.3
1516
github.com/aws/aws-sdk-go-v2/config v1.27.11
1617
github.com/aws/aws-sdk-go-v2/credentials v1.17.11
1718
github.com/aws/aws-sdk-go-v2/service/autoscaling v1.52.4
1819
github.com/aws/aws-sdk-go-v2/service/iam v1.32.0
20+
github.com/aws/aws-sdk-go-v2/service/eks v1.64.0
1921
github.com/aws/aws-sdk-go-v2/service/s3 v1.53.1
2022
github.com/aws/aws-sdk-go-v2/service/sts v1.28.6
2123
github.com/aws/smithy-go v1.22.2
@@ -81,6 +83,8 @@ require (
8183
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1 // indirect
8284
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 // indirect
8385
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34 // indirect
86+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 // indirect
87+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34 // indirect
8488
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect
8589
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.5 // indirect
8690
github.com/aws/aws-sdk-go-v2/service/cloudformation v1.50.0 // indirect

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ github.com/aws/aws-sdk-go-v2/service/cloudformation v1.50.0 h1:Ap5tOJfeAH1hO2UQc
6868
github.com/aws/aws-sdk-go-v2/service/cloudformation v1.50.0/go.mod h1:/v2KYdCW4BaHKayenaWEXOOdxItIwEA3oU0XzuQY3F0=
6969
github.com/aws/aws-sdk-go-v2/service/ec2 v1.159.0 h1:DmmVmiLPlcntOcjWMRwDPMNx/wi2kAVrf2ZmSN5gkAg=
7070
github.com/aws/aws-sdk-go-v2/service/ec2 v1.159.0/go.mod h1:xejKuuRDjz6z5OqyeLsz01MlOqqW7CqpAB4PabNvpu8=
71+
github.com/aws/aws-sdk-go-v2/service/eks v1.64.0 h1:EYeOThTRysemFtC6J6h6b7dNg3jN03QuO5cg92ojIQE=
72+
github.com/aws/aws-sdk-go-v2/service/eks v1.64.0/go.mod h1:v1xXy6ea0PHtWkjFUvAUh6B/5wv7UF909Nru0dOIJDk=
7173
github.com/aws/aws-sdk-go-v2/service/iam v1.32.0 h1:ZNlfPdw849gBo/lvLFbEEvpTJMij0LXqiNWZ+lIamlU=
7274
github.com/aws/aws-sdk-go-v2/service/iam v1.32.0/go.mod h1:aXWImQV0uTW35LM0A/T4wEg6R1/ReXUu4SM6/lUHYK0=
7375
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 h1:Ji0DY1xUsUr3I8cHps0G+XM3WWU16lP6yG8qu1GAZAs=

0 commit comments

Comments
 (0)