diff --git a/.changelog/2947.txt b/.changelog/2947.txt new file mode 100644 index 0000000000..6848d353ee --- /dev/null +++ b/.changelog/2947.txt @@ -0,0 +1,7 @@ +```release-note:enhancement +resource/tencentcloud_kubernetes_addon: support `update_strategy` +``` + +```release-note:enhancement +resource/tencentcloud_kubernetes_addon_config: support `update_strategy` +``` \ No newline at end of file diff --git a/go.mod b/go.mod index 8978cb85c1..e632170c2b 100644 --- a/go.mod +++ b/go.mod @@ -46,7 +46,7 @@ require ( github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.1034 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.1033 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.970 - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1034 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1038 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.1014 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.762 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.692 @@ -91,7 +91,7 @@ require ( github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tdmq v1.0.955 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tem v1.0.578 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/teo v1.0.1013 - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke v1.0.1031 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke v1.0.1038 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/trocket v1.0.947 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tse v1.0.857 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tsf v1.0.674 diff --git a/go.sum b/go.sum index c40fd10da7..bee0ecdb17 100644 --- a/go.sum +++ b/go.sum @@ -926,6 +926,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1031/go.mod github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1033/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1034 h1:T7ewuO2DD+5R2LRpD2kTRy25aCkVDVdYkmmyUS63i08= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1034/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1038 h1:tB3DLzyQXavvGTI+JUvEcuYh0EtTn1rvh9W6xxFHL38= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1038/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993 h1:WlPgXldQCxt7qi5Xrc6j6zTrsXWzN5BcOGs7Irq7fwQ= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993/go.mod h1:Z9U8zNtyuyKhjS0698wqsrG/kLx1TQ5CEixXBwVe7xY= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/csip v1.0.860 h1:F3esKBIT3HW9+7Gt8cVgf8X06VdGIczpgLBUECzSEzU= @@ -1030,6 +1032,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/thpc v1.0.998 h1:f4/n0d github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/thpc v1.0.998/go.mod h1:fyi/HUwCwVe2NCCCjz8k/C5GwPu3QazCZO+OBJ3MhLk= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke v1.0.1031 h1:0Ew48YnVO+Sd2U3VrWgV36uRySTF7uOOFJH0Hd4ufhg= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke v1.0.1031/go.mod h1:KcKTYEXZil0FciUtQ75svPL4hZpLYVnemAeW27N3OKY= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke v1.0.1038 h1:tmK0aSj8zJrTx7aubJR8DBvtySj1uO8UdFANUDFtbmo= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke v1.0.1038/go.mod h1:tWS3IluLYbNDx1kz8bBFEP6H1bxvuBPPGQ2WogD2rXI= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/trocket v1.0.947 h1:iZfuU8S86kfqFsAVT/LUApP8L5cpT90hl2wSKiUDVvw= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/trocket v1.0.947/go.mod h1:eAgJ+XUEhffMq79zjpgHoR3PBVcciSg+LuPDC8hLWsE= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tse v1.0.857 h1:TkJnvSeRSXsRCwOwcwXSvruSK9s/kw8LC3FLeccw+A0= diff --git a/tencentcloud/services/tke/resource_tc_kubernetes_addon.go b/tencentcloud/services/tke/resource_tc_kubernetes_addon.go index 61c3336536..cba73b400b 100644 --- a/tencentcloud/services/tke/resource_tc_kubernetes_addon.go +++ b/tencentcloud/services/tke/resource_tc_kubernetes_addon.go @@ -42,9 +42,16 @@ func ResourceTencentCloudKubernetesAddon() *schema.Resource { "addon_version": { Type: schema.TypeString, Optional: true, + Computed: true, Description: "Version of addon.", }, + "update_strategy": { + Type: schema.TypeString, + Optional: true, + Description: "The update strategy of Addon parameters. Valid values are: `replace` and `merge`. The default value is merge, which is compatible with the old version API. `replace`: Use the new RawValues to completely replace the original RawValues of Addon. `merge`: Add or update the corresponding parameters in the original RawValues of Addon according to the new RawValues. Only valid in update addon process.", + }, + "raw_values": { Type: schema.TypeString, Optional: true, @@ -160,12 +167,13 @@ func resourceTencentCloudKubernetesAddonRead(d *schema.ResourceData, meta interf _ = d.Set("addon_version", respData.AddonVersion) } - if respData.RawValues != nil { - rawValues := respData.RawValues - base64DecodeValues, _ := base64.StdEncoding.DecodeString(*rawValues) - jsonValues := string(base64DecodeValues) - _ = d.Set("raw_values", jsonValues) - } + // describe cannot return the correct raw_values when included the update_strategy + // if respData.RawValues != nil { + // rawValues := respData.RawValues + // base64DecodeValues, _ := base64.StdEncoding.DecodeString(*rawValues) + // jsonValues := string(base64DecodeValues) + // _ = d.Set("raw_values", jsonValues) + // } if respData.Phase != nil { _ = d.Set("phase", respData.Phase) @@ -195,7 +203,7 @@ func resourceTencentCloudKubernetesAddonUpdate(d *schema.ResourceData, meta inte addonName := idSplit[1] needChange := false - mutableArgs := []string{"addon_version", "raw_values"} + mutableArgs := []string{"addon_version", "raw_values", "update_strategy"} for _, v := range mutableArgs { if d.HasChange(v) { needChange = true @@ -219,6 +227,10 @@ func resourceTencentCloudKubernetesAddonUpdate(d *schema.ResourceData, meta inte request.RawValues = &rawValues } + if v, ok := d.GetOk("update_strategy"); ok { + request.UpdateStrategy = helper.String(v.(string)) + } + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseTkeClient().UpdateAddonWithContext(ctx, request) if e != nil { diff --git a/tencentcloud/services/tke/resource_tc_kubernetes_addon.md b/tencentcloud/services/tke/resource_tc_kubernetes_addon.md index 8450fb0180..d5c00a4015 100644 --- a/tencentcloud/services/tke/resource_tc_kubernetes_addon.md +++ b/tencentcloud/services/tke/resource_tc_kubernetes_addon.md @@ -23,7 +23,7 @@ resource "tencentcloud_kubernetes_addon" "kubernetes_addon" { cluster_id = tencentcloud_kubernetes_cluster.example.id addon_name = "cos" addon_version = "2018-05-25" - raw_values = "e30=" + raw_values = "{\"tolerations\":[{\"key\":\"test\",\"value\":\"100\",\"operator\":\"Equal\"}]}" } ``` diff --git a/tencentcloud/services/tke/resource_tc_kubernetes_addon_config.go b/tencentcloud/services/tke/resource_tc_kubernetes_addon_config.go index a9c1b1da37..b9a7aecf98 100644 --- a/tencentcloud/services/tke/resource_tc_kubernetes_addon_config.go +++ b/tencentcloud/services/tke/resource_tc_kubernetes_addon_config.go @@ -42,6 +42,12 @@ func ResourceTencentCloudKubernetesAddonConfig() *schema.Resource { Description: "Version of addon.", }, + "update_strategy": { + Type: schema.TypeString, + Optional: true, + Description: "The update strategy of Addon parameters. Valid values are: `replace` and `merge`. The default value is merge, which is compatible with the old version API. `replace`: Use the new RawValues to completely replace the original RawValues of Addon. `merge`: Add or update the corresponding parameters in the original RawValues of Addon according to the new RawValues. Only valid in update addon process.", + }, + "raw_values": { Type: schema.TypeString, Optional: true, @@ -110,12 +116,13 @@ func resourceTencentCloudKubernetesAddonConfigRead(d *schema.ResourceData, meta _ = d.Set("addon_version", respData.AddonVersion) } - if respData.RawValues != nil { - rawValues := respData.RawValues - base64DecodeValues, _ := base64.StdEncoding.DecodeString(*rawValues) - jsonValues := string(base64DecodeValues) - _ = d.Set("raw_values", jsonValues) - } + // describe cannot return the correct raw_values when included the update_strategy + // if respData.RawValues != nil { + // rawValues := respData.RawValues + // base64DecodeValues, _ := base64.StdEncoding.DecodeString(*rawValues) + // jsonValues := string(base64DecodeValues) + // _ = d.Set("raw_values", jsonValues) + // } if respData.Phase != nil { _ = d.Set("phase", respData.Phase) @@ -145,7 +152,7 @@ func resourceTencentCloudKubernetesAddonConfigUpdate(d *schema.ResourceData, met addonName := idSplit[1] needChange := false - mutableArgs := []string{"addon_version", "raw_values"} + mutableArgs := []string{"addon_version", "raw_values", "update_strategy"} for _, v := range mutableArgs { if d.HasChange(v) { needChange = true @@ -169,6 +176,10 @@ func resourceTencentCloudKubernetesAddonConfigUpdate(d *schema.ResourceData, met request.RawValues = &rawValues } + if v, ok := d.GetOk("update_strategy"); ok { + request.UpdateStrategy = helper.String(v.(string)) + } + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseTkeClient().UpdateAddonWithContext(ctx, request) if e != nil { diff --git a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http/request.go b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http/request.go index 70e82f7099..cddb6f6af5 100644 --- a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http/request.go +++ b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http/request.go @@ -265,7 +265,7 @@ func CompleteCommonParams(request Request, region string, requestClient string) params["Action"] = request.GetAction() params["Timestamp"] = strconv.FormatInt(time.Now().Unix(), 10) params["Nonce"] = strconv.Itoa(rand.Int()) - params["RequestClient"] = "SDK_GO_1.0.1034" + params["RequestClient"] = "SDK_GO_1.0.1038" if requestClient != "" { params["RequestClient"] += ": " + requestClient } diff --git a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20180525/models.go b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20180525/models.go index 32945153f9..a12a24319d 100644 --- a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20180525/models.go +++ b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20180525/models.go @@ -5027,10 +5027,10 @@ type DeleteClusterVirtualNodePoolRequestParams struct { // 集群ID ClusterId *string `json:"ClusterId,omitnil,omitempty" name:"ClusterId"` - // 虚拟节点池ID列表 + // 超级节点池ID列表 NodePoolIds []*string `json:"NodePoolIds,omitnil,omitempty" name:"NodePoolIds"` - // 是否强制删除,在虚拟节点上有pod的情况下,如果选择非强制删除,则删除会失败 + // 是否强制删除,在超级节点上有pod的情况下,如果选择非强制删除,则删除会失败 Force *bool `json:"Force,omitnil,omitempty" name:"Force"` } @@ -5040,10 +5040,10 @@ type DeleteClusterVirtualNodePoolRequest struct { // 集群ID ClusterId *string `json:"ClusterId,omitnil,omitempty" name:"ClusterId"` - // 虚拟节点池ID列表 + // 超级节点池ID列表 NodePoolIds []*string `json:"NodePoolIds,omitnil,omitempty" name:"NodePoolIds"` - // 是否强制删除,在虚拟节点上有pod的情况下,如果选择非强制删除,则删除会失败 + // 是否强制删除,在超级节点上有pod的情况下,如果选择非强制删除,则删除会失败 Force *bool `json:"Force,omitnil,omitempty" name:"Force"` } @@ -20365,11 +20365,14 @@ type UpdateAddonRequestParams struct { // addon名称 AddonName *string `json:"AddonName,omitnil,omitempty" name:"AddonName"` - // addon版本(不传默认不更新) + // addon版本(不传默认不更新,不传AddonVersion时RawValues必传) AddonVersion *string `json:"AddonVersion,omitnil,omitempty" name:"AddonVersion"` - // addon的参数,是一个json格式的base64转码后的字符串(addon参数由DescribeAddonValues获取) + // addon的参数,是一个json格式的base64转码后的字符串(addon参数由DescribeAddonValues获取,不传RawValues时AddonVersion必传)) RawValues *string `json:"RawValues,omitnil,omitempty" name:"RawValues"` + + // addon参数的更新策略,支持replace和merge两种策略,默认值为merge,兼容旧版本API。replace:使用新RawValues全量替换addon原RawValues,merge:根据新RawValues新增或更新addon原RawValues中对应参数。 + UpdateStrategy *string `json:"UpdateStrategy,omitnil,omitempty" name:"UpdateStrategy"` } type UpdateAddonRequest struct { @@ -20381,11 +20384,14 @@ type UpdateAddonRequest struct { // addon名称 AddonName *string `json:"AddonName,omitnil,omitempty" name:"AddonName"` - // addon版本(不传默认不更新) + // addon版本(不传默认不更新,不传AddonVersion时RawValues必传) AddonVersion *string `json:"AddonVersion,omitnil,omitempty" name:"AddonVersion"` - // addon的参数,是一个json格式的base64转码后的字符串(addon参数由DescribeAddonValues获取) + // addon的参数,是一个json格式的base64转码后的字符串(addon参数由DescribeAddonValues获取,不传RawValues时AddonVersion必传)) RawValues *string `json:"RawValues,omitnil,omitempty" name:"RawValues"` + + // addon参数的更新策略,支持replace和merge两种策略,默认值为merge,兼容旧版本API。replace:使用新RawValues全量替换addon原RawValues,merge:根据新RawValues新增或更新addon原RawValues中对应参数。 + UpdateStrategy *string `json:"UpdateStrategy,omitnil,omitempty" name:"UpdateStrategy"` } func (r *UpdateAddonRequest) ToJsonString() string { @@ -20404,6 +20410,7 @@ func (r *UpdateAddonRequest) FromJsonString(s string) error { delete(f, "AddonName") delete(f, "AddonVersion") delete(f, "RawValues") + delete(f, "UpdateStrategy") if len(f) > 0 { return tcerr.NewTencentCloudSDKError("ClientError.BuildRequestError", "UpdateAddonRequest has unknown keys!", "") } diff --git a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20220501/models.go b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20220501/models.go index 1bb040b5c8..91fe96beca 100644 --- a/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20220501/models.go +++ b/vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20220501/models.go @@ -180,6 +180,9 @@ type CreateNativeNodePoolParam struct { // 节点池ssh公钥id数组 KeyIds []*string `json:"KeyIds,omitnil,omitempty" name:"KeyIds"` + + // 节点池类型 + MachineType *string `json:"MachineType,omitnil,omitempty" name:"MachineType"` } // Predefined struct for user @@ -1551,6 +1554,10 @@ type NativeNodePoolInfo struct { // 原生节点池数据盘 // 注意:此字段可能返回 null,表示取不到有效值。 DataDisks []*DataDisk `json:"DataDisks,omitnil,omitempty" name:"DataDisks"` + + // 原生节点机型 Native, NativeCVM + // 注意:此字段可能返回 null,表示取不到有效值。 + MachineType *string `json:"MachineType,omitnil,omitempty" name:"MachineType"` } type NodeCountSummary struct { diff --git a/vendor/modules.txt b/vendor/modules.txt index a67aa7ae02..7c6271ac72 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1163,7 +1163,7 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit/v20190319 # github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.970 ## explicit; go 1.14 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls/v20201016 -# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1034 +# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1038 ## explicit; go 1.11 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors @@ -1324,7 +1324,7 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/teo/v20220901 # github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/thpc v1.0.998 ## explicit; go 1.14 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/thpc/v20230321 -# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke v1.0.1031 +# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke v1.0.1038 ## explicit; go 1.14 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20180525 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20220501 diff --git a/website/docs/r/kubernetes_addon.html.markdown b/website/docs/r/kubernetes_addon.html.markdown index 676b32c7ba..5852e82012 100644 --- a/website/docs/r/kubernetes_addon.html.markdown +++ b/website/docs/r/kubernetes_addon.html.markdown @@ -33,7 +33,7 @@ resource "tencentcloud_kubernetes_addon" "kubernetes_addon" { cluster_id = tencentcloud_kubernetes_cluster.example.id addon_name = "cos" addon_version = "2018-05-25" - raw_values = "e30=" + raw_values = "{\"tolerations\":[{\"key\":\"test\",\"value\":\"100\",\"operator\":\"Equal\"}]}" } ``` @@ -45,6 +45,7 @@ The following arguments are supported: * `cluster_id` - (Required, String, ForceNew) ID of cluster. * `addon_version` - (Optional, String) Version of addon. * `raw_values` - (Optional, String) Params of addon, base64 encoded json format. +* `update_strategy` - (Optional, String) The update strategy of Addon parameters. Valid values are: `replace` and `merge`. The default value is merge, which is compatible with the old version API. `replace`: Use the new RawValues to completely replace the original RawValues of Addon. `merge`: Add or update the corresponding parameters in the original RawValues of Addon according to the new RawValues. Only valid in update addon process. ## Attributes Reference diff --git a/website/docs/r/kubernetes_addon_config.html.markdown b/website/docs/r/kubernetes_addon_config.html.markdown index deea72effc..be91cf888c 100644 --- a/website/docs/r/kubernetes_addon_config.html.markdown +++ b/website/docs/r/kubernetes_addon_config.html.markdown @@ -32,6 +32,7 @@ The following arguments are supported: * `cluster_id` - (Required, String, ForceNew) ID of cluster. * `addon_version` - (Optional, String) Version of addon. * `raw_values` - (Optional, String) Params of addon, base64 encoded json format. +* `update_strategy` - (Optional, String) The update strategy of Addon parameters. Valid values are: `replace` and `merge`. The default value is merge, which is compatible with the old version API. `replace`: Use the new RawValues to completely replace the original RawValues of Addon. `merge`: Add or update the corresponding parameters in the original RawValues of Addon according to the new RawValues. Only valid in update addon process. ## Attributes Reference