@@ -13,13 +13,13 @@ import (
1313
1414 "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
1515 "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
16+ tchttp "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http"
1617 cvm "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm/v20170312"
1718
1819 tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
1920 "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
2021 svcas "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/as"
2122 svccvm "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/cvm"
22- svctag "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tag"
2323
2424 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
2525 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
@@ -1172,10 +1172,7 @@ func resourceTencentCloudKubernetesClusterUpdateOnStart(ctx context.Context) err
11721172 d := tccommon .ResourceDataFromContext (ctx )
11731173 meta := tccommon .ProviderMetaFromContext (ctx )
11741174
1175- client := meta .(tccommon.ProviderMeta ).GetAPIV3Conn ()
1176- service := svctag .NewTagService (client )
11771175 tkeService := TkeService {client : meta .(tccommon.ProviderMeta ).GetAPIV3Conn ()}
1178- region := client .Region
11791176
11801177 d .Partial (true )
11811178 id := d .Id ()
@@ -1185,11 +1182,25 @@ func resourceTencentCloudKubernetesClusterUpdateOnStart(ctx context.Context) err
11851182 }
11861183
11871184 if d .HasChange ("tags" ) {
1188- oldTags , newTags := d .GetChange ("tags" )
1189- replaceTags , deleteTags := svctag .DiffTags (oldTags .(map [string ]interface {}), newTags .(map [string ]interface {}))
1185+ if err := modifyClusterTags (ctx ); err != nil {
1186+ return err
1187+ }
11901188
1191- resourceName := tccommon .BuildTagResourceName ("ccs" , "cluster" , region , id )
1192- if err := service .ModifyTags (ctx , resourceName , replaceTags , deleteTags ); err != nil {
1189+ // wait for tags ok
1190+ err := resource .Retry (5 * tccommon .ReadRetryTimeout , func () * resource.RetryError {
1191+ request := tke .NewDescribeBatchModifyTagsStatusRequest ()
1192+ request .ClusterId = & id
1193+ resp , errRet := meta .(tccommon.ProviderMeta ).GetAPIV3Conn ().UseTkeClient ().DescribeBatchModifyTagsStatus (request )
1194+ if errRet != nil {
1195+ return tccommon .RetryError (errRet , tccommon .InternalError )
1196+ }
1197+ // TaskFailed = "failed"; TaskRunning = "running"; TaskDone = "done"
1198+ if resp != nil && * resp .Response .Status == "done" {
1199+ return nil
1200+ }
1201+ return resource .RetryableError (fmt .Errorf ("modify tags status is %s, retry..." , * resp .Response .Status ))
1202+ })
1203+ if err != nil {
11931204 return err
11941205 }
11951206
@@ -1640,6 +1651,39 @@ func ResourceTkeGetAddonsDiffs(o, n []interface{}) (adds, removes, changes []int
16401651 return
16411652}
16421653
1654+ func modifyClusterTags (ctx context.Context ) error {
1655+ d := tccommon .ResourceDataFromContext (ctx )
1656+ meta := tccommon .ProviderMetaFromContext (ctx )
1657+ logId := tccommon .GetLogId (ctx )
1658+
1659+ id := d .Id ()
1660+ tags := GetTkeTags (d , "tags" )
1661+ body := map [string ]interface {}{
1662+ "ClusterId" : id ,
1663+ "SyncSubresource" : false ,
1664+ "Tags" : tags ,
1665+ }
1666+
1667+ client := meta .(tccommon.ProviderMeta ).GetAPIV3Conn ().UseOmitNilClient ("tke" )
1668+ request := tchttp .NewCommonRequest ("tke" , "2018-05-25" , "ModifyClusterTags" )
1669+ err := request .SetActionParameters (body )
1670+ if err != nil {
1671+ return err
1672+ }
1673+
1674+ response := tchttp .NewCommonResponse ()
1675+ err = client .Send (request , response )
1676+ if err != nil {
1677+ fmt .Printf ("Modify Cluster Tags failed: %v \n " , err )
1678+ return err
1679+ }
1680+ reqBody , _ := request .MarshalJSON ()
1681+ respBody := response .GetBody ()
1682+
1683+ log .Printf ("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n " , logId , request .GetAction (), string (reqBody ), string (respBody ))
1684+ return nil
1685+ }
1686+
16431687// upgradeClusterInstances upgrade instances, upgrade type try seq:major, hot.
16441688func upgradeClusterInstances (tkeService TkeService , ctx context.Context , id string ) error {
16451689 // get all available instances for upgrade
0 commit comments