Skip to content

Commit 68ee162

Browse files
authored
chore(object): refactor code for bucket resource (#720)
1 parent df949f0 commit 68ee162

File tree

5 files changed

+2615
-16
lines changed

5 files changed

+2615
-16
lines changed

scaleway/helpers_object.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package scaleway
33
import (
44
"errors"
55
"fmt"
6+
"net/http"
67
"os"
78
"strings"
89
"time"
@@ -20,11 +21,12 @@ const (
2021
defaultObjectBucketTimeout = 10 * time.Minute
2122
)
2223

23-
func newS3Client(region, accessKey, secretKey string) (*s3.S3, error) {
24+
func newS3Client(httpClient *http.Client, region, accessKey, secretKey string) (*s3.S3, error) {
2425
config := &aws.Config{}
2526
config.WithRegion(region)
2627
config.WithCredentials(credentials.NewStaticCredentials(accessKey, secretKey, ""))
2728
config.WithEndpoint("https://s3." + region + ".scw.cloud")
29+
config.WithHTTPClient(httpClient)
2830
if strings.ToLower(os.Getenv("TF_LOG")) == "debug" {
2931
config.WithLogLevel(aws.LogDebugWithHTTPBody)
3032
}
@@ -40,7 +42,7 @@ func newS3ClientFromMeta(meta *Meta) (*s3.S3, error) {
4042
region, _ := meta.scwClient.GetDefaultRegion()
4143
accessKey, _ := meta.scwClient.GetAccessKey()
4244
secretKey, _ := meta.scwClient.GetSecretKey()
43-
return newS3Client(region.String(), accessKey, secretKey)
45+
return newS3Client(meta.httpClient, region.String(), accessKey, secretKey)
4446
}
4547

4648
func s3ClientWithRegion(d *schema.ResourceData, m interface{}) (*s3.S3, scw.Region, error) {
@@ -53,7 +55,7 @@ func s3ClientWithRegion(d *schema.ResourceData, m interface{}) (*s3.S3, scw.Regi
5355
accessKey, _ := meta.scwClient.GetAccessKey()
5456
secretKey, _ := meta.scwClient.GetSecretKey()
5557

56-
s3Client, err := newS3Client(region.String(), accessKey, secretKey)
58+
s3Client, err := newS3Client(meta.httpClient, region.String(), accessKey, secretKey)
5759
if err != nil {
5860
return nil, "", err
5961
}
@@ -69,7 +71,7 @@ func s3ClientWithRegionAndName(m interface{}, name string) (*s3.S3, scw.Region,
6971
}
7072
accessKey, _ := meta.scwClient.GetAccessKey()
7173
secretKey, _ := meta.scwClient.GetSecretKey()
72-
s3Client, err := newS3Client(region.String(), accessKey, secretKey)
74+
s3Client, err := newS3Client(meta.httpClient, region.String(), accessKey, secretKey)
7375
if err != nil {
7476
return nil, "", "", err
7577
}

scaleway/provider.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,10 @@ func Provider(config *ProviderConfig) plugin.ProviderFunc {
134134
type Meta struct {
135135
// scwClient is the Scaleway SDK client.
136136
scwClient *scw.Client
137+
// httpClient can be either a regular http.Client used to make real HTTP requests
138+
// or it can be a http.Client used to record and replay cassettes which is useful
139+
// to replay recorded interactions with APIs locally
140+
httpClient *http.Client
137141
}
138142

139143
type MetaConfig struct {
@@ -171,20 +175,20 @@ func buildMeta(config *MetaConfig) (*Meta, error) {
171175
scw.WithProfile(profile),
172176
}
173177

174-
defaultHTTPClient := &http.Client{Transport: newRetryableTransport(http.DefaultTransport)}
178+
httpClient := &http.Client{Transport: newRetryableTransport(http.DefaultTransport)}
175179
if config.httpClient != nil {
176-
opts = append(opts, scw.WithHTTPClient(config.httpClient))
177-
} else {
178-
opts = append(opts, scw.WithHTTPClient(defaultHTTPClient))
180+
httpClient = config.httpClient
179181
}
182+
opts = append(opts, scw.WithHTTPClient(httpClient))
180183

181184
scwClient, err := scw.NewClient(opts...)
182185
if err != nil {
183186
return nil, err
184187
}
185188

186189
return &Meta{
187-
scwClient: scwClient,
190+
scwClient: scwClient,
191+
httpClient: httpClient,
188192
}, nil
189193
}
190194

scaleway/resource_object_bucket_test.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@ import (
44
"fmt"
55
"strings"
66
"testing"
7-
"time"
87

9-
"github.com/aws/aws-sdk-go/aws"
108
"github.com/aws/aws-sdk-go/aws/awserr"
119
"github.com/aws/aws-sdk-go/service/s3"
1210
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
@@ -25,11 +23,12 @@ func TestAccScalewayObjectBucket_Basic(t *testing.T) {
2523
tt := NewTestTools(t)
2624
defer tt.Cleanup()
2725

28-
testBucketName := fmt.Sprintf("terraform-test-%d", time.Now().Unix())
29-
testBucketNameAms := testBucketName + "ams"
30-
testBucketNamePar := testBucketName + "par"
26+
testBucketName := "test-acc-scaleway-object-bucket-basic"
27+
testBucketNameAms := testBucketName + "-ams"
28+
testBucketNamePar := testBucketName + "-par"
3129
testBucketACL := "private"
3230
testBucketUpdatedACL := "public-read"
31+
3332
resource.Test(t, resource.TestCase{
3433
PreCheck: func() { testAccPreCheck(t) },
3534
ProviderFactories: tt.ProviderFactories,
@@ -220,7 +219,7 @@ func testAccCheckScalewayObjectBucketExists(tt *TestTools, n string, bucketName
220219
}
221220

222221
_, err = conn.HeadBucketWithContext(tt.ctx, &s3.HeadBucketInput{
223-
Bucket: aws.String(bucketName),
222+
Bucket: scw.StringPtr(bucketName),
224223
})
225224

226225
if err != nil {
@@ -241,7 +240,7 @@ func testAccCheckScalewayObjectBucketVersioning(tt *TestTools, versioningStatus
241240
}
242241

243242
out, err := conn.GetBucketVersioningWithContext(tt.ctx, &s3.GetBucketVersioningInput{
244-
Bucket: aws.String(bucketName),
243+
Bucket: scw.StringPtr(bucketName),
245244
})
246245

247246
if err != nil {

0 commit comments

Comments
 (0)