Skip to content

Commit 1951703

Browse files
authored
ROX-26792: aws-sdk-go-v2 for e2e test (#2398)
* change all tests to use aws-sdk-go-v2 * add region defaulting
1 parent d4c4621 commit 1951703

File tree

8 files changed

+156
-70
lines changed

8 files changed

+156
-70
lines changed

e2e/dns/record_cleanup.go

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,27 @@
11
package dns
22

33
import (
4-
"github.com/aws/aws-sdk-go/service/route53"
4+
"context"
5+
6+
"github.com/aws/aws-sdk-go-v2/service/route53"
7+
"github.com/aws/aws-sdk-go-v2/service/route53/types"
58
. "github.com/onsi/gomega"
69
"github.com/stackrox/acs-fleet-manager/internal/central/pkg/api/public"
710
"github.com/stackrox/acs-fleet-manager/internal/central/pkg/services"
811
)
912

1013
// CleanupCentralRequestRecords deletes all route53 resoruces associated with the centralRequest
11-
func CleanupCentralRequestRecords(route53Client *route53.Route53, centralRequest public.CentralRequest) {
14+
func CleanupCentralRequestRecords(route53Client *route53.Client, centralRequest public.CentralRequest) {
1215
dnsLoader := NewRecordsLoader(route53Client, centralRequest)
1316
recordSets := dnsLoader.LoadDNSRecords()
1417

15-
action := string(services.CentralRoutesActionDelete)
16-
changes := []*route53.Change{}
18+
action, err := services.CentralRoutesActionToRoute53ChangeAction(services.CentralRoutesActionDelete)
19+
Expect(err).ToNot(HaveOccurred())
20+
21+
changes := []types.Change{}
1722
for _, rs := range recordSets {
18-
c := &route53.Change{
19-
Action: &action,
23+
c := types.Change{
24+
Action: action,
2025
ResourceRecordSet: rs,
2126
}
2227
changes = append(changes, c)
@@ -26,9 +31,9 @@ func CleanupCentralRequestRecords(route53Client *route53.Route53, centralRequest
2631
return
2732
}
2833

29-
_, err := route53Client.ChangeResourceRecordSets(&route53.ChangeResourceRecordSetsInput{
34+
_, err = route53Client.ChangeResourceRecordSets(context.Background(), &route53.ChangeResourceRecordSetsInput{
3035
HostedZoneId: dnsLoader.rhacsZone.Name,
31-
ChangeBatch: &route53.ChangeBatch{Changes: changes},
36+
ChangeBatch: &types.ChangeBatch{Changes: changes},
3237
})
3338

3439
Expect(err).ToNot(HaveOccurred())

e2e/dns/records_loader.go

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,29 @@
22
package dns
33

44
import (
5+
"context"
56
"fmt"
67
"net"
78
"net/url"
89
"sort"
910
"strings"
1011

11-
"github.com/aws/aws-sdk-go/service/route53"
12+
"github.com/aws/aws-sdk-go-v2/service/route53"
13+
"github.com/aws/aws-sdk-go-v2/service/route53/types"
1214
. "github.com/onsi/gomega"
1315
"github.com/stackrox/acs-fleet-manager/internal/central/pkg/api/public"
1416
)
1517

1618
// RecordsLoader loads DNS records from Route53
1719
type RecordsLoader struct {
18-
route53Client *route53.Route53
19-
rhacsZone *route53.HostedZone
20+
route53Client *route53.Client
21+
rhacsZone *types.HostedZone
2022
CentralDomainNames []string
21-
LastResult []*route53.ResourceRecordSet
23+
LastResult []*types.ResourceRecordSet
2224
}
2325

2426
// NewRecordsLoader creates a new instance of RecordsLoader
25-
func NewRecordsLoader(route53Client *route53.Route53, central public.CentralRequest) *RecordsLoader {
27+
func NewRecordsLoader(route53Client *route53.Client, central public.CentralRequest) *RecordsLoader {
2628
rhacsZone, err := getHostedZone(route53Client, central)
2729
Expect(err).ToNot(HaveOccurred())
2830

@@ -34,51 +36,52 @@ func NewRecordsLoader(route53Client *route53.Route53, central public.CentralRequ
3436
}
3537

3638
// LoadDNSRecords loads DNS records from Route53
37-
func (loader *RecordsLoader) LoadDNSRecords() []*route53.ResourceRecordSet {
39+
func (loader *RecordsLoader) LoadDNSRecords() []*types.ResourceRecordSet {
3840
if len(loader.CentralDomainNames) == 0 {
39-
return []*route53.ResourceRecordSet{}
41+
return []*types.ResourceRecordSet{}
4042
}
4143
idx := 0
4244
loadingRecords := true
4345
nextRecord := &loader.CentralDomainNames[idx]
44-
result := make([]*route53.ResourceRecordSet, 0, len(loader.CentralDomainNames))
46+
result := make([]*types.ResourceRecordSet, 0, len(loader.CentralDomainNames))
4547

4648
loading:
4749
for loadingRecords {
48-
output, err := loader.route53Client.ListResourceRecordSets(&route53.ListResourceRecordSetsInput{
50+
output, err := loader.route53Client.ListResourceRecordSets(context.Background(), &route53.ListResourceRecordSetsInput{
4951
HostedZoneId: loader.rhacsZone.Id,
5052
StartRecordName: nextRecord,
5153
})
5254
Expect(err).ToNot(HaveOccurred())
5355

5456
for _, recordSet := range output.ResourceRecordSets {
5557
if *recordSet.Name == loader.CentralDomainNames[idx] {
56-
result = append(result, recordSet)
58+
result = append(result, &recordSet)
5759
idx++
5860
if idx == len(loader.CentralDomainNames) {
5961
break loading
6062
}
6163
}
6264
}
63-
loadingRecords = *output.IsTruncated
65+
loadingRecords = output.IsTruncated
6466
nextRecord = output.NextRecordName
6567
}
6668
loader.LastResult = result
6769
return result
6870
}
6971

70-
func getHostedZone(route53Client *route53.Route53, central public.CentralRequest) (*route53.HostedZone, error) {
71-
hostedZones, err := route53Client.ListHostedZones(&route53.ListHostedZonesInput{})
72+
func getHostedZone(route53Client *route53.Client, central public.CentralRequest) (*types.HostedZone, error) {
73+
hostedZones, err := route53Client.ListHostedZones(context.Background(), &route53.ListHostedZonesInput{})
7274
if err != nil {
7375
return nil, fmt.Errorf("failed to list hosted zones: %w", err)
7476
}
7577

76-
var rhacsZone *route53.HostedZone
78+
var rhacsZone *types.HostedZone
7779
for _, zone := range hostedZones.HostedZones {
7880
// Omit the . at the end of hosted zone name
7981
name := removeLastChar(*zone.Name)
8082
if strings.Contains(central.CentralUIURL, name) {
81-
rhacsZone = zone
83+
z := zone
84+
rhacsZone = &z
8285
break
8386
}
8487
}

e2e/e2e_suite_test.go

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,9 @@ import (
77
"testing"
88
"time"
99

10-
"github.com/aws/aws-sdk-go/aws"
11-
"github.com/aws/aws-sdk-go/aws/credentials"
12-
"github.com/aws/aws-sdk-go/aws/session"
13-
"github.com/aws/aws-sdk-go/service/route53"
10+
"github.com/aws/aws-sdk-go-v2/aws"
11+
"github.com/aws/aws-sdk-go-v2/credentials"
12+
"github.com/aws/aws-sdk-go-v2/service/route53"
1413
. "github.com/onsi/ginkgo/v2"
1514
. "github.com/onsi/gomega"
1615
openshiftRouteV1 "github.com/openshift/api/route/v1"
@@ -28,7 +27,7 @@ var (
2827
routeService *k8s.RouteService
2928
dnsEnabled bool
3029
routesEnabled bool
31-
route53Client *route53.Route53
30+
route53Client *route53.Client
3231
waitTimeout = testutil.GetWaitTimeout()
3332
extendedWaitTimeout = testutil.GetWaitTimeout() * 3
3433
dpCloudProvider = getEnvDefault("DP_CLOUD_PROVIDER", "standalone")
@@ -69,14 +68,20 @@ var _ = BeforeSuite(func() {
6968
dnsEnabled, accessKey, secretKey = testutil.DNSConfiguration(routesEnabled)
7069

7170
if dnsEnabled {
72-
creds := credentials.NewStaticCredentials(
71+
creds := aws.NewCredentialsCache(credentials.NewStaticCredentialsProvider(
7372
accessKey,
7473
secretKey,
75-
"")
76-
sess, err := session.NewSession(aws.NewConfig().WithCredentials(creds))
74+
""))
75+
76+
_, err := creds.Retrieve(context.Background())
77+
Expect(err).ToNot(HaveOccurred())
78+
cfg := aws.Config{
79+
Credentials: creds,
80+
Region: getEnvDefault("AWS_REGION", "us-east-1"),
81+
}
7782
Expect(err).ToNot(HaveOccurred())
7883

79-
route53Client = route53.New(sess)
84+
route53Client = route53.NewFromConfig(cfg)
8085
}
8186

8287
if val := os.Getenv("FLEET_MANAGER_ENDPOINT"); val != "" {

e2e/multicluster/multicluster_suite_test.go

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
package multicluster
22

33
import (
4+
"context"
45
"os"
56
"testing"
67

7-
"github.com/aws/aws-sdk-go/aws"
8-
"github.com/aws/aws-sdk-go/aws/credentials"
9-
"github.com/aws/aws-sdk-go/aws/session"
10-
"github.com/aws/aws-sdk-go/service/route53"
8+
"github.com/aws/aws-sdk-go-v2/aws"
9+
"github.com/aws/aws-sdk-go-v2/credentials"
10+
"github.com/aws/aws-sdk-go-v2/service/route53"
1111
. "github.com/onsi/ginkgo/v2"
1212
. "github.com/onsi/gomega"
1313
"github.com/stackrox/acs-fleet-manager/e2e/testutil"
@@ -21,7 +21,7 @@ var (
2121
cluster2KubeClient ctrlClient.Client
2222

2323
fleetManagerEndpoint = "http://localhost:8000"
24-
route53Client *route53.Route53
24+
route53Client *route53.Client
2525
dnsEnabled bool
2626
)
2727

@@ -64,13 +64,28 @@ var _ = BeforeSuite(func() {
6464
dnsEnabled, accessKey, secretKey = testutil.DNSConfiguration(routesEnabled)
6565

6666
if dnsEnabled {
67-
creds := credentials.NewStaticCredentials(
67+
creds := aws.NewCredentialsCache(credentials.NewStaticCredentialsProvider(
6868
accessKey,
6969
secretKey,
70-
"")
71-
sess, err := session.NewSession(aws.NewConfig().WithCredentials(creds))
70+
""))
71+
72+
_, err := creds.Retrieve(context.Background())
73+
Expect(err).ToNot(HaveOccurred())
74+
75+
cfg := aws.Config{
76+
Credentials: creds,
77+
Region: getEnvDefault("AWS_REGION", "us-east-1"),
78+
}
7279
Expect(err).ToNot(HaveOccurred())
7380

74-
route53Client = route53.New(sess)
81+
route53Client = route53.NewFromConfig(cfg)
7582
}
7683
})
84+
85+
func getEnvDefault(key, defaultValue string) string {
86+
value, ok := os.LookupEnv(key)
87+
if !ok {
88+
return defaultValue
89+
}
90+
return value
91+
}

e2e/testutil/assert.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55
"fmt"
66
"net/url"
77

8-
"github.com/aws/aws-sdk-go/service/route53"
8+
"github.com/aws/aws-sdk-go-v2/service/route53/types"
99
. "github.com/onsi/gomega"
1010
openshiftRouteV1 "github.com/openshift/api/route/v1"
1111
"github.com/stackrox/acs-fleet-manager/fleetshard/pkg/k8s"
@@ -46,7 +46,7 @@ func AssertCentralRequestDeprovisioning(ctx context.Context, client *fleetmanage
4646

4747
// AssertDNSMatchesRouter asserts that every domain in centralDomainNames is in recordSets and targets
4848
// the correct hostname given by the routeIngress
49-
func AssertDNSMatchesRouter(centralDomainNames []string, recordSets []*route53.ResourceRecordSet, routeIngress *openshiftRouteV1.RouteIngress) {
49+
func AssertDNSMatchesRouter(centralDomainNames []string, recordSets []*types.ResourceRecordSet, routeIngress *openshiftRouteV1.RouteIngress) {
5050
for idx, domain := range centralDomainNames {
5151
recordSet := recordSets[idx]
5252
Expect(recordSet.ResourceRecords).To(HaveLen(1))

go.mod

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ require (
66
github.com/DATA-DOG/go-sqlmock v1.5.2
77
github.com/antihax/optional v1.0.0
88
github.com/argoproj/argo-cd/v2 v2.14.13
9-
github.com/aws/aws-sdk-go v1.55.7
109
github.com/aws/aws-sdk-go-v2 v1.36.5
1110
github.com/aws/aws-sdk-go-v2/config v1.29.17
1211
github.com/aws/aws-sdk-go-v2/credentials v1.17.70
@@ -31,7 +30,7 @@ require (
3130
github.com/google/uuid v1.6.0
3231
github.com/gorilla/handlers v1.5.2
3332
github.com/gorilla/mux v1.8.1
34-
github.com/gruntwork-io/terratest v0.47.0
33+
github.com/gruntwork-io/terratest v0.50.0
3534
github.com/hashicorp/go-multierror v1.1.1
3635
github.com/lib/pq v1.10.9
3736
github.com/mendsley/gojwk v0.0.0-20141217222730-4d5ec6e58103
@@ -74,7 +73,7 @@ require (
7473
)
7574

7675
require (
77-
cloud.google.com/go/compute/metadata v0.5.1 // indirect
76+
cloud.google.com/go/compute/metadata v0.5.2 // indirect
7877
dario.cat/mergo v1.0.1 // indirect
7978
filippo.io/edwards25519 v1.1.0 // indirect
8079
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect
@@ -85,12 +84,32 @@ require (
8584
github.com/ProtonMail/go-crypto v1.1.5 // indirect
8685
github.com/argoproj/gitops-engine v0.7.1-0.20250521000818-c08b0a72c1f1 // indirect
8786
github.com/argoproj/pkg v0.13.7-0.20230626144333-d56162821bd1 // indirect
87+
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.7 // indirect
8888
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.32 // indirect
89+
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.41 // indirect
8990
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36 // indirect
9091
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36 // indirect
9192
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect
93+
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.24 // indirect
94+
github.com/aws/aws-sdk-go-v2/service/acm v1.30.6 // indirect
95+
github.com/aws/aws-sdk-go-v2/service/autoscaling v1.51.0 // indirect
96+
github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.44.0 // indirect
97+
github.com/aws/aws-sdk-go-v2/service/dynamodb v1.37.1 // indirect
98+
github.com/aws/aws-sdk-go-v2/service/ec2 v1.193.0 // indirect
99+
github.com/aws/aws-sdk-go-v2/service/ecr v1.36.6 // indirect
100+
github.com/aws/aws-sdk-go-v2/service/ecs v1.52.0 // indirect
101+
github.com/aws/aws-sdk-go-v2/service/iam v1.38.1 // indirect
92102
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4 // indirect
103+
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.4.5 // indirect
104+
github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.10.5 // indirect
93105
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.17 // indirect
106+
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.5 // indirect
107+
github.com/aws/aws-sdk-go-v2/service/lambda v1.69.0 // indirect
108+
github.com/aws/aws-sdk-go-v2/service/s3 v1.69.0 // indirect
109+
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.34.6 // indirect
110+
github.com/aws/aws-sdk-go-v2/service/sns v1.33.6 // indirect
111+
github.com/aws/aws-sdk-go-v2/service/sqs v1.37.1 // indirect
112+
github.com/aws/aws-sdk-go-v2/service/ssm v1.56.0 // indirect
94113
github.com/aws/aws-sdk-go-v2/service/sso v1.25.5 // indirect
95114
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.3 // indirect
96115
github.com/aws/aws-sdk-go-v2/service/sts v1.34.0 // indirect
@@ -168,9 +187,9 @@ require (
168187
github.com/homeport/dyff v1.6.0 // indirect
169188
github.com/inconshreveable/mousetrap v1.1.0 // indirect
170189
github.com/jackc/pgpassfile v1.0.0 // indirect
171-
github.com/jackc/pgservicefile v0.0.0-20231201235250-de7065d80cb9 // indirect
172-
github.com/jackc/pgx/v5 v5.6.0 // indirect
173-
github.com/jackc/puddle/v2 v2.2.1 // indirect
190+
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
191+
github.com/jackc/pgx/v5 v5.7.1 // indirect
192+
github.com/jackc/puddle/v2 v2.2.2 // indirect
174193
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
175194
github.com/jinzhu/inflection v1.0.0 // indirect
176195
github.com/jinzhu/now v1.1.5 // indirect
@@ -211,7 +230,7 @@ require (
211230
github.com/pjbgf/sha1cd v0.3.2 // indirect
212231
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect
213232
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
214-
github.com/pquerna/otp v1.2.0 // indirect
233+
github.com/pquerna/otp v1.4.0 // indirect
215234
github.com/prometheus/procfs v0.15.1 // indirect
216235
github.com/redis/go-redis/v9 v9.7.3 // indirect
217236
github.com/rhobs/obo-prometheus-operator/pkg/apis/monitoring v0.66.0-rhobs1 // indirect
@@ -227,7 +246,7 @@ require (
227246
github.com/stackrox/scanner v0.0.0-20240830165150-d133ba942d59 // indirect
228247
github.com/texttheater/golang-levenshtein v1.0.1 // indirect
229248
github.com/tkuchiki/go-timezone v0.2.3 // indirect
230-
github.com/urfave/cli v1.22.14 // indirect
249+
github.com/urfave/cli v1.22.16 // indirect
231250
github.com/virtuald/go-ordered-json v0.0.0-20170621173500-b18e6e673d74 // indirect
232251
github.com/vmihailenco/go-tinylfu v0.2.2 // indirect
233252
github.com/vmihailenco/msgpack/v5 v5.3.5 // indirect

0 commit comments

Comments
 (0)