diff --git a/tencentcloud/resource_tc_mysql_instance.go b/tencentcloud/resource_tc_mysql_instance.go index 55137e22b9..4fbae7aa2a 100644 --- a/tencentcloud/resource_tc_mysql_instance.go +++ b/tencentcloud/resource_tc_mysql_instance.go @@ -397,23 +397,6 @@ func mysqlAllInstanceRoleSet(ctx context.Context, requestInter interface{}, d *s requestByUse.SecurityGroup = requestSecurityGroup } } - - if tagsMap, ok := d.Get("tags").(map[string]interface{}); ok { - requestResourceTags := make([]*cdb.TagInfo, 0, len(tagsMap)) - for k, v := range tagsMap { - key := k - value := v.(string) - var tagInfo cdb.TagInfo - tagInfo.TagKey = &key - tagInfo.TagValue = []*string{&value} - requestResourceTags = append(requestResourceTags, &tagInfo) - } - if okByMonth { - requestByMonth.ResourceTags = requestResourceTags - } else { - requestByUse.ResourceTags = requestResourceTags - } - } return nil } @@ -658,6 +641,15 @@ func resourceTencentCloudMysqlInstanceCreate(d *schema.ResourceData, meta interf } } + if tags := helper.GetTags(d, "tags"); len(tags) > 0 { + tcClient := meta.(*TencentCloudClient).apiV3Conn + tagService := &TagService{client: tcClient} + resourceName := BuildTagResourceName("cdb", "instanceId", tcClient.Region, d.Id()) + if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil { + return err + } + } + return resourceTencentCloudMysqlInstanceRead(d, meta) } @@ -733,11 +725,15 @@ func tencentMsyqlBasicInfoRead(ctx context.Context, d *schema.ResourceData, meta } _ = d.Set("gtid", int(isGTIDOpen)) } - tags, err := mysqlService.DescribeTagsOfInstanceId(ctx, d.Id()) + + tcClient := meta.(*TencentCloudClient).apiV3Conn + tagService := &TagService{client: tcClient} + tags, err := tagService.DescribeResourceTags(ctx, "cdb", "instanceId", tcClient.Region, d.Id()) if err != nil { errRet = err return } + if err := d.Set("tags", tags); err != nil { log.Printf("[CRITAL]%s provider set tags fail, reason:%s\n ", logId, err.Error()) return @@ -993,25 +989,14 @@ func mysqlAllInstanceRoleUpdate(ctx context.Context, d *schema.ResourceData, met if d.HasChange("tags") { oldValue, newValue := d.GetChange("tags") + replaceTags, deleteTags := diffTags(oldValue.(map[string]interface{}), newValue.(map[string]interface{})) - oldTags := oldValue.(map[string]interface{}) - newTags := newValue.(map[string]interface{}) - - //set(oldTags-newTags) need delete - var deleteTags = make(map[string]string, len(oldTags)) - for k, v := range oldTags { - if _, has := newTags[k]; !has { - deleteTags[k] = v.(string) - } - } - - //set newTags need modify - var modifytTags = make(map[string]string, len(newTags)) - for k, v := range newTags { - modifytTags[k] = v.(string) - } - - if err := mysqlService.ModifyInstanceTag(ctx, d.Id(), deleteTags, modifytTags); err != nil { + tcClient := meta.(*TencentCloudClient).apiV3Conn + tagService := &TagService{client: tcClient} + region := meta.(*TencentCloudClient).apiV3Conn.Region + resourceName := BuildTagResourceName("cdb", "instanceId", region, d.Id()) + err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags) + if err != nil { return err } d.SetPartial("tags") diff --git a/tencentcloud/resource_tc_mysql_instance_test.go b/tencentcloud/resource_tc_mysql_instance_test.go index ed049ae572..761d3a25e8 100644 --- a/tencentcloud/resource_tc_mysql_instance_test.go +++ b/tencentcloud/resource_tc_mysql_instance_test.go @@ -45,7 +45,6 @@ func TestAccTencentCloudMysqlMasterInstance_basic_and_update(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( testAccCheckMysqlMasterInstanceExists("tencentcloud_mysql_instance.mysql_master"), resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql_master", "instance_name", "testAccMysql"), - resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql_master", "pay_type", "1"), resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql_master", "mem_size", "1000"), resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql_master", "volume_size", "50"), resource.TestCheckResourceAttr("tencentcloud_mysql_instance.mysql_master", "intranet_port", "3360"), diff --git a/tencentcloud/resource_tc_mysql_readonly_instance.go b/tencentcloud/resource_tc_mysql_readonly_instance.go index 9b4bd9e955..22080e255a 100644 --- a/tencentcloud/resource_tc_mysql_readonly_instance.go +++ b/tencentcloud/resource_tc_mysql_readonly_instance.go @@ -34,6 +34,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/helper/schema" cdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdb/v20170320" sdkError "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" + "github.com/terraform-providers/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) func resourceTencentCloudMysqlReadonlyInstance() *schema.Resource { @@ -227,6 +228,16 @@ func resourceTencentCloudMysqlReadonlyInstanceCreate(d *schema.ResourceData, met return err } + if tags := helper.GetTags(d, "tags"); len(tags) > 0 { + tcClient := meta.(*TencentCloudClient).apiV3Conn + tagService := &TagService{client: tcClient} + resourceName := BuildTagResourceName("cdb", "instanceId", tcClient.Region, d.Id()) + log.Printf("[DEBUG]Mysql instance create, resourceName:%s\n", resourceName) + if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil { + return err + } + } + return resourceTencentCloudMysqlReadonlyInstanceRead(d, meta) }