Skip to content

Commit 3445930

Browse files
Migrate completly off V1 SDK to V2 SDK (#8548)
1 parent f9f23bf commit 3445930

File tree

17 files changed

+182
-258
lines changed

17 files changed

+182
-258
lines changed

.mockery.yaml

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,6 @@ packages:
2424
dir: "./pkg/eks/mocksv2"
2525
outpkg: mocksv2
2626

27-
github.com/aws/aws-sdk-go/aws/client:
28-
interfaces:
29-
ConfigProvider:
30-
config:
31-
dir: "./pkg/eks/mocks"
32-
outpkg: mocks
33-
3427
github.com/weaveworks/eksctl/pkg/ctl/utils:
3528
interfaces:
3629
VPCConfigUpdater:

go.mod

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ go 1.25.1
77
require (
88
github.com/Masterminds/semver/v3 v3.4.0
99
github.com/aws/amazon-ec2-instance-selector/v3 v3.1.2
10-
github.com/aws/aws-sdk-go v1.55.8
1110
github.com/aws/aws-sdk-go-v2 v1.39.2
1211
github.com/aws/aws-sdk-go-v2/config v1.31.12
1312
github.com/aws/aws-sdk-go-v2/credentials v1.18.16
@@ -260,7 +259,6 @@ require (
260259
github.com/jingyugao/rowserrcheck v1.1.1 // indirect
261260
github.com/jinzhu/copier v0.4.0 // indirect
262261
github.com/jjti/go-spancheck v0.6.4 // indirect
263-
github.com/jmespath/go-jmespath v0.4.1-0.20220621161143-b0104c826a24 // indirect
264262
github.com/jmoiron/sqlx v1.4.0 // indirect
265263
github.com/josharian/intern v1.0.0 // indirect
266264
github.com/json-iterator/go v1.1.12 // indirect

go.sum

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,6 @@ github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z
9696
github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
9797
github.com/aws/amazon-ec2-instance-selector/v3 v3.1.2 h1:F8GBspJo+RmR4rYyw75XywEEQHQxBbF7QYKaMMnYREc=
9898
github.com/aws/amazon-ec2-instance-selector/v3 v3.1.2/go.mod h1:wdlMRtz9G4IO6H1yZPsqfGBxR8E6B/bdxHlGkls4kGQ=
99-
github.com/aws/aws-sdk-go v1.55.8 h1:JRmEUbU52aJQZ2AjX4q4Wu7t4uZjOu71uyNmaWlUkJQ=
100-
github.com/aws/aws-sdk-go v1.55.8/go.mod h1:ZkViS9AqA6otK+JBBNH2++sx1sgxrPKcSzPPvQkUtXk=
10199
github.com/aws/aws-sdk-go-v2 v1.39.2 h1:EJLg8IdbzgeD7xgvZ+I8M1e0fL0ptn/M47lianzth0I=
102100
github.com/aws/aws-sdk-go-v2 v1.39.2/go.mod h1:sDioUELIUO9Znk23YVmIk86/9DOpkbyyVb1i/gUNFXY=
103101
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.1 h1:i8p8P4diljCr60PpJp6qZXNlgX4m2yQFpYk+9ZT+J4E=
@@ -551,10 +549,6 @@ github.com/jinzhu/copier v0.4.0 h1:w3ciUoD19shMCRargcpm0cm91ytaBhDvuRpz1ODO/U8=
551549
github.com/jinzhu/copier v0.4.0/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg=
552550
github.com/jjti/go-spancheck v0.6.4 h1:Tl7gQpYf4/TMU7AT84MN83/6PutY21Nb9fuQjFTpRRc=
553551
github.com/jjti/go-spancheck v0.6.4/go.mod h1:yAEYdKJ2lRkDA8g7X+oKUHXOWVAXSBJRv04OhF+QUjk=
554-
github.com/jmespath/go-jmespath v0.4.1-0.20220621161143-b0104c826a24 h1:liMMTbpW34dhU4az1GN0pTPADwNmvoRSeoZ6PItiqnY=
555-
github.com/jmespath/go-jmespath v0.4.1-0.20220621161143-b0104c826a24/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
556-
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
557-
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
558552
github.com/jmoiron/sqlx v1.4.0 h1:1PLqN7S1UYp5t4SrVVnt4nUVNemrDAtxlulVe+Qgm3o=
559553
github.com/jmoiron/sqlx v1.4.0/go.mod h1:ZrZ7UsYB/weZdl2Bxg6jCRO9c3YHl8r3ahlKmRT4JLY=
560554
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
@@ -1406,7 +1400,6 @@ gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkep
14061400
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
14071401
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
14081402
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
1409-
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
14101403
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
14111404
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
14121405
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=

pkg/actions/karpenter/karpenter.go

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@ package karpenter
33
import (
44
"context"
55
"fmt"
6-
"time"
76

8-
"github.com/aws/aws-sdk-go/aws/request"
97
"github.com/kris-nova/logger"
108
kubeclient "k8s.io/client-go/kubernetes"
119

@@ -17,7 +15,6 @@ import (
1715
"github.com/weaveworks/eksctl/pkg/karpenter/providers/helm"
1816
"github.com/weaveworks/eksctl/pkg/kubernetes"
1917
"github.com/weaveworks/eksctl/pkg/utils/tasks"
20-
"github.com/weaveworks/eksctl/pkg/utils/waiters"
2118
)
2219

2320
// FakeInstaller defines a functionality to create Karpenter installing task.
@@ -33,14 +30,11 @@ type Installer struct {
3330
StackManager manager.StackManager
3431
CTL *eks.ClusterProvider
3532
Config *api.ClusterConfig
36-
Wait WaitFunc
3733
KarpenterInstaller karpenter.ChartInstaller
3834
ClientSet kubernetes.Interface
3935
OIDC *iamoidc.OpenIDConnectManager
4036
}
4137

42-
type WaitFunc func(name, msg string, acceptors []request.WaiterAcceptor, newRequest func() *request.Request, waitTimeout time.Duration, troubleshoot func(string) error) error
43-
4438
// NewInstaller creates a new Karpenter installer.
4539
func NewInstaller(ctx context.Context, cfg *api.ClusterConfig, ctl *eks.ClusterProvider, stackManager manager.StackManager, clientSet kubeclient.Interface, restClientGetter *kubernetes.SimpleRESTClientGetter) (InstallerTaskCreator, error) {
4640
helmInstaller, err := helm.NewInstaller(helm.Options{
@@ -73,7 +67,6 @@ func NewInstaller(ctx context.Context, cfg *api.ClusterConfig, ctl *eks.ClusterP
7367
StackManager: stackManager,
7468
CTL: ctl,
7569
Config: cfg,
76-
Wait: waiters.Wait,
7770
KarpenterInstaller: karpenterInstaller,
7871
ClientSet: clientSet,
7972
OIDC: oidc,

pkg/actions/nodegroup/export_test.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,6 @@ import (
55
"github.com/weaveworks/eksctl/pkg/eks"
66
)
77

8-
func (m *Manager) SetWaiter(wait WaitFunc) {
9-
m.wait = wait
10-
}
11-
128
func (m *Manager) SetStackManager(stackManager manager.StackManager) {
139
m.stackManager = stackManager
1410
}

pkg/actions/nodegroup/nodegroup.go

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,32 @@
11
package nodegroup
22

33
import (
4-
"time"
5-
6-
"github.com/aws/aws-sdk-go/aws/request"
74
"k8s.io/client-go/kubernetes"
85

96
"github.com/weaveworks/eksctl/pkg/accessentry"
107
api "github.com/weaveworks/eksctl/pkg/apis/eksctl.io/v1alpha5"
118
"github.com/weaveworks/eksctl/pkg/cfn/builder"
129
"github.com/weaveworks/eksctl/pkg/cfn/manager"
1310
"github.com/weaveworks/eksctl/pkg/eks"
14-
"github.com/weaveworks/eksctl/pkg/utils/waiters"
1511
)
1612

1713
type Manager struct {
1814
stackManager manager.StackManager
1915
ctl *eks.ClusterProvider
2016
cfg *api.ClusterConfig
2117
clientSet kubernetes.Interface
22-
wait WaitFunc
2318
instanceSelector eks.InstanceSelector
2419
launchTemplateFetcher *builder.LaunchTemplateFetcher
2520
accessEntry *accessentry.Service
2621
}
2722

28-
type WaitFunc func(name, msg string, acceptors []request.WaiterAcceptor, newRequest func() *request.Request, waitTimeout time.Duration, troubleshoot func(string) error) error
29-
3023
// New creates a new manager.
3124
func New(cfg *api.ClusterConfig, ctl *eks.ClusterProvider, clientSet kubernetes.Interface, instanceSelector eks.InstanceSelector) *Manager {
3225
return &Manager{
3326
stackManager: ctl.NewStackManager(cfg),
3427
ctl: ctl,
3528
cfg: cfg,
3629
clientSet: clientSet,
37-
wait: waiters.Wait,
3830
instanceSelector: instanceSelector,
3931
launchTemplateFetcher: builder.NewLaunchTemplateFetcher(ctl.AWSProvider.EC2()),
4032
accessEntry: &accessentry.Service{

pkg/addons/image.go

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,13 @@ import (
44
"fmt"
55
"strings"
66

7-
"github.com/aws/aws-sdk-go/aws/endpoints"
87
api "github.com/weaveworks/eksctl/pkg/apis/eksctl.io/v1alpha5"
98
corev1 "k8s.io/api/core/v1"
109
)
1110

1211
// awsDNSSuffixForRegion returns the AWS DNS suffix (amazonaws.com or amazonaws.com.cn) for the specified region
1312
func awsDNSSuffixForRegion(region string) (string, error) {
14-
for _, p := range endpoints.DefaultPartitions() {
15-
if _, ok := p.Regions()[region]; ok {
16-
return p.DNSSuffix(), nil
17-
}
18-
}
19-
return "", fmt.Errorf("failed to find DNS suffix for region %s", region)
13+
return api.Partitions.V1SDKDNSPrefixForRegion(region)
2014
}
2115

2216
// UseRegionalImage sets the region and AWS DNS suffix for a container image

pkg/apis/eksctl.io/v1alpha5/partitions.go

Lines changed: 68 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ type partition struct {
2020
regions []string
2121
endpointServiceDomainPrefix string
2222
endpointServiceDomainPrefixAlt string
23+
v1SDKDNSPrefix string
2324
}
2425

2526
type partitions []partition
@@ -38,6 +39,47 @@ var awsPartition = partition{
3839
name: PartitionAWS,
3940
serviceMappings: standardServiceMappings,
4041
endpointServiceDomainPrefix: standardPartitionServiceDomainPrefix,
42+
v1SDKDNSPrefix: "amazonaws.com",
43+
regions: []string{
44+
RegionUSWest1,
45+
RegionUSWest2,
46+
RegionUSEast1,
47+
RegionUSEast2,
48+
RegionCACentral1,
49+
RegionCAWest1,
50+
RegionEUWest1,
51+
RegionEUWest2,
52+
RegionEUWest3,
53+
RegionEUNorth1,
54+
RegionEUCentral1,
55+
RegionEUCentral2,
56+
RegionEUSouth1,
57+
RegionEUSouth2,
58+
RegionAPNorthEast1,
59+
RegionAPNorthEast2,
60+
RegionAPNorthEast3,
61+
RegionAPSouthEast1,
62+
RegionAPSouthEast2,
63+
RegionAPSouthEast3,
64+
RegionAPSouthEast4,
65+
RegionAPSouthEast5,
66+
RegionAPSouthEast7,
67+
RegionAPSouth1,
68+
RegionAPSouth2,
69+
RegionAPEast1,
70+
RegionAPEast2,
71+
RegionMECentral1,
72+
RegionMESouth1,
73+
RegionSAEast1,
74+
RegionAFSouth1,
75+
RegionILCentral1,
76+
RegionMXCentral1,
77+
RegionAPSoutheast6,
78+
},
79+
}
80+
81+
func (p partition) Name() string {
82+
return p.name
4183
}
4284

4385
// Partitions is a list of supported AWS partitions.
@@ -48,6 +90,7 @@ var Partitions = partitions{
4890
serviceMappings: standardServiceMappings,
4991
regions: []string{RegionUSGovEast1, RegionUSGovWest1},
5092
endpointServiceDomainPrefix: standardPartitionServiceDomainPrefix,
93+
v1SDKDNSPrefix: "amazonaws.com",
5194
},
5295
{
5396
name: PartitionChina,
@@ -58,6 +101,7 @@ var Partitions = partitions{
58101
},
59102
regions: []string{RegionCNNorth1, RegionCNNorthwest1},
60103
endpointServiceDomainPrefix: fmt.Sprintf("cn.%s", standardPartitionServiceDomainPrefix),
104+
v1SDKDNSPrefix: "amazonaws.com.cn",
61105
},
62106
{
63107
name: PartitionISO,
@@ -68,6 +112,7 @@ var Partitions = partitions{
68112
},
69113
regions: []string{RegionUSISOEast1, RegionUSISOWest1},
70114
endpointServiceDomainPrefix: "gov.ic.c2s",
115+
v1SDKDNSPrefix: "c2s.ic.gov",
71116
},
72117
{
73118
name: PartitionISOB,
@@ -78,6 +123,7 @@ var Partitions = partitions{
78123
},
79124
regions: []string{RegionUSISOBEast1},
80125
endpointServiceDomainPrefix: "gov.sgov.sc2s",
126+
v1SDKDNSPrefix: "sc2s.sgov.gov",
81127
},
82128
{
83129
name: PartitionISOE,
@@ -89,6 +135,7 @@ var Partitions = partitions{
89135
regions: []string{RegionEUISOEWest1},
90136
endpointServiceDomainPrefix: standardPartitionServiceDomainPrefix,
91137
endpointServiceDomainPrefixAlt: "uk.adc-e.cloud",
138+
v1SDKDNSPrefix: "cloud.adc-e.uk",
92139
},
93140
{
94141
name: PartitionISOF,
@@ -100,19 +147,36 @@ var Partitions = partitions{
100147
regions: []string{RegionUSISOFSouth1, RegionUSISOFEast1},
101148
endpointServiceDomainPrefix: standardPartitionServiceDomainPrefix,
102149
endpointServiceDomainPrefixAlt: "gov.ic.hci.csp",
150+
v1SDKDNSPrefix: "csp.hci.ic.gov",
103151
},
104152
}
105153

106-
// ForRegion returns the partition a region belongs to.
107-
func (p partitions) ForRegion(region string) string {
154+
func (p partitions) partitionFromRegion(region string) *partition {
108155
for _, pt := range p {
109156
for _, r := range pt.regions {
110157
if r == region {
111-
return pt.name
158+
return &pt
112159
}
113160
}
114161
}
115-
return PartitionAWS
162+
return nil
163+
}
164+
165+
// ForRegion returns the partition a region belongs to.
166+
func (p partitions) ForRegion(region string) string {
167+
pt := p.partitionFromRegion(region)
168+
if pt == nil {
169+
return PartitionAWS
170+
}
171+
return pt.name
172+
}
173+
174+
func (p partitions) V1SDKDNSPrefixForRegion(region string) (string, error) {
175+
pt := p.partitionFromRegion(region)
176+
if pt == nil {
177+
return "", fmt.Errorf("failed to find DNS suffix for region %s", region)
178+
}
179+
return pt.v1SDKDNSPrefix, nil
116180
}
117181

118182
// GetEndpointServiceDomainPrefix returns the domain prefix for the endpoint service.
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package v1alpha5
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/require"
7+
)
8+
9+
func TestV1SDKDNSPrefixReturnsForAllRegions(t *testing.T) {
10+
for _, region := range SupportedRegions() {
11+
_, err := Partitions.V1SDKDNSPrefixForRegion(region)
12+
require.NoError(t, err)
13+
}
14+
}
15+
16+
func TestV1SDKDNSPrefix(t *testing.T) {
17+
tests := []struct {
18+
region string
19+
expected string
20+
}{
21+
{RegionUSWest1, "amazonaws.com"},
22+
{RegionUSGovEast1, "amazonaws.com"},
23+
{RegionCNNorthwest1, "amazonaws.com.cn"},
24+
{RegionUSISOEast1, "c2s.ic.gov"},
25+
{RegionUSISOBEast1, "sc2s.sgov.gov"},
26+
{RegionEUISOEWest1, "cloud.adc-e.uk"},
27+
{RegionUSISOFSouth1, "csp.hci.ic.gov"},
28+
}
29+
for _, test := range tests {
30+
dns, err := Partitions.V1SDKDNSPrefixForRegion(test.region)
31+
require.NoError(t, err)
32+
require.Equal(t, test.expected, dns)
33+
}
34+
}
35+
36+
// Commented out so we don't depend on v1 sdk.
37+
//func TestAgainstV1SDK(t *testing.T) {
38+
// var partitionNames []string
39+
// for _, p := range Partitions {
40+
// partitionNames = append(partitionNames, p.Name())
41+
// }
42+
// var expected []string
43+
// for _, p := range endpoints.DefaultPartitions() {
44+
// expected = append(expected, p.ID())
45+
// }
46+
// require.ElementsMatch(t, expected, partitionNames)
47+
//
48+
// for _, r := range SupportedRegions() {
49+
// var expected string
50+
// for _, p := range endpoints.DefaultPartitions() {
51+
// _, ok := p.Regions()[r]
52+
// if ok {
53+
// expected = p.DNSSuffix()
54+
// break
55+
// }
56+
// }
57+
// if expected == "" { // SDK version may be missing some endpoints.
58+
// continue
59+
// }
60+
//
61+
// actual, err := Partitions.V1SDKDNSPrefixForRegion(r)
62+
// require.NoError(t, err)
63+
// require.Equalf(t, expected, actual, "wrong dns for region %s", r)
64+
// }
65+
//}

pkg/connector/arn.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@ import (
99
"fmt"
1010
"strings"
1111

12+
api "github.com/weaveworks/eksctl/pkg/apis/eksctl.io/v1alpha5"
13+
1214
awsarn "github.com/aws/aws-sdk-go-v2/aws/arn"
13-
"github.com/aws/aws-sdk-go/aws/endpoints"
1415
)
1516

1617
// Canonicalize validates IAM resources are appropriate for the authenticator
@@ -63,8 +64,8 @@ func Canonicalize(arn string) (string, error) {
6364
}
6465

6566
func checkPartition(partition string) error {
66-
for _, p := range endpoints.DefaultPartitions() {
67-
if partition == p.ID() {
67+
for _, p := range api.Partitions {
68+
if partition == p.Name() {
6869
return nil
6970
}
7071
}

0 commit comments

Comments
 (0)