@@ -13,13 +13,13 @@ import (
13
13
14
14
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
15
15
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
16
+ tchttp "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http"
16
17
cvm "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm/v20170312"
17
18
18
19
tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
19
20
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
20
21
svcas "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/as"
21
22
svccvm "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/cvm"
22
- svctag "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tag"
23
23
24
24
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
25
25
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
@@ -1172,10 +1172,7 @@ func resourceTencentCloudKubernetesClusterUpdateOnStart(ctx context.Context) err
1172
1172
d := tccommon .ResourceDataFromContext (ctx )
1173
1173
meta := tccommon .ProviderMetaFromContext (ctx )
1174
1174
1175
- client := meta .(tccommon.ProviderMeta ).GetAPIV3Conn ()
1176
- service := svctag .NewTagService (client )
1177
1175
tkeService := TkeService {client : meta .(tccommon.ProviderMeta ).GetAPIV3Conn ()}
1178
- region := client .Region
1179
1176
1180
1177
d .Partial (true )
1181
1178
id := d .Id ()
@@ -1185,11 +1182,25 @@ func resourceTencentCloudKubernetesClusterUpdateOnStart(ctx context.Context) err
1185
1182
}
1186
1183
1187
1184
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
+ }
1190
1188
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 {
1193
1204
return err
1194
1205
}
1195
1206
@@ -1640,6 +1651,39 @@ func ResourceTkeGetAddonsDiffs(o, n []interface{}) (adds, removes, changes []int
1640
1651
return
1641
1652
}
1642
1653
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
+
1643
1687
// upgradeClusterInstances upgrade instances, upgrade type try seq:major, hot.
1644
1688
func upgradeClusterInstances (tkeService TkeService , ctx context.Context , id string ) error {
1645
1689
// get all available instances for upgrade
0 commit comments