From 108c1e14f485044c53498f8a0eac0cd3476aa849 Mon Sep 17 00:00:00 2001 From: mikatong Date: Tue, 12 Jul 2022 19:13:12 +0800 Subject: [PATCH] fix: gaap realserver tags --- tencentcloud/resource_tc_gaap_realserver.go | 29 +++++++++++-------- .../resource_tc_gaap_realserver_test.go | 4 +-- tencentcloud/service_tencentcloud_gaap.go | 8 +---- 3 files changed, 19 insertions(+), 22 deletions(-) diff --git a/tencentcloud/resource_tc_gaap_realserver.go b/tencentcloud/resource_tc_gaap_realserver.go index c4b53b28f0..fdc87cf52b 100644 --- a/tencentcloud/resource_tc_gaap_realserver.go +++ b/tencentcloud/resource_tc_gaap_realserver.go @@ -108,9 +108,6 @@ func resourceTencentCloudGaapRealserverCreate(d *schema.ResourceData, m interfac name := d.Get("name").(string) projectId := d.Get("project_id").(int) - - tags := helper.GetTags(d, "tags") - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} realservers, err := service.DescribeRealservers(ctx, &address, nil, nil, -1) @@ -121,11 +118,20 @@ func resourceTencentCloudGaapRealserverCreate(d *schema.ResourceData, m interfac return fmt.Errorf("the realserver with ip/domain %s already exists", address) } - id, err := service.CreateRealserver(ctx, address, name, projectId, tags) + id, err := service.CreateRealserver(ctx, address, name, projectId) if err != nil { return err } + if tags := helper.GetTags(d, "tags"); len(tags) > 0 { + tagClient := m.(*TencentCloudClient).apiV3Conn + tagService := &TagService{client: tagClient} + resourceName := BuildTagResourceName("gaap", "realServer", tagClient.Region, id) + if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil { + return err + } + } + d.SetId(id) return resourceTencentCloudGaapRealserverRead(d, m) @@ -183,14 +189,13 @@ func resourceTencentCloudGaapRealserverRead(d *schema.ResourceData, m interface{ } _ = d.Set("project_id", realserver.ProjectId) - respTags := make(map[string]string, len(realserver.TagSet)) - for _, tag := range realserver.TagSet { - if tag.TagKey == nil || tag.TagValue == nil { - return errors.New("realserver tag key or value is nil") - } - respTags[*tag.TagKey] = *tag.TagValue + tagClient := m.(*TencentCloudClient).apiV3Conn + tagService := TagService{client: tagClient} + tags, err := tagService.DescribeResourceTags(ctx, "gaap", "realServer", tagClient.Region, id) + if err != nil { + return err } - _ = d.Set("tags", respTags) + _ = d.Set("tags", tags) return nil } @@ -223,7 +228,7 @@ func resourceTencentCloudGaapRealserverUpdate(d *schema.ResourceData, m interfac tagService := TagService{client: m.(*TencentCloudClient).apiV3Conn} region := m.(*TencentCloudClient).apiV3Conn.Region - resourceName := fmt.Sprintf("qcs::gaap:%s:uin/:realserver/%s", region, id) + resourceName := BuildTagResourceName("gaap", "realServer", region, id) if err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags); err != nil { return err diff --git a/tencentcloud/resource_tc_gaap_realserver_test.go b/tencentcloud/resource_tc_gaap_realserver_test.go index aab606bcb3..ceeadb8368 100644 --- a/tencentcloud/resource_tc_gaap_realserver_test.go +++ b/tencentcloud/resource_tc_gaap_realserver_test.go @@ -6,7 +6,6 @@ import ( "fmt" "strconv" "testing" - "time" "github.com/hashicorp/terraform-plugin-sdk/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/terraform" @@ -117,8 +116,7 @@ func TestAccTencentCloudGaapRealserver_updateTags(t *testing.T) { ), }, { - PreConfig: func() { time.Sleep(time.Duration(time.Second * 10)) }, - Config: testAccGaapRealserverUpdateTags, + Config: testAccGaapRealserverUpdateTags, Check: resource.ComposeTestCheckFunc( testAccCheckGaapRealserverExists("tencentcloud_gaap_realserver.foo", id), resource.TestCheckResourceAttr("tencentcloud_gaap_realserver.foo", "tags.test", "test"), diff --git a/tencentcloud/service_tencentcloud_gaap.go b/tencentcloud/service_tencentcloud_gaap.go index 796c9cc279..209a518a58 100644 --- a/tencentcloud/service_tencentcloud_gaap.go +++ b/tencentcloud/service_tencentcloud_gaap.go @@ -45,19 +45,13 @@ type GaapService struct { client *connectivity.TencentCloudClient } -func (me *GaapService) CreateRealserver(ctx context.Context, address, name string, projectId int, tags map[string]string) (id string, err error) { +func (me *GaapService) CreateRealserver(ctx context.Context, address, name string, projectId int) (id string, err error) { logId := getLogId(ctx) request := gaap.NewAddRealServersRequest() request.RealServerName = &name request.RealServerIP = []*string{&address} request.ProjectId = helper.IntUint64(projectId) - for k, v := range tags { - request.TagSet = append(request.TagSet, &gaap.TagPair{ - TagKey: helper.String(k), - TagValue: helper.String(v), - }) - } if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction())