@@ -19,7 +19,6 @@ func resourceScalewayObjectBucket() *schema.Resource {
19
19
Importer : & schema.ResourceImporter {
20
20
State : schema .ImportStatePassthrough ,
21
21
},
22
-
23
22
Schema : map [string ]* schema.Schema {
24
23
"name" : {
25
24
Type : schema .TypeString ,
@@ -33,13 +32,10 @@ func resourceScalewayObjectBucket() *schema.Resource {
33
32
Default : "private" ,
34
33
Description : "ACL of the bucket: either 'public-read' or 'private'." ,
35
34
ValidateFunc : validation .StringInSlice ([]string {
36
- "private" ,
37
- "public-read" ,
38
- "public-read-write" ,
39
- "authenticated-read" ,
40
- "bucket-owner-read" ,
41
- "bucket-owner-full-control" ,
42
- "log-delivery-write" ,
35
+ s3 .ObjectCannedACLPrivate ,
36
+ s3 .ObjectCannedACLPublicRead ,
37
+ s3 .ObjectCannedACLPublicReadWrite ,
38
+ s3 .ObjectCannedACLAuthenticatedRead ,
43
39
}, false ),
44
40
},
45
41
"region" : regionSchema (),
@@ -67,11 +63,22 @@ func resourceScalewayObjectBucketCreate(d *schema.ResourceData, m interface{}) e
67
63
}
68
64
69
65
func resourceScalewayObjectBucketRead (d * schema.ResourceData , m interface {}) error {
70
- s3Client , _ , bucketName , err := getS3ClientWithRegionAndID (m , d .Id ())
66
+ s3Client , _ , bucketName , err := getS3ClientWithRegionAndName (m , d .Id ())
71
67
if err != nil {
72
68
return err
73
69
}
74
70
71
+ d .Set ("name" , bucketName )
72
+
73
+ // We do not read `acl` attribute because it could be impossible to find
74
+ // the right canned ACL from a complex ACL object.
75
+ //
76
+ // Known issue:
77
+ // Import a bucket (eg. terraform import scaleway_object_bucket.x fr-par/x)
78
+ // will always trigger a diff (eg. terraform plan) on acl attribute because
79
+ // we do not read it and it has a "private" default value.
80
+ // AWS has the same issue: https://github.com/terraform-providers/terraform-provider-aws/issues/6193
81
+
75
82
_ , err = s3Client .ListObjects (& s3.ListObjectsInput {
76
83
Bucket : aws .String (bucketName ),
77
84
})
@@ -88,7 +95,7 @@ func resourceScalewayObjectBucketRead(d *schema.ResourceData, m interface{}) err
88
95
}
89
96
90
97
func resourceScalewayObjectBucketUpdate (d * schema.ResourceData , m interface {}) error {
91
- s3Client , _ , bucketName , err := getS3ClientWithRegionAndID (m , d .Id ())
98
+ s3Client , _ , bucketName , err := getS3ClientWithRegionAndName (m , d .Id ())
92
99
if err != nil {
93
100
return err
94
101
}
@@ -110,7 +117,7 @@ func resourceScalewayObjectBucketUpdate(d *schema.ResourceData, m interface{}) e
110
117
}
111
118
112
119
func resourceScalewayObjectBucketDelete (d * schema.ResourceData , m interface {}) error {
113
- s3Client , _ , bucketName , err := getS3ClientWithRegionAndID (m , d .Id ())
120
+ s3Client , _ , bucketName , err := getS3ClientWithRegionAndName (m , d .Id ())
114
121
if err != nil {
115
122
return err
116
123
}
0 commit comments