Skip to content

Commit 4cb2203

Browse files
authored
Merge pull request #472 from piggona/yuanhaojin
fix issue: tag not creating in time
2 parents 2eca06d + 4d79c0e commit 4cb2203

17 files changed

+281
-86
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ ENHANCEMENTS:
88

99
* Data Source: `tencentcloud_images` supports list of snapshots.
1010
* Resource: `tencentcloud_kubernetes_cluster_attachment` add new argument `worker_config` to support config with existing instances.
11+
* Resource: `tencentcloud_ccn` add new argument `tags` to support tags settings..
12+
* Resource `tencentcloud_cfs_file_system` add new argument `tags` to support tags settings.
1113

1214
## 1.38.2 (July 03, 2020)
1315

tencentcloud/common.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ func CheckNil(object interface{}, fields map[string]string) (nilFields []string)
191191
return
192192
}
193193

194-
// BuildTagResourceName builds the Tencent Clould specific name of a resource description.
194+
// BuildTagResourceName builds the Tencent Cloud specific name of a resource description.
195195
// The format is `qcs:project_id:service_type:region:account:resource`.
196196
// For more information, go to https://cloud.tencent.com/document/product/598/10606.
197197
func BuildTagResourceName(serviceType, resourceType, region, id string) string {

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: 20 additions & 17 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,10 +431,13 @@ 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
437439
}
440+
438441
_ = d.Set("tags", tags)
439442

440443
return nil
@@ -606,14 +609,14 @@ func resourceTencentCloudAsScalingGroupUpdate(d *schema.ResourceData, meta inter
606609
}
607610

608611
if d.HasChange("tags") {
609-
oldTags, newTags := d.GetChange("tags")
610-
replaceTags, deleteTags := diffTags(oldTags.(map[string]interface{}), newTags.(map[string]interface{}))
612+
oldValue, newValue := d.GetChange("tags")
613+
replaceTags, deleteTags := diffTags(oldValue.(map[string]interface{}), newValue.(map[string]interface{}))
611614

612-
resourceName := BuildTagResourceName("as", "auto-scaling-group", region, scalingGroupId)
613-
if err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags); err != nil {
615+
resourceName := BuildTagResourceName("as", "auto-scaling-group", region, d.Id())
616+
err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags)
617+
if err != nil {
614618
return err
615619
}
616-
617620
d.SetPartial("tags")
618621
}
619622

tencentcloud/resource_tc_cbs_storage.go

Lines changed: 24 additions & 20 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,15 @@ 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+
_ = d.Set("tags", tags)
295+
292296
return nil
293297
}
294298

@@ -417,13 +421,13 @@ func resourceTencentCloudCbsStorageUpdate(d *schema.ResourceData, meta interface
417421
}
418422

419423
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-
}
425-
region := meta.(*TencentCloudClient).apiV3Conn.Region
426-
resourceName := fmt.Sprintf("qcs::cvm:%s:uin/:volume/%s", region, storageId)
424+
425+
oldValue, newValue := d.GetChange("tags")
426+
replaceTags, deleteTags := diffTags(oldValue.(map[string]interface{}), newValue.(map[string]interface{}))
427+
428+
tcClient := meta.(*TencentCloudClient).apiV3Conn
429+
tagService := &TagService{client: tcClient}
430+
resourceName := BuildTagResourceName("cvm", "volume", tcClient.Region, d.Id())
427431
err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags)
428432
if err != nil {
429433
return err

tencentcloud/resource_tc_ccn.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828

2929
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
3030
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
31+
"github.com/terraform-providers/terraform-provider-tencentcloud/tencentcloud/internal/helper"
3132
)
3233

3334
func resourceTencentCloudCcn() *schema.Resource {
@@ -77,6 +78,11 @@ func resourceTencentCloudCcn() *schema.Resource {
7778
Computed: true,
7879
Description: "Creation time of resource.",
7980
},
81+
"tags": {
82+
Type: schema.TypeMap,
83+
Optional: true,
84+
Description: "Instance tag.",
85+
},
8086
},
8187
}
8288
}
@@ -103,6 +109,15 @@ func resourceTencentCloudCcnCreate(d *schema.ResourceData, meta interface{}) err
103109
}
104110
d.SetId(info.ccnId)
105111

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

@@ -137,6 +152,14 @@ func resourceTencentCloudCcnRead(d *schema.ResourceData, meta interface{}) error
137152
if err != nil {
138153
return err
139154
}
155+
tcClient := meta.(*TencentCloudClient).apiV3Conn
156+
tagService := &TagService{client: tcClient}
157+
tags, err := tagService.DescribeResourceTags(ctx, "vpc", "ccn", tcClient.Region, d.Id())
158+
if err != nil {
159+
return err
160+
}
161+
162+
_ = d.Set("tags", tags)
140163
return nil
141164
}
142165

@@ -152,9 +175,11 @@ func resourceTencentCloudCcnUpdate(d *schema.ResourceData, meta interface{}) err
152175
name = ""
153176
description = ""
154177
change = false
178+
changeList = []string{}
155179
)
156180
if d.HasChange("name") {
157181
name = d.Get("name").(string)
182+
changeList = append(changeList, "name")
158183
change = true
159184
}
160185

@@ -165,14 +190,35 @@ func resourceTencentCloudCcnUpdate(d *schema.ResourceData, meta interface{}) err
165190
if description == "" {
166191
return fmt.Errorf("can not set description='' ")
167192
}
193+
changeList = append(changeList, "description")
168194
change = true
169195
}
170196

197+
d.Partial(true)
171198
if change {
172199
if err := service.ModifyCcnAttribute(ctx, d.Id(), name, description); err != nil {
173200
return err
174201
}
202+
for _, val := range changeList {
203+
d.SetPartial(val)
204+
}
205+
}
206+
207+
if d.HasChange("tags") {
208+
209+
oldValue, newValue := d.GetChange("tags")
210+
replaceTags, deleteTags := diffTags(oldValue.(map[string]interface{}), newValue.(map[string]interface{}))
211+
212+
tcClient := meta.(*TencentCloudClient).apiV3Conn
213+
tagService := &TagService{client: tcClient}
214+
resourceName := BuildTagResourceName("vpc", "ccn", tcClient.Region, d.Id())
215+
err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags)
216+
if err != nil {
217+
return err
218+
}
219+
d.SetPartial("tags")
175220
}
221+
d.Partial(false)
176222
return resourceTencentCloudCcnRead(d, meta)
177223
}
178224

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: 37 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,15 @@ 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+
_ = d.Set("tags", tags)
244+
223245
if mountTarget != nil {
224246
_ = d.Set("vpc_id", mountTarget.VpcId)
225247
_ = d.Set("subnet_id", mountTarget.SubnetId)
@@ -268,6 +290,21 @@ func resourceTencentCloudCfsFileSystemUpdate(d *schema.ResourceData, meta interf
268290
d.SetPartial("access_group_id")
269291
}
270292

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

273310
return resourceTencentCloudCfsFileSystemRead(d, meta)

0 commit comments

Comments
 (0)