diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f49f34c83..f54d5dd5d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,14 @@ -## 1.56.2 (Unreleased) +## 1.56.3 (Unreleased) +## 1.56.2 (April 19, 2021) + +BUG FIXES: + +* Remove `ResourceInsufficient` from `retryableErrorCode`. + +ENHANCEMENTS: + +* Resource: `tencentcloud_kubernetes_cluster` upgrade `cluster_version` will send old `cluster_extra_args` to tke. + ## 1.56.1 (April 6,2021) BUG FIXES: diff --git a/go.mod b/go.mod index e8ba958867..9d9d1ada58 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,7 @@ require ( github.com/mattn/go-colorable v0.1.6 // indirect github.com/mitchellh/go-homedir v1.1.0 github.com/pkg/errors v0.9.1 - github.com/tencentcloud/tencentcloud-sdk-go v1.0.123 + github.com/tencentcloud/tencentcloud-sdk-go v1.0.137 github.com/yangwenmai/ratelimit v0.0.0-20180104140304-44221c2292e1 github.com/zclconf/go-cty v1.4.2 // indirect golang.org/x/sys v0.0.0-20200523222454-059865788121 // indirect diff --git a/go.sum b/go.sum index 77927091ea..24853c0e0b 100644 --- a/go.sum +++ b/go.sum @@ -443,6 +443,8 @@ github.com/tdakkota/asciicheck v0.0.0-20200416190851-d7f85be797a2 h1:Xr9gkxfOP0K github.com/tdakkota/asciicheck v0.0.0-20200416190851-d7f85be797a2/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM= github.com/tencentcloud/tencentcloud-sdk-go v1.0.123 h1:6yOMrmTuKtW1Y8VtWgN5Jt3jUcWnWtRX0gZfD1LxRcc= github.com/tencentcloud/tencentcloud-sdk-go v1.0.123/go.mod h1:asUz5BPXxgoPGaRgZaVm1iGcUAuHyYUo1nXqKa83cvI= +github.com/tencentcloud/tencentcloud-sdk-go v1.0.137 h1:NEV2Dp7NofwDsyT0OpY5W0fEqsgsbKETD5gWI7/Nn/s= +github.com/tencentcloud/tencentcloud-sdk-go v1.0.137/go.mod h1:asUz5BPXxgoPGaRgZaVm1iGcUAuHyYUo1nXqKa83cvI= github.com/tetafro/godot v0.3.7 h1:+mecr7RKrUKB5UQ1gwqEMn13sDKTyDR8KNIquB9mm+8= github.com/tetafro/godot v0.3.7/go.mod h1:/7NLHhv08H1+8DNj0MElpAACw1ajsCuf3TKNQxA5S+0= github.com/timakin/bodyclose v0.0.0-20190930140734-f7f2e9bca95e h1:RumXZ56IrCj4CL+g1b9OL/oH0QnsF976bC8xQFYUD5Q= diff --git a/tencentcloud/common.go b/tencentcloud/common.go index 1eb6aff0a3..6dd61f485c 100644 --- a/tencentcloud/common.go +++ b/tencentcloud/common.go @@ -50,7 +50,6 @@ var retryableErrorCode = []string{ "TradeUnknownError", "RequestLimitExceeded", "ResourceInUse", - "ResourceInsufficient", "ResourceUnavailable", // cbs "ResourceBusy", diff --git a/tencentcloud/resource_tc_kubernetes_cluster.go b/tencentcloud/resource_tc_kubernetes_cluster.go index 5921e0f8f6..adaaee3f9e 100644 --- a/tencentcloud/resource_tc_kubernetes_cluster.go +++ b/tencentcloud/resource_tc_kubernetes_cluster.go @@ -2124,9 +2124,12 @@ func resourceTencentCloudTkeClusterUpdate(d *schema.ResourceData, meta interface if !isOk { return fmt.Errorf("version %s is unsupported", newVersion) } - + extraArgs, ok := d.GetOk("cluster_extra_args") + if !ok { + extraArgs = nil + } err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { - inErr := tkeService.ModifyClusterVersion(ctx, id, newVersion) + inErr := tkeService.ModifyClusterVersion(ctx, id, newVersion, extraArgs) if inErr != nil { return retryError(inErr) } diff --git a/tencentcloud/service_tencentcloud_tke.go b/tencentcloud/service_tencentcloud_tke.go index dca82909a7..4a031dbc59 100644 --- a/tencentcloud/service_tencentcloud_tke.go +++ b/tencentcloud/service_tencentcloud_tke.go @@ -825,7 +825,7 @@ func (me *TkeService) ModifyClusterAttribute(ctx context.Context, id string, pro return } -func (me *TkeService) ModifyClusterVersion(ctx context.Context, id string, clusterVersion string) (errRet error) { +func (me *TkeService) ModifyClusterVersion(ctx context.Context, id string, clusterVersion string, extraArgs interface{}) (errRet error) { logId := getLogId(ctx) request := tke.NewUpdateClusterVersionRequest() defer func() { @@ -833,6 +833,44 @@ func (me *TkeService) ModifyClusterVersion(ctx context.Context, id string, clust log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", logId, request.GetAction(), errRet.Error()) } }() + + if extraArgs != nil && len(extraArgs.([]interface{})) > 0 { + // the first elem is in use + extraInterface := extraArgs.([]interface{}) + extraMap := extraInterface[0].(map[string]interface{}) + + kas := make([]*string, 0) + if kaArgs, exist := extraMap["kube_apiserver"]; exist { + args := kaArgs.([]interface{}) + for index := range args { + str := args[index].(string) + kas = append(kas, &str) + } + } + kcms := make([]*string, 0) + if kcmArgs, exist := extraMap["kube_controller_manager"]; exist { + args := kcmArgs.([]interface{}) + for index := range args { + str := args[index].(string) + kcms = append(kcms, &str) + } + } + kss := make([]*string, 0) + if ksArgs, exist := extraMap["kube_scheduler"]; exist { + args := ksArgs.([]interface{}) + for index := range args { + str := args[index].(string) + kss = append(kss, &str) + } + } + + request.ExtraArgs = &tke.ClusterExtraArgs{ + KubeAPIServer: kas, + KubeControllerManager: kcms, + KubeScheduler: kss, + } + } + request.ClusterId = &id request.DstVersion = &clusterVersion