Skip to content

Commit 29b66bb

Browse files
committed
fix(mnq): v2 for sqs
1 parent 4a9bbcb commit 29b66bb

File tree

5 files changed

+73
-64
lines changed

5 files changed

+73
-64
lines changed

internal/services/mnq/helpers_mnq.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -259,12 +259,12 @@ func awsAttributeToResourceData(values map[string]interface{}, value string, res
259259
}
260260

261261
// awsAttributesToResourceData returns a map of valid values for a terraform schema from an attributes map and a conversion map
262-
func awsAttributesToResourceData(attributes map[string]*string, resourceSchemas map[string]*schema.Schema, attributesToResourceMap map[string]string) (map[string]interface{}, error) {
262+
func awsAttributesToResourceData(attributes map[string]string, resourceSchemas map[string]*schema.Schema, attributesToResourceMap map[string]string) (map[string]interface{}, error) {
263263
values := make(map[string]interface{})
264264

265265
for attribute, resourcePath := range attributesToResourceMap {
266-
if value, ok := attributes[attribute]; ok && value != nil {
267-
err := awsAttributeToResourceData(values, *value, resourcePath, resourceSchemas)
266+
if value, ok := attributes[attribute]; ok {
267+
err := awsAttributeToResourceData(values, value, resourcePath, resourceSchemas)
268268
if err != nil {
269269
return nil, err
270270
}

internal/services/mnq/helpers_mnq_queue.go

Lines changed: 38 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,12 @@ import (
99
"strings"
1010
"time"
1111

12-
"github.com/aws/aws-sdk-go/aws"
13-
"github.com/aws/aws-sdk-go/aws/credentials"
14-
"github.com/aws/aws-sdk-go/aws/session"
15-
"github.com/aws/aws-sdk-go/service/sqs"
12+
"github.com/aws/aws-sdk-go-v2/config"
13+
awsType "github.com/aws/aws-sdk-go-v2/service/sqs/types"
14+
15+
"github.com/aws/aws-sdk-go-v2/credentials"
16+
"github.com/aws/aws-sdk-go-v2/service/sqs"
17+
smithylogging "github.com/aws/smithy-go/logging"
1618
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/id"
1719
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/logging"
1820
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
@@ -33,7 +35,15 @@ const (
3335
DefaultQueueVisibilityTimeout = 30
3436
)
3537

36-
func SQSClientWithRegion(d *schema.ResourceData, m interface{}) (*sqs.SQS, scw.Region, error) {
38+
type httpDebugLogger struct{}
39+
40+
func (h *httpDebugLogger) Logf(classification smithylogging.Classification, format string, v ...interface{}) {
41+
if classification == smithylogging.Debug {
42+
fmt.Printf("[HTTP DEBUG] %s\n", fmt.Sprintf(format, v...))
43+
}
44+
}
45+
46+
func SQSClientWithRegion(d *schema.ResourceData, m interface{}) (*sqs.Client, scw.Region, error) {
3747
region, err := meta.ExtractRegion(d, m)
3848
if err != nil {
3949
return nil, "", err
@@ -51,21 +61,26 @@ func SQSClientWithRegion(d *schema.ResourceData, m interface{}) (*sqs.SQS, scw.R
5161
return sqsClient, region, err
5262
}
5363

54-
func NewSQSClient(httpClient *http.Client, region string, endpoint string, accessKey string, secretKey string) (*sqs.SQS, error) {
55-
config := &aws.Config{}
56-
config.WithRegion(region)
57-
config.WithCredentials(credentials.NewStaticCredentials(accessKey, secretKey, ""))
58-
config.WithEndpoint(strings.ReplaceAll(endpoint, "{region}", region))
59-
config.WithHTTPClient(httpClient)
64+
func NewSQSClient(httpClient *http.Client, region string, endpoint string, accessKey string, secretKey string) (*sqs.Client, error) {
65+
customEndpoint := strings.ReplaceAll(endpoint, "{region}", region)
66+
customConfig, err := config.LoadDefaultConfig(
67+
context.TODO(),
68+
config.WithRegion(region),
69+
config.WithBaseEndpoint(customEndpoint),
70+
config.WithHTTPClient(httpClient),
71+
config.WithCredentialsProvider(
72+
credentials.NewStaticCredentialsProvider(accessKey, secretKey, ""),
73+
),
74+
)
75+
6076
if logging.IsDebugOrHigher() {
61-
config.WithLogLevel(aws.LogDebugWithHTTPBody)
77+
customConfig.Logger = &httpDebugLogger{}
6278
}
6379

64-
s, err := session.NewSession(config)
6580
if err != nil {
6681
return nil, err
6782
}
68-
return sqs.New(s), nil
83+
return sqs.NewFromConfig(customConfig), nil
6984
}
7085

7186
func NATSClientWithRegion( //nolint:ireturn,nolintlint
@@ -132,20 +147,20 @@ func splitNATSJWTAndSeed(credentials string) (string, string, error) {
132147
const SQSFIFOQueueNameSuffix = ".fifo"
133148

134149
var SQSAttributesToResourceMap = map[string]string{
135-
sqs.QueueAttributeNameMaximumMessageSize: "message_max_size",
136-
sqs.QueueAttributeNameMessageRetentionPeriod: "message_max_age",
137-
sqs.QueueAttributeNameFifoQueue: "fifo_queue",
138-
sqs.QueueAttributeNameContentBasedDeduplication: "content_based_deduplication",
139-
sqs.QueueAttributeNameReceiveMessageWaitTimeSeconds: "receive_wait_time_seconds",
140-
sqs.QueueAttributeNameVisibilityTimeout: "visibility_timeout_seconds",
150+
string(awsType.QueueAttributeNameMaximumMessageSize): "message_max_size",
151+
string(awsType.QueueAttributeNameMessageRetentionPeriod): "message_max_age",
152+
string(awsType.QueueAttributeNameFifoQueue): "fifo_queue",
153+
string(awsType.QueueAttributeNameContentBasedDeduplication): "content_based_deduplication",
154+
string(awsType.QueueAttributeNameReceiveMessageWaitTimeSeconds): "receive_wait_time_seconds",
155+
string(awsType.QueueAttributeNameVisibilityTimeout): "visibility_timeout_seconds",
141156
}
142157

143158
// Returns all managed SQS attribute names
144-
func getSQSAttributeNames() []*string {
145-
attributeNames := make([]*string, 0, len(SQSAttributesToResourceMap))
159+
func getSQSAttributeNames() []awsType.QueueAttributeName {
160+
attributeNames := make([]awsType.QueueAttributeName, 0, len(SQSAttributesToResourceMap))
146161

147162
for attribute := range SQSAttributesToResourceMap {
148-
attributeNames = append(attributeNames, aws.String(attribute))
163+
attributeNames = append(attributeNames, awsType.QueueAttributeName(attribute))
149164
}
150165

151166
return attributeNames

internal/services/mnq/sns_topic.go

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

7-
"github.com/aws/aws-sdk-go/service/sns"
7+
"github.com/aws/aws-sdk-go-v2/service/sns"
88
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
99
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1010
mnq "github.com/scaleway/scaleway-sdk-go/api/mnq/v1beta1"

internal/services/mnq/sqs_queue.go

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -173,17 +173,10 @@ func ResourceMNQSQSQueueCreate(ctx context.Context, d *schema.ResourceData, m in
173173
Timeout: d.Timeout(schema.TimeoutCreate),
174174
Interval: defaultMNQQueueRetryInterval,
175175
Function: func() (*sqs.CreateQueueOutput, error) {
176-
return sqsClient.CreateQueueWithContext(ctx, input)
176+
return sqsClient.CreateQueue(ctx, input)
177177
},
178178
})
179179

180-
_, err = transport.RetryWhenAWSErrCodeEquals(ctx, []string{sqs.ErrCodeQueueDeletedRecently}, &transport.RetryWhenConfig[*sqs.CreateQueueOutput]{
181-
Timeout: d.Timeout(schema.TimeoutCreate),
182-
Interval: defaultMNQQueueRetryInterval,
183-
Function: func() (*sqs.CreateQueueOutput, error) {
184-
return sqsClient.CreateQueueWithContext(ctx, input)
185-
},
186-
})
187180
if err != nil {
188181
return diag.Errorf("failed to create SQS Queue: %s", err)
189182
}
@@ -204,20 +197,20 @@ func ResourceMNQSQSQueueRead(ctx context.Context, d *schema.ResourceData, m inte
204197
return diag.FromErr(err)
205198
}
206199

207-
queue, err := transport.RetryWhenAWSErrCodeEquals(ctx, []string{sqs.ErrCodeQueueDoesNotExist}, &transport.RetryWhenConfig[*sqs.GetQueueUrlOutput]{
200+
queue, err := transport.RetryWhenAWSErrCodeEquals(ctx, []string{"AWS.SimpleQueueService.NonExistentQueue"}, &transport.RetryWhenConfig[*sqs.GetQueueUrlOutput]{
208201
Timeout: d.Timeout(schema.TimeoutRead),
209202
Interval: defaultMNQQueueRetryInterval,
210203
Function: func() (*sqs.GetQueueUrlOutput, error) {
211-
return sqsClient.GetQueueUrlWithContext(ctx, &sqs.GetQueueUrlInput{
212-
QueueName: aws.String(queueName),
204+
return sqsClient.GetQueueUrl(ctx, &sqs.GetQueueUrlInput{
205+
QueueName: &queueName,
213206
})
214207
},
215208
})
216209
if err != nil {
217210
return diag.Errorf("failed to get the SQS Queue URL: %s", err)
218211
}
219212

220-
queueAttributes, err := sqsClient.GetQueueAttributesWithContext(ctx, &sqs.GetQueueAttributesInput{
213+
queueAttributes, err := sqsClient.GetQueueAttributes(ctx, &sqs.GetQueueAttributesInput{
221214
QueueUrl: queue.QueueUrl,
222215
AttributeNames: getSQSAttributeNames(),
223216
})
@@ -253,12 +246,12 @@ func ResourceMNQSQSQueueUpdate(ctx context.Context, d *schema.ResourceData, m in
253246
return diag.FromErr(err)
254247
}
255248

256-
queue, err := transport.RetryWhenAWSErrCodeEquals(ctx, []string{sqs.ErrCodeQueueDoesNotExist}, &transport.RetryWhenConfig[*sqs.GetQueueUrlOutput]{
249+
queue, err := transport.RetryWhenAWSErrCodeEquals(ctx, []string{"AWS.SimpleQueueService.NonExistentQueue"}, &transport.RetryWhenConfig[*sqs.GetQueueUrlOutput]{
257250
Timeout: d.Timeout(schema.TimeoutUpdate),
258251
Interval: defaultMNQQueueRetryInterval,
259252
Function: func() (*sqs.GetQueueUrlOutput, error) {
260-
return sqsClient.GetQueueUrlWithContext(ctx, &sqs.GetQueueUrlInput{
261-
QueueName: aws.String(queueName),
253+
return sqsClient.GetQueueUrl(ctx, &sqs.GetQueueUrlInput{
254+
QueueName: &queueName,
262255
})
263256
},
264257
})
@@ -271,7 +264,7 @@ func ResourceMNQSQSQueueUpdate(ctx context.Context, d *schema.ResourceData, m in
271264
return diag.FromErr(err)
272265
}
273266

274-
_, err = sqsClient.SetQueueAttributesWithContext(ctx, &sqs.SetQueueAttributesInput{
267+
_, err = sqsClient.SetQueueAttributes(ctx, &sqs.SetQueueAttributesInput{
275268
QueueUrl: queue.QueueUrl,
276269
Attributes: attributes,
277270
})
@@ -293,34 +286,34 @@ func ResourceMNQSQSQueueDelete(ctx context.Context, d *schema.ResourceData, m in
293286
return diag.FromErr(err)
294287
}
295288

296-
queue, err := sqsClient.GetQueueUrlWithContext(ctx, &sqs.GetQueueUrlInput{
297-
QueueName: aws.String(queueName),
289+
queue, err := sqsClient.GetQueueUrl(ctx, &sqs.GetQueueUrlInput{
290+
QueueName: &queueName,
298291
})
299292
if err != nil {
300-
if tfawserr.ErrCodeEquals(err, sqs.ErrCodeQueueDoesNotExist) {
293+
if tfawserr.ErrCodeEquals(err, "AWS.SimpleQueueService.NonExistentQueue") {
301294
return nil
302295
}
303296

304297
return diag.Errorf("failed to get the SQS Queue URL: %s", err)
305298
}
306299

307-
_, err = sqsClient.DeleteQueueWithContext(ctx, &sqs.DeleteQueueInput{
300+
_, err = sqsClient.DeleteQueue(ctx, &sqs.DeleteQueueInput{
308301
QueueUrl: queue.QueueUrl,
309302
})
310303
if err != nil {
311-
if tfawserr.ErrCodeEquals(err, sqs.ErrCodeQueueDoesNotExist) {
304+
if tfawserr.ErrCodeEquals(err, "AWS.SimpleQueueService.NonExistentQueue") {
312305
return nil
313306
}
314307

315308
return diag.Errorf("failed to delete SQS Queue (%s): %s", d.Id(), err)
316309
}
317310

318-
_, _ = transport.RetryWhenAWSErrCodeNotEquals(ctx, []string{sqs.ErrCodeQueueDoesNotExist}, &transport.RetryWhenConfig[*sqs.GetQueueUrlOutput]{
311+
_, _ = transport.RetryWhenAWSErrCodeNotEquals(ctx, []string{"AWS.SimpleQueueService.NonExistentQueue"}, &transport.RetryWhenConfig[*sqs.GetQueueUrlOutput]{
319312
Timeout: d.Timeout(schema.TimeoutCreate),
320313
Interval: defaultMNQQueueRetryInterval,
321314
Function: func() (*sqs.GetQueueUrlOutput, error) {
322-
return sqsClient.GetQueueUrlWithContext(ctx, &sqs.GetQueueUrlInput{
323-
QueueName: aws.String(queueName),
315+
return sqsClient.GetQueueUrl(ctx, &sqs.GetQueueUrlInput{
316+
QueueName: &queueName,
324317
})
325318
},
326319
})

internal/services/mnq/sqs_queue_test.go

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import (
55
"fmt"
66
"testing"
77

8-
"github.com/aws/aws-sdk-go/aws"
9-
"github.com/aws/aws-sdk-go/service/sqs"
8+
"github.com/aws/aws-sdk-go-v2/aws"
9+
"github.com/aws/aws-sdk-go-v2/service/sqs"
1010
"github.com/hashicorp/aws-sdk-go-base/tfawserr"
1111
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
1212
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
@@ -25,11 +25,12 @@ import (
2525
func TestAccSQSQueue_Basic(t *testing.T) {
2626
tt := acctest.NewTestTools(t)
2727
defer tt.Cleanup()
28+
ctx := context.Background()
2829

2930
resource.ParallelTest(t, resource.TestCase{
3031
PreCheck: func() { acctest.PreCheck(t) },
3132
ProviderFactories: tt.ProviderFactories,
32-
CheckDestroy: isSQSQueueDestroyed(tt),
33+
CheckDestroy: isSQSQueueDestroyed(ctx, tt),
3334
Steps: []resource.TestStep{
3435
{
3536
Config: `
@@ -57,7 +58,7 @@ func TestAccSQSQueue_Basic(t *testing.T) {
5758
}
5859
`,
5960
Check: resource.ComposeTestCheckFunc(
60-
isSQSQueuePresent(tt, "scaleway_mnq_sqs_queue.main"),
61+
isSQSQueuePresent(ctx, tt, "scaleway_mnq_sqs_queue.main"),
6162
acctest.CheckResourceAttrUUID("scaleway_mnq_sqs_queue.main", "id"),
6263
resource.TestCheckResourceAttr("scaleway_mnq_sqs_queue.main", "name", "test-mnq-sqs-queue-basic"),
6364
),
@@ -90,7 +91,7 @@ func TestAccSQSQueue_Basic(t *testing.T) {
9091
}
9192
`,
9293
Check: resource.ComposeTestCheckFunc(
93-
isSQSQueuePresent(tt, "scaleway_mnq_sqs_queue.main"),
94+
isSQSQueuePresent(ctx, tt, "scaleway_mnq_sqs_queue.main"),
9495
acctest.CheckResourceAttrUUID("scaleway_mnq_sqs_queue.main", "id"),
9596
resource.TestCheckResourceAttr("scaleway_mnq_sqs_queue.main", "message_max_age", "720"),
9697
),
@@ -130,7 +131,7 @@ func TestAccSQSQueue_DefaultProject(t *testing.T) {
130131
}
131132
}(),
132133
CheckDestroy: resource.ComposeTestCheckFunc(
133-
isSQSQueueDestroyed(tt),
134+
isSQSQueueDestroyed(ctx, tt),
134135
func(_ *terraform.State) error {
135136
return accountAPI.DeleteProject(&accountSDK.ProjectAPIDeleteProjectRequest{
136137
ProjectID: projectID,
@@ -159,7 +160,7 @@ func TestAccSQSQueue_DefaultProject(t *testing.T) {
159160
}
160161
`, projectID),
161162
Check: resource.ComposeTestCheckFunc(
162-
isSQSQueuePresent(tt, "scaleway_mnq_sqs_queue.main"),
163+
isSQSQueuePresent(ctx, tt, "scaleway_mnq_sqs_queue.main"),
163164
acctest.CheckResourceAttrUUID("scaleway_mnq_sqs_queue.main", "id"),
164165
resource.TestCheckResourceAttr("scaleway_mnq_sqs_queue.main", "name", "test-mnq-sqs-queue-basic"),
165166
resource.TestCheckResourceAttr("scaleway_mnq_sqs_queue.main", "project_id", projectID),
@@ -169,7 +170,7 @@ func TestAccSQSQueue_DefaultProject(t *testing.T) {
169170
})
170171
}
171172

172-
func isSQSQueuePresent(tt *acctest.TestTools, n string) resource.TestCheckFunc {
173+
func isSQSQueuePresent(ctx context.Context, tt *acctest.TestTools, n string) resource.TestCheckFunc {
173174
return func(state *terraform.State) error {
174175
rs, ok := state.RootModule().Resources[n]
175176
if !ok {
@@ -186,8 +187,8 @@ func isSQSQueuePresent(tt *acctest.TestTools, n string) resource.TestCheckFunc {
186187
return err
187188
}
188189

189-
_, err = sqsClient.GetQueueUrl(&sqs.GetQueueUrlInput{
190-
QueueName: aws.String(queueName),
190+
_, err = sqsClient.GetQueueUrl(ctx, &sqs.GetQueueUrlInput{
191+
QueueName: &queueName,
191192
})
192193
if err != nil {
193194
return err
@@ -197,7 +198,7 @@ func isSQSQueuePresent(tt *acctest.TestTools, n string) resource.TestCheckFunc {
197198
}
198199
}
199200

200-
func isSQSQueueDestroyed(tt *acctest.TestTools) resource.TestCheckFunc {
201+
func isSQSQueueDestroyed(ctx context.Context, tt *acctest.TestTools) resource.TestCheckFunc {
201202
return func(state *terraform.State) error {
202203
for _, rs := range state.RootModule().Resources {
203204
if rs.Type != "scaleway_mnq_sqs_queue" {
@@ -242,11 +243,11 @@ func isSQSQueueDestroyed(tt *acctest.TestTools) resource.TestCheckFunc {
242243
return err
243244
}
244245

245-
_, err = sqsClient.GetQueueUrl(&sqs.GetQueueUrlInput{
246+
_, err = sqsClient.GetQueueUrl(ctx, &sqs.GetQueueUrlInput{
246247
QueueName: aws.String(queueName),
247248
})
248249
if err != nil {
249-
if tfawserr.ErrCodeEquals(err, sqs.ErrCodeQueueDoesNotExist) || tfawserr.ErrCodeEquals(err, "AccessDeniedException") {
250+
if tfawserr.ErrCodeEquals(err, "AWS.SimpleQueueService.NonExistentQueue") || tfawserr.ErrCodeEquals(err, "AccessDeniedException") {
250251
return nil
251252
}
252253

0 commit comments

Comments
 (0)