Skip to content

Commit dede7e4

Browse files
author
hhermanwang
committed
modify policy json check
1 parent 79bad3d commit dede7e4

File tree

16 files changed

+1012
-7
lines changed

16 files changed

+1012
-7
lines changed

tencentcloud/resource_tc_cos_bucket_policy.go

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ import (
5151

5252
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
5353
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
54+
"github.com/hashicorp/terraform-plugin-sdk/helper/validation"
5455
)
5556

5657
func resourceTencentCloudCosBucketPolicy() *schema.Resource {
@@ -72,8 +73,9 @@ func resourceTencentCloudCosBucketPolicy() *schema.Resource {
7273
Description: "The name of a bucket to be created. Bucket format should be [custom name]-[appid], for example `mycos-1258798060`.",
7374
},
7475
"policy": {
75-
Type: schema.TypeString,
76-
Required: true,
76+
Type: schema.TypeString,
77+
Required: true,
78+
ValidateFunc: validation.StringIsJSON,
7779
DiffSuppressFunc: func(k, olds, news string, d *schema.ResourceData) bool {
7880
var oldJson interface{}
7981
err := json.Unmarshal([]byte(olds), &oldJson)
@@ -102,7 +104,16 @@ func resourceTencentCloudCosBucketPolicyCreate(d *schema.ResourceData, meta inte
102104
bucket := d.Get("bucket").(string)
103105
policy := d.Get("policy").(string)
104106

105-
cosService := CosService{client: meta.(*TencentCloudClient).apiV3Conn}
107+
cosService := CosService{
108+
client: meta.(*TencentCloudClient).apiV3Conn,
109+
}
110+
camService := CamService{
111+
client: meta.(*TencentCloudClient).apiV3Conn,
112+
}
113+
policyErr := camService.PolicyDocumentForceCheck(policy)
114+
if policyErr != nil {
115+
return policyErr
116+
}
106117

107118
err := cosService.PutBucketPolicy(ctx, bucket, policy)
108119
if err != nil {
@@ -160,6 +171,13 @@ func resourceTencentCloudCosBucketPolicyUpdate(d *schema.ResourceData, meta inte
160171

161172
if d.HasChange("policy") {
162173
policy := d.Get("policy").(string)
174+
camService := CamService{
175+
client: meta.(*TencentCloudClient).apiV3Conn,
176+
}
177+
policyErr := camService.PolicyDocumentForceCheck(policy)
178+
if policyErr != nil {
179+
return policyErr
180+
}
163181
err := cosService.PutBucketPolicy(ctx, bucket, policy)
164182
if err != nil {
165183
return err
@@ -205,8 +223,6 @@ func removeSid(v string) (result string, err error) {
205223
var stateMend []interface{}
206224
if v, ok := m["Statement"]; ok {
207225
stateMend = v.([]interface{})
208-
} else if v, ok := m["statement"]; ok {
209-
stateMend = v.([]interface{})
210226
}
211227
for index, v := range stateMend {
212228
mp := v.(map[string]interface{})
@@ -215,8 +231,6 @@ func removeSid(v string) (result string, err error) {
215231
}
216232
if _, ok := m["Statement"]; ok {
217233
m["Statement"] = stateMend
218-
} else if _, ok := m["statement"]; ok {
219-
m["statement"] = stateMend
220234
}
221235
s, err := json.Marshal(m)
222236
return string(s), err

vendor/github.com/hashicorp/terraform-plugin-sdk/helper/structure/expand_json.go

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/hashicorp/terraform-plugin-sdk/helper/structure/flatten_json.go

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/hashicorp/terraform-plugin-sdk/helper/structure/normalize_json.go

Lines changed: 24 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/hashicorp/terraform-plugin-sdk/helper/structure/suppress_json_diff.go

Lines changed: 21 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/hashicorp/terraform-plugin-sdk/helper/validation/float.go

Lines changed: 64 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/hashicorp/terraform-plugin-sdk/helper/validation/int.go

Lines changed: 125 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/hashicorp/terraform-plugin-sdk/helper/validation/list.go

Lines changed: 41 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)