Skip to content

Commit 39d9e06

Browse files
author
yuanhaojin
committed
fix issue: tag not creating in time
1 parent ac7537a commit 39d9e06

15 files changed

+288
-85
lines changed

tencentcloud/data_source_tc_cfs_file_systems_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ resource "tencentcloud_subnet" "subnet" {
4444
}
4545
4646
resource "tencentcloud_cfs_access_group" "foo" {
47-
name = "test_cfs_access_rule"
47+
name = "test_cfs_access_rule"
4848
}
4949
5050
resource "tencentcloud_cfs_file_system" "foo" {

tencentcloud/resource_tc_as_scaling_group.go

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -303,15 +303,6 @@ func resourceTencentCloudAsScalingGroupCreate(d *schema.ResourceData, meta inter
303303
}
304304
}
305305

306-
if tags := helper.GetTags(d, "tags"); len(tags) > 0 {
307-
for k, v := range tags {
308-
request.Tags = append(request.Tags, &as.Tag{
309-
Key: helper.String(k),
310-
Value: helper.String(v),
311-
})
312-
}
313-
}
314-
315306
var id string
316307
if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
317308
ratelimit.Check(request.GetAction())
@@ -357,6 +348,15 @@ func resourceTencentCloudAsScalingGroupCreate(d *schema.ResourceData, meta inter
357348
return err
358349
}
359350

351+
if tags := helper.GetTags(d, "tags"); len(tags) > 0 {
352+
tcClient := meta.(*TencentCloudClient).apiV3Conn
353+
tagService := &TagService{client: tcClient}
354+
resourceName := BuildTagResourceName("as", "auto-scaling-group", tcClient.Region, d.Id())
355+
if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil {
356+
return err
357+
}
358+
}
359+
360360
return resourceTencentCloudAsScalingGroupRead(d, meta)
361361
}
362362

@@ -431,11 +431,17 @@ func resourceTencentCloudAsScalingGroupRead(d *schema.ResourceData, meta interfa
431431
_ = d.Set("forward_balancer_ids", forwardLoadBalancers)
432432
}
433433

434-
tags := make(map[string]string, len(scalingGroup.Tags))
435-
for _, tag := range scalingGroup.Tags {
436-
tags[*tag.Key] = *tag.Value
434+
tcClient := meta.(*TencentCloudClient).apiV3Conn
435+
tagService := &TagService{client: tcClient}
436+
tags, err := tagService.DescribeResourceTags(ctx, "as", "auto-scaling-group", tcClient.Region, d.Id())
437+
if err != nil {
438+
return err
439+
}
440+
441+
if err := d.Set("tags", tags); err != nil {
442+
log.Printf("[CRITAL]%s provider set tags fail, reason:%s\n ", logId, err.Error())
443+
return err
437444
}
438-
_ = d.Set("tags", tags)
439445

440446
return nil
441447
}
@@ -606,14 +612,14 @@ func resourceTencentCloudAsScalingGroupUpdate(d *schema.ResourceData, meta inter
606612
}
607613

608614
if d.HasChange("tags") {
609-
oldTags, newTags := d.GetChange("tags")
610-
replaceTags, deleteTags := diffTags(oldTags.(map[string]interface{}), newTags.(map[string]interface{}))
615+
oldValue, newValue := d.GetChange("tags")
616+
replaceTags, deleteTags := diffTags(oldValue.(map[string]interface{}), newValue.(map[string]interface{}))
611617

612-
resourceName := BuildTagResourceName("as", "auto-scaling-group", region, scalingGroupId)
613-
if err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags); err != nil {
618+
resourceName := BuildTagResourceName("as", "auto-scaling-group", region, d.Id())
619+
err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags)
620+
if err != nil {
614621
return err
615622
}
616-
617623
d.SetPartial("tags")
618624
}
619625

tencentcloud/resource_tc_cbs_storage.go

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -173,18 +173,6 @@ func resourceTencentCloudCbsStorageCreate(d *schema.ResourceData, meta interface
173173
if _, ok := d.GetOk("encrypt"); ok {
174174
request.Encrypt = helper.String("ENCRYPT")
175175
}
176-
if v, ok := d.GetOk("tags"); ok {
177-
tags := v.(map[string]interface{})
178-
request.Tags = make([]*cbs.Tag, 0, len(tags))
179-
for key, value := range tags {
180-
tag := cbs.Tag{
181-
Key: helper.String(key),
182-
Value: helper.String(value.(string)),
183-
}
184-
request.Tags = append(request.Tags, &tag)
185-
}
186-
}
187-
188176
chargeType := d.Get("charge_type").(string)
189177
request.DiskChargeType = &chargeType
190178

@@ -239,6 +227,14 @@ func resourceTencentCloudCbsStorageCreate(d *schema.ResourceData, meta interface
239227
if err != nil {
240228
return err
241229
}
230+
if tags := helper.GetTags(d, "tags"); len(tags) > 0 {
231+
tcClient := meta.(*TencentCloudClient).apiV3Conn
232+
tagService := &TagService{client: tcClient}
233+
resourceName := BuildTagResourceName("cvm", "volume", tcClient.Region, d.Id())
234+
if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil {
235+
return err
236+
}
237+
}
242238

243239
return resourceTencentCloudCbsStorageRead(d, meta)
244240
}
@@ -279,7 +275,6 @@ func resourceTencentCloudCbsStorageRead(d *schema.ResourceData, meta interface{}
279275
_ = d.Set("storage_name", storage.DiskName)
280276
_ = d.Set("project_id", storage.Placement.ProjectId)
281277
_ = d.Set("encrypt", storage.Encrypt)
282-
_ = d.Set("tags", flattenCbsTagsMapping(storage.Tags))
283278
_ = d.Set("storage_status", storage.DiskState)
284279
_ = d.Set("attached", storage.Attached)
285280
_ = d.Set("charge_type", storage.DiskChargeType)
@@ -289,6 +284,18 @@ func resourceTencentCloudCbsStorageRead(d *schema.ResourceData, meta interface{}
289284
_ = d.Set("prepaid_renew_flag", storage.RenewFlag)
290285
}
291286

287+
tcClient := meta.(*TencentCloudClient).apiV3Conn
288+
tagService := &TagService{client: tcClient}
289+
tags, err := tagService.DescribeResourceTags(ctx, "cvm", "volume", tcClient.Region, d.Id())
290+
if err != nil {
291+
return err
292+
}
293+
294+
if err := d.Set("tags", tags); err != nil {
295+
log.Printf("[CRITAL]%s provider set tags fail, reason:%s\n ", logId, err.Error())
296+
return err
297+
}
298+
292299
return nil
293300
}
294301

@@ -417,13 +424,14 @@ func resourceTencentCloudCbsStorageUpdate(d *schema.ResourceData, meta interface
417424
}
418425

419426
if d.HasChange("tags") {
420-
oldInterface, newInterface := d.GetChange("tags")
421-
replaceTags, deleteTags := diffTags(oldInterface.(map[string]interface{}), newInterface.(map[string]interface{}))
422-
tagService := TagService{
423-
client: meta.(*TencentCloudClient).apiV3Conn,
424-
}
427+
428+
oldValue, newValue := d.GetChange("tags")
429+
replaceTags, deleteTags := diffTags(oldValue.(map[string]interface{}), newValue.(map[string]interface{}))
430+
431+
tcClient := meta.(*TencentCloudClient).apiV3Conn
432+
tagService := &TagService{client: tcClient}
425433
region := meta.(*TencentCloudClient).apiV3Conn.Region
426-
resourceName := fmt.Sprintf("qcs::cvm:%s:uin/:volume/%s", region, storageId)
434+
resourceName := BuildTagResourceName("cvm", "volume", region, d.Id())
427435
err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags)
428436
if err != nil {
429437
return err

tencentcloud/resource_tc_ccn.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,12 @@ package tencentcloud
2424
import (
2525
"context"
2626
"fmt"
27+
"log"
2728
"strings"
2829

2930
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
3031
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
32+
"github.com/terraform-providers/terraform-provider-tencentcloud/tencentcloud/internal/helper"
3133
)
3234

3335
func resourceTencentCloudCcn() *schema.Resource {
@@ -77,6 +79,11 @@ func resourceTencentCloudCcn() *schema.Resource {
7779
Computed: true,
7880
Description: "Creation time of resource.",
7981
},
82+
"tags": {
83+
Type: schema.TypeMap,
84+
Optional: true,
85+
Description: "Instance tag.",
86+
},
8087
},
8188
}
8289
}
@@ -103,6 +110,15 @@ func resourceTencentCloudCcnCreate(d *schema.ResourceData, meta interface{}) err
103110
}
104111
d.SetId(info.ccnId)
105112

113+
if tags := helper.GetTags(d, "tags"); len(tags) > 0 {
114+
tcClient := meta.(*TencentCloudClient).apiV3Conn
115+
tagService := &TagService{client: tcClient}
116+
resourceName := BuildTagResourceName("vpc", "ccn", tcClient.Region, d.Id())
117+
if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil {
118+
return err
119+
}
120+
}
121+
106122
return resourceTencentCloudCcnRead(d, meta)
107123
}
108124

@@ -137,6 +153,17 @@ func resourceTencentCloudCcnRead(d *schema.ResourceData, meta interface{}) error
137153
if err != nil {
138154
return err
139155
}
156+
tcClient := meta.(*TencentCloudClient).apiV3Conn
157+
tagService := &TagService{client: tcClient}
158+
tags, err := tagService.DescribeResourceTags(ctx, "vpc", "ccn", tcClient.Region, d.Id())
159+
if err != nil {
160+
return err
161+
}
162+
163+
if err := d.Set("tags", tags); err != nil {
164+
log.Printf("[CRITAL]%s provider set tags fail, reason:%s\n ", logId, err.Error())
165+
return err
166+
}
140167
return nil
141168
}
142169

@@ -173,6 +200,21 @@ func resourceTencentCloudCcnUpdate(d *schema.ResourceData, meta interface{}) err
173200
return err
174201
}
175202
}
203+
if d.HasChange("tags") {
204+
205+
oldValue, newValue := d.GetChange("tags")
206+
replaceTags, deleteTags := diffTags(oldValue.(map[string]interface{}), newValue.(map[string]interface{}))
207+
208+
tcClient := meta.(*TencentCloudClient).apiV3Conn
209+
tagService := &TagService{client: tcClient}
210+
region := meta.(*TencentCloudClient).apiV3Conn.Region
211+
resourceName := BuildTagResourceName("vpc", "ccn", region, d.Id())
212+
err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags)
213+
if err != nil {
214+
return err
215+
}
216+
d.SetPartial("tags")
217+
}
176218
return resourceTencentCloudCcnRead(d, meta)
177219
}
178220

tencentcloud/resource_tc_ccn_test.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,30 @@ func TestAccTencentCloudCcnV3Basic(t *testing.T) {
3535
ImportState: true,
3636
ImportStateVerify: true,
3737
},
38+
// add tag
39+
{
40+
Config: testAccCcn_multiTags("master"),
41+
Check: resource.ComposeAggregateTestCheckFunc(
42+
testAccCheckCcnExists(keyName),
43+
resource.TestCheckResourceAttr(keyName, "tags.role", "master"),
44+
),
45+
},
46+
// update tag
47+
{
48+
Config: testAccCcn_multiTags("master-version2"),
49+
Check: resource.ComposeAggregateTestCheckFunc(
50+
testAccCheckCcnExists(keyName),
51+
resource.TestCheckResourceAttr(keyName, "tags.role", "master-version2"),
52+
),
53+
},
54+
// remove tag
55+
{
56+
Config: testAccCcnConfig,
57+
Check: resource.ComposeAggregateTestCheckFunc(
58+
testAccCheckCcnExists(keyName),
59+
resource.TestCheckNoResourceAttr(keyName, "tags.role"),
60+
),
61+
},
3862
},
3963
})
4064
}
@@ -131,6 +155,20 @@ resource tencentcloud_ccn main {
131155
}
132156
`
133157

158+
func testAccCcn_multiTags(value string) string {
159+
return fmt.Sprintf(
160+
`
161+
resource tencentcloud_ccn main {
162+
name = "ci-temp-test-ccn"
163+
description = "ci-temp-test-ccn-des"
164+
qos = "AG"
165+
tags = {
166+
role = "%s"
167+
}
168+
}
169+
`, value)
170+
}
171+
134172
const testAccCcnConfigUpdate = `
135173
resource tencentcloud_ccn main {
136174
name = "ci-temp-test-ccn-update"

tencentcloud/resource_tc_cfs_file_system.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,11 @@ func resourceTencentCloudCfsFileSystem() *schema.Resource {
9898
Computed: true,
9999
Description: "Create time of the file system.",
100100
},
101+
"tags": {
102+
Type: schema.TypeMap,
103+
Optional: true,
104+
Description: "Instance tags.",
105+
},
101106
},
102107
}
103108
}
@@ -166,6 +171,14 @@ func resourceTencentCloudCfsFileSystemCreate(d *schema.ResourceData, meta interf
166171
if err != nil {
167172
return err
168173
}
174+
if tags := helper.GetTags(d, "tags"); len(tags) > 0 {
175+
tcClient := meta.(*TencentCloudClient).apiV3Conn
176+
tagService := &TagService{client: tcClient}
177+
resourceName := BuildTagResourceName("cfs", "filesystem", tcClient.Region, d.Id())
178+
if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil {
179+
return err
180+
}
181+
}
169182

170183
return resourceTencentCloudCfsFileSystemRead(d, meta)
171184
}
@@ -220,6 +233,18 @@ func resourceTencentCloudCfsFileSystemRead(d *schema.ResourceData, meta interfac
220233
if err != nil {
221234
return err
222235
}
236+
tcClient := meta.(*TencentCloudClient).apiV3Conn
237+
tagService := &TagService{client: tcClient}
238+
tags, err := tagService.DescribeResourceTags(ctx, "cfs", "filesystem", tcClient.Region, d.Id())
239+
if err != nil {
240+
return err
241+
}
242+
243+
if err := d.Set("tags", tags); err != nil {
244+
log.Printf("[CRITAL]%s provider set tags fail, reason:%s\n ", logId, err.Error())
245+
return err
246+
}
247+
223248
if mountTarget != nil {
224249
_ = d.Set("vpc_id", mountTarget.VpcId)
225250
_ = d.Set("subnet_id", mountTarget.SubnetId)
@@ -268,6 +293,22 @@ func resourceTencentCloudCfsFileSystemUpdate(d *schema.ResourceData, meta interf
268293
d.SetPartial("access_group_id")
269294
}
270295

296+
if d.HasChange("tags") {
297+
298+
oldValue, newValue := d.GetChange("tags")
299+
replaceTags, deleteTags := diffTags(oldValue.(map[string]interface{}), newValue.(map[string]interface{}))
300+
301+
tcClient := meta.(*TencentCloudClient).apiV3Conn
302+
tagService := &TagService{client: tcClient}
303+
region := meta.(*TencentCloudClient).apiV3Conn.Region
304+
resourceName := BuildTagResourceName("cfs", "filesystem", region, d.Id())
305+
err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags)
306+
if err != nil {
307+
return err
308+
}
309+
d.SetPartial("tags")
310+
}
311+
271312
d.Partial(false)
272313

273314
return resourceTencentCloudCfsFileSystemRead(d, meta)

0 commit comments

Comments
 (0)