Skip to content

Commit 413a3b4

Browse files
authored
Merge pull request #182 from volcengine/Feat/tos-acl
Feat/tos acl
2 parents 91b60ac + de7e298 commit 413a3b4

12 files changed

+132
-56
lines changed

common/common_volcengine_tos_utils.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ func mergeTosPublicAcl(acl string, param *map[string]interface{}, ownerId string
1919
}()
2020

2121
switch acl {
22+
case "default":
23+
(*param)["IsDefault"] = true
24+
return
2225
case "private":
2326
m := map[string]interface{}{
2427
"Grantee": map[string]interface{}{
@@ -136,6 +139,11 @@ func ConvertTosPublicAcl() FieldResponseConvert {
136139
return func(i interface{}) interface{} {
137140
owner, _ := ObtainSdkValue("Owner.ID", i)
138141
grants, _ := ObtainSdkValue("Grants", i)
142+
isDefault, _ := ObtainSdkValue("IsDefault", i)
143+
if isDefaultAcl, ok := isDefault.(bool); ok && isDefaultAcl {
144+
return "default"
145+
}
146+
139147
var (
140148
read bool
141149
write bool

common/common_volcengine_version.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ package common
22

33
const (
44
TerraformProviderName = "terraform-provider-volcengine"
5-
TerraformProviderVersion = "0.0.157"
5+
TerraformProviderVersion = "0.0.158"
66
)

example/tosBucket/main.tf

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
resource "volcengine_tos_bucket" "default" {
2-
bucket_name = "tf-acc-test-bucket"
3-
# storage_class ="IA"
4-
public_acl = "private"
5-
enable_version = true
2+
bucket_name = "tf-acc-test-bucket-0123-3"
3+
# storage_class = "IA"
4+
public_acl = "private"
5+
az_redundancy = "multi-az"
6+
enable_version = true
7+
bucket_acl_delivered = true
68
account_acl {
79
account_id = "1"
810
permission = "READ"
@@ -13,7 +15,7 @@ resource "volcengine_tos_bucket" "default" {
1315
}
1416
project_name = "default"
1517
tags {
16-
key = "k1"
18+
key = "k1"
1719
value = "v1"
1820
}
19-
}
21+
}

example/volume/main.tf

Lines changed: 39 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
data "volcengine_zones" "foo"{
1+
data "volcengine_zones" "foo" {
22
}
33

44
resource "volcengine_vpc" "foo" {
@@ -8,70 +8,71 @@ resource "volcengine_vpc" "foo" {
88

99
resource "volcengine_subnet" "foo" {
1010
subnet_name = "acc-test-subnet"
11-
cidr_block = "172.16.0.0/24"
12-
zone_id = data.volcengine_zones.foo.zones[0].id
13-
vpc_id = volcengine_vpc.foo.id
11+
cidr_block = "172.16.0.0/24"
12+
zone_id = data.volcengine_zones.foo.zones[0].id
13+
vpc_id = volcengine_vpc.foo.id
1414
}
1515

1616
resource "volcengine_security_group" "foo" {
1717
security_group_name = "acc-test-security-group"
18-
vpc_id = volcengine_vpc.foo.id
18+
vpc_id = volcengine_vpc.foo.id
1919
}
2020

2121
data "volcengine_images" "foo" {
22-
os_type = "Linux"
23-
visibility = "public"
22+
os_type = "Linux"
23+
visibility = "public"
2424
instance_type_id = "ecs.g1.large"
2525
}
2626

2727
resource "volcengine_ecs_instance" "foo" {
28-
instance_name = "acc-test-ecs"
29-
description = "acc-test"
30-
host_name = "tf-acc-test"
31-
image_id = data.volcengine_images.foo.images[0].image_id
32-
instance_type = "ecs.g1.large"
33-
password = "93f0cb0614Aab12"
28+
instance_name = "acc-test-ecs"
29+
description = "acc-test"
30+
host_name = "tf-acc-test"
31+
image_id = data.volcengine_images.foo.images[0].image_id
32+
instance_type = "ecs.g1.large"
33+
password = "93f0cb0614Aab12"
3434
instance_charge_type = "PrePaid"
35-
period = 1
36-
system_volume_type = "ESSD_PL0"
37-
system_volume_size = 40
38-
subnet_id = volcengine_subnet.foo.id
39-
security_group_ids = [volcengine_security_group.foo.id]
40-
project_name = "default"
35+
period = 1
36+
system_volume_type = "ESSD_PL0"
37+
system_volume_size = 40
38+
subnet_id = volcengine_subnet.foo.id
39+
security_group_ids = [volcengine_security_group.foo.id]
40+
project_name = "default"
4141
tags {
42-
key = "k1"
42+
key = "k1"
4343
value = "v1"
4444
}
4545
}
4646

4747
resource "volcengine_volume" "PreVolume" {
48-
volume_name = "acc-test-volume"
49-
volume_type = "ESSD_PL0"
50-
description = "acc-test"
51-
kind = "data"
52-
size = 40
53-
zone_id = data.volcengine_zones.foo.zones[0].id
54-
volume_charge_type = "PrePaid"
55-
instance_id = volcengine_ecs_instance.foo.id
56-
project_name = "default"
48+
volume_name = "acc-test-volume"
49+
volume_type = "ESSD_PL0"
50+
description = "acc-test"
51+
kind = "data"
52+
size = 40
53+
zone_id = data.volcengine_zones.foo.zones[0].id
54+
volume_charge_type = "PrePaid"
55+
instance_id = volcengine_ecs_instance.foo.id
56+
project_name = "default"
5757
delete_with_instance = true
5858
tags {
59-
key = "k1"
59+
key = "k1"
6060
value = "v1"
6161
}
6262
}
6363

6464
resource "volcengine_volume" "PostVolume" {
65-
volume_name = "acc-test-volume"
66-
volume_type = "ESSD_PL0"
67-
description = "acc-test"
68-
kind = "data"
69-
size = 40
70-
zone_id = data.volcengine_zones.foo.zones[0].id
65+
volume_name = "acc-test-volume"
66+
volume_type = "ESSD_PL0"
67+
description = "acc-test"
68+
kind = "data"
69+
size = 40
70+
# snapshot_id = "snap-3vydtmc0fl3qunm4****"
71+
zone_id = data.volcengine_zones.foo.zones[0].id
7172
volume_charge_type = "PostPaid"
72-
project_name = "default"
73+
project_name = "default"
7374
tags {
74-
key = "k1"
75+
key = "k1"
7576
value = "v1"
7677
}
7778
}

volcengine/ebs/volume/resource_volcengine_volume.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,13 @@ func ResourceVolcengineVolume() *schema.Resource {
7373
Description: "The ID of the instance to which the created volume is automatically attached. " +
7474
"When use this field to attach ecs instance, the attached volume cannot be deleted by terraform, please use `terraform state rm volcengine_volume.resource_name` command to remove it from terraform state file and management.",
7575
},
76+
"snapshot_id": {
77+
Type: schema.TypeString,
78+
Optional: true,
79+
ForceNew: true,
80+
Description: "The id of the snapshot. When creating a volume using snapshots, this field is required.\n" +
81+
"When importing resources, this attribute will not be imported. If this attribute is set, please use lifecycle and ignore_changes ignore changes in fields.",
82+
},
7683
"volume_charge_type": {
7784
Type: schema.TypeString,
7885
Optional: true,

volcengine/tos/bucket/resource_volcengine_tos_bucket.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,13 @@ func ResourceVolcengineTosBucket() *schema.Resource {
8080
Optional: true,
8181
Description: "The flag of enable tos version.",
8282
},
83+
"az_redundancy": {
84+
Type: schema.TypeString,
85+
Optional: true,
86+
ForceNew: true,
87+
Default: "single-az",
88+
Description: "The AZ redundancy of the Tos Bucket. Default is `single-az`. Valid values: `single-az`, `multi-az`.",
89+
},
8390
"project_name": {
8491
Type: schema.TypeString,
8592
Optional: true,
@@ -143,6 +150,14 @@ func ResourceVolcengineTosBucket() *schema.Resource {
143150
},
144151
Set: ve.TosAccountAclHash,
145152
},
153+
"bucket_acl_delivered": {
154+
Type: schema.TypeBool,
155+
Optional: true,
156+
Computed: true,
157+
Description: "Whether to enable the default inheritance bucket ACL function for objects. Default is false.",
158+
},
159+
160+
// computed fields
146161
"creation_date": {
147162
Type: schema.TypeString,
148163
Computed: true,

volcengine/tos/bucket/service_volcengine_tos_bucket.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,9 @@ func (s *VolcengineTosBucketService) ReadResource(resourceData *schema.ResourceD
112112
if header.Get("X-Tos-Storage-Class") != "" {
113113
data["StorageClass"] = header.Get("X-Tos-Storage-Class")
114114
}
115+
if header.Get("X-Tos-Az-Redundancy") != "" {
116+
data["AzRedundancy"] = header.Get("X-Tos-Az-Redundancy")
117+
}
115118
}
116119

117120
action = "GetBucketAcl"
@@ -129,6 +132,7 @@ func (s *VolcengineTosBucketService) ReadResource(resourceData *schema.ResourceD
129132
if acl, ok = (*resp)[ve.BypassResponse].(map[string]interface{}); ok {
130133
data["PublicAcl"] = acl
131134
data["AccountAcl"] = acl
135+
data["BucketAclDelivered"] = acl["BucketAclDelivered"]
132136
}
133137

134138
action = "GetBucketVersioning"
@@ -251,6 +255,13 @@ func (s *VolcengineTosBucketService) CreateResource(resourceData *schema.Resourc
251255
Type: ve.HeaderParam,
252256
},
253257
},
258+
"az_redundancy": {
259+
ConvertType: ve.ConvertDefault,
260+
TargetField: "x-tos-az-redundancy",
261+
SpecialParam: &ve.SpecialParam{
262+
Type: ve.HeaderParam,
263+
},
264+
},
254265
"project_name": {
255266
ConvertType: ve.ConvertDefault,
256267
TargetField: "x-tos-project-name",
@@ -347,6 +358,10 @@ func (s *VolcengineTosBucketService) CreateResource(resourceData *schema.Resourc
347358
},
348359
},
349360
},
361+
"bucket_acl_delivered": {
362+
ConvertType: ve.ConvertDefault,
363+
TargetField: "BucketAclDelivered",
364+
},
350365
},
351366
BeforeCall: s.beforePutBucketAcl(),
352367
ExecuteCall: s.executePutBucketAcl(),
@@ -425,6 +440,7 @@ func (s *VolcengineTosBucketService) ModifyResource(data *schema.ResourceData, r
425440
var grant = []string{
426441
"public_acl",
427442
"account_acl",
443+
"bucket_acl_delivered",
428444
}
429445
for _, v := range grant {
430446
if data.HasChange(v) {
@@ -464,6 +480,11 @@ func (s *VolcengineTosBucketService) ModifyResource(data *schema.ResourceData, r
464480
},
465481
ForceGet: true,
466482
},
483+
"bucket_acl_delivered": {
484+
ConvertType: ve.ConvertDefault,
485+
TargetField: "BucketAclDelivered",
486+
ForceGet: true,
487+
},
467488
},
468489
BeforeCall: s.beforePutBucketAcl(),
469490
ExecuteCall: s.executePutBucketAcl(),

volcengine/tos/object/resource_volcengine_tos_object.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,10 @@ func ResourceVolcengineTosObject() *schema.Resource {
100100
"public-read-write",
101101
"authenticated-read",
102102
"bucket-owner-read",
103+
"default",
103104
}, false),
104105
Default: "private",
105-
Description: "The public acl control of object.Valid value is private|public-read|public-read-write|authenticated-read|bucket-owner-read.",
106+
Description: "The public acl control of object. Valid value is private|public-read|public-read-write|authenticated-read|bucket-owner-read|default. `default` means to enable the default inheritance bucket ACL function for the object.",
106107
},
107108
"storage_class": {
108109
Type: schema.TypeString,
@@ -124,6 +125,12 @@ func ResourceVolcengineTosObject() *schema.Resource {
124125
Set: schema.HashString,
125126
Description: "The version ids of the object if exist.",
126127
},
128+
"is_default": {
129+
Type: schema.TypeBool,
130+
//Optional: true,
131+
Computed: true,
132+
Description: "Whether to enable the default inheritance bucket ACL function for the object.",
133+
},
127134
"account_acl": {
128135
Type: schema.TypeSet,
129136
Optional: true,

volcengine/tos/object/service_volcengine_tos_object.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ func (s *VolcengineTosObjectService) ReadResource(resourceData *schema.ResourceD
189189
if acl, ok = (*resp)[ve.BypassResponse].(map[string]interface{}); ok {
190190
data["PublicAcl"] = acl
191191
data["AccountAcl"] = acl
192+
data["IsDefault"] = acl["IsDefault"]
192193
}
193194

194195
action = "GetBucketVersioning"
@@ -327,6 +328,7 @@ func (s *VolcengineTosObjectService) ModifyResource(data *schema.ResourceData, r
327328
var grant = []string{
328329
"public_acl",
329330
"account_acl",
331+
//"is_default",
330332
}
331333
for _, v := range grant {
332334
if data.HasChange(v) {
@@ -642,6 +644,11 @@ func (s *VolcengineTosObjectService) createOrUpdateObjectAcl(resourceData *schem
642644
},
643645
},
644646
},
647+
//"is_default": {
648+
// ConvertType: ve.ConvertDefault,
649+
// TargetField: "IsDefault",
650+
// ForceGet: true,
651+
//},
645652
},
646653
BeforeCall: s.beforePutObjectAcl(),
647654
ExecuteCall: s.executePutObjectAcl(),

website/docs/r/tos_bucket.html.markdown

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,12 @@ Provides a resource to manage tos bucket
1111
## Example Usage
1212
```hcl
1313
resource "volcengine_tos_bucket" "default" {
14-
bucket_name = "tf-acc-test-bucket"
15-
# storage_class ="IA"
16-
public_acl = "private"
17-
enable_version = true
14+
bucket_name = "tf-acc-test-bucket-0123-3"
15+
# storage_class = "IA"
16+
public_acl = "private"
17+
az_redundancy = "multi-az"
18+
enable_version = true
19+
bucket_acl_delivered = true
1820
account_acl {
1921
account_id = "1"
2022
permission = "READ"
@@ -34,6 +36,8 @@ resource "volcengine_tos_bucket" "default" {
3436
The following arguments are supported:
3537
* `bucket_name` - (Required, ForceNew) The name of the bucket.
3638
* `account_acl` - (Optional) The user set of grant full control.
39+
* `az_redundancy` - (Optional, ForceNew) The AZ redundancy of the Tos Bucket. Default is `single-az`. Valid values: `single-az`, `multi-az`.
40+
* `bucket_acl_delivered` - (Optional) Whether to enable the default inheritance bucket ACL function for objects. Default is false.
3741
* `enable_version` - (Optional) The flag of enable tos version.
3842
* `project_name` - (Optional) The ProjectName of the Tos Bucket. Default is `default`.
3943
* `public_acl` - (Optional) The public acl control of object.Valid value is private|public-read|public-read-write|authenticated-read|bucket-owner-read.

0 commit comments

Comments
 (0)