diff --git a/.changelog/3559.txt b/.changelog/3559.txt new file mode 100644 index 0000000000..45ea5a9b6d --- /dev/null +++ b/.changelog/3559.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/tencentcloud_kubernetes_health_check_policy: update params property +``` diff --git a/tencentcloud/services/tke/resource_tc_kubernetes_health_check_policy.go b/tencentcloud/services/tke/resource_tc_kubernetes_health_check_policy.go index c34f39ac03..e64f652356 100644 --- a/tencentcloud/services/tke/resource_tc_kubernetes_health_check_policy.go +++ b/tencentcloud/services/tke/resource_tc_kubernetes_health_check_policy.go @@ -1,4 +1,3 @@ -// Code generated by iacg; DO NOT EDIT. package tke import ( @@ -28,12 +27,14 @@ func ResourceTencentCloudKubernetesHealthCheckPolicy() *schema.Resource { "cluster_id": { Type: schema.TypeString, Required: true, + ForceNew: true, Description: "ID of the cluster.", }, "name": { Type: schema.TypeString, Required: true, + ForceNew: true, Description: "Health Check Policy Name.", }, @@ -69,34 +70,25 @@ func resourceTencentCloudKubernetesHealthCheckPolicyCreate(d *schema.ResourceDat defer tccommon.LogElapsed("resource.tencentcloud_kubernetes_health_check_policy.create")() defer tccommon.InconsistentCheck(d, meta)() - logId := tccommon.GetLogId(tccommon.ContextNil) - - ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) - var ( + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + request = tkev20220501.NewCreateHealthCheckPolicyRequest() + response = tkev20220501.NewCreateHealthCheckPolicyResponse() clusterId string name string ) - var ( - request = tkev20220501.NewCreateHealthCheckPolicyRequest() - response = tkev20220501.NewCreateHealthCheckPolicyResponse() - ) - - if v, ok := d.GetOk("cluster_id"); ok { - clusterId = v.(string) - } - if v, ok := d.GetOk("name"); ok { - name = v.(string) - } if v, ok := d.GetOk("cluster_id"); ok { request.ClusterId = helper.String(v.(string)) + clusterId = v.(string) } healthCheckPolicy := tkev20220501.HealthCheckPolicy{} if v, ok := d.GetOk("name"); ok { healthCheckPolicy.Name = helper.String(v.(string)) } + if v, ok := d.GetOk("rules"); ok { for _, item := range v.([]interface{}) { rulesMap := item.(map[string]interface{}) @@ -104,17 +96,20 @@ func resourceTencentCloudKubernetesHealthCheckPolicyCreate(d *schema.ResourceDat if v, ok := rulesMap["auto_repair_enabled"]; ok { healthCheckPolicyRule.AutoRepairEnabled = helper.Bool(v.(bool)) } + if v, ok := rulesMap["enabled"]; ok { healthCheckPolicyRule.Enabled = helper.Bool(v.(bool)) } + if v, ok := rulesMap["name"]; ok { healthCheckPolicyRule.Name = helper.String(v.(string)) } + healthCheckPolicy.Rules = append(healthCheckPolicy.Rules, &healthCheckPolicyRule) } } - request.HealthCheckPolicy = &healthCheckPolicy + request.HealthCheckPolicy = &healthCheckPolicy err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseTkeV20220501Client().CreateHealthCheckPolicyWithContext(ctx, request) if e != nil { @@ -122,18 +117,26 @@ func resourceTencentCloudKubernetesHealthCheckPolicyCreate(d *schema.ResourceDat } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } + + if result == nil || result.Response == nil { + return resource.NonRetryableError(fmt.Errorf("Create kubernetes health check policy failed, Response is nil.")) + } + response = result return nil }) + if err != nil { log.Printf("[CRITAL]%s create kubernetes health check policy failed, reason:%+v", logId, err) return err } - name = *response.Response.HealthCheckPolicyName + if response.Response.HealthCheckPolicyName == nil { + return fmt.Errorf("HealthCheckPolicyName is nil.") + } + name = *response.Response.HealthCheckPolicyName d.SetId(strings.Join([]string{clusterId, name}, tccommon.FILED_SP)) - return resourceTencentCloudKubernetesHealthCheckPolicyRead(d, meta) } @@ -141,43 +144,41 @@ func resourceTencentCloudKubernetesHealthCheckPolicyRead(d *schema.ResourceData, defer tccommon.LogElapsed("resource.tencentcloud_kubernetes_health_check_policy.read")() defer tccommon.InconsistentCheck(d, meta)() - logId := tccommon.GetLogId(tccommon.ContextNil) - - ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) - - service := TkeService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + var ( + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + service = TkeService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + ) idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } + clusterId := idSplit[0] name := idSplit[1] - _ = d.Set("cluster_id", clusterId) - - _ = d.Set("name", name) - respData, err := service.DescribeKubernetesHealthCheckPolicyById(ctx, clusterId, name) if err != nil { return err } if respData == nil { + log.Printf("[WARN]%s resource `tencentcloud_kubernetes_health_check_policy` [%s] not found, please check if it has been deleted.\n", logId, d.Id()) d.SetId("") - log.Printf("[WARN]%s resource `kubernetes_health_check_policy` [%s] not found, please check if it has been deleted.\n", logId, d.Id()) return nil } + + _ = d.Set("cluster_id", clusterId) + if respData.Name != nil { _ = d.Set("name", respData.Name) - name = *respData.Name } - rulesList := make([]map[string]interface{}, 0, len(respData.Rules)) if respData.Rules != nil { + rulesList := make([]map[string]interface{}, 0, len(respData.Rules)) for _, rules := range respData.Rules { rulesMap := map[string]interface{}{} - if rules.AutoRepairEnabled != nil { rulesMap["auto_repair_enabled"] = rules.AutoRepairEnabled } @@ -203,37 +204,21 @@ func resourceTencentCloudKubernetesHealthCheckPolicyUpdate(d *schema.ResourceDat defer tccommon.LogElapsed("resource.tencentcloud_kubernetes_health_check_policy.update")() defer tccommon.InconsistentCheck(d, meta)() - logId := tccommon.GetLogId(tccommon.ContextNil) - - ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + var ( + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + ) - immutableArgs := []string{"cluster_id", "name"} - for _, v := range immutableArgs { - if d.HasChange(v) { - return fmt.Errorf("argument `%s` cannot be changed", v) - } - } idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } + clusterId := idSplit[0] name := idSplit[1] - needChange := false - mutableArgs := []string{"rules"} - for _, v := range mutableArgs { - if d.HasChange(v) { - needChange = true - break - } - } - - if needChange { + if d.HasChange("rules") { request := tkev20220501.NewModifyHealthCheckPolicyRequest() - - request.ClusterId = helper.String(clusterId) - healthCheckPolicy := tkev20220501.HealthCheckPolicy{} healthCheckPolicy.Name = helper.String(name) if v, ok := d.GetOk("rules"); ok { @@ -243,17 +228,21 @@ func resourceTencentCloudKubernetesHealthCheckPolicyUpdate(d *schema.ResourceDat if v, ok := rulesMap["auto_repair_enabled"]; ok { healthCheckPolicyRule.AutoRepairEnabled = helper.Bool(v.(bool)) } + if v, ok := rulesMap["enabled"]; ok { healthCheckPolicyRule.Enabled = helper.Bool(v.(bool)) } + if v, ok := rulesMap["name"]; ok { healthCheckPolicyRule.Name = helper.String(v.(string)) } + healthCheckPolicy.Rules = append(healthCheckPolicy.Rules, &healthCheckPolicyRule) } } - request.HealthCheckPolicy = &healthCheckPolicy + request.HealthCheckPolicy = &healthCheckPolicy + request.ClusterId = helper.String(clusterId) err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseTkeV20220501Client().ModifyHealthCheckPolicyWithContext(ctx, request) if e != nil { @@ -261,8 +250,10 @@ func resourceTencentCloudKubernetesHealthCheckPolicyUpdate(d *schema.ResourceDat } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } + return nil }) + if err != nil { log.Printf("[CRITAL]%s update kubernetes health check policy failed, reason:%+v", logId, err) return err @@ -276,25 +267,22 @@ func resourceTencentCloudKubernetesHealthCheckPolicyDelete(d *schema.ResourceDat defer tccommon.LogElapsed("resource.tencentcloud_kubernetes_health_check_policy.delete")() defer tccommon.InconsistentCheck(d, meta)() - logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + var ( + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + request = tkev20220501.NewDeleteHealthCheckPolicyRequest() + ) idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } + clusterId := idSplit[0] name := idSplit[1] - var ( - request = tkev20220501.NewDeleteHealthCheckPolicyRequest() - response = tkev20220501.NewDeleteHealthCheckPolicyResponse() - ) - request.ClusterId = helper.String(clusterId) - request.HealthCheckPolicyName = helper.String(name) - err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseTkeV20220501Client().DeleteHealthCheckPolicyWithContext(ctx, request) if e != nil { @@ -302,14 +290,14 @@ func resourceTencentCloudKubernetesHealthCheckPolicyDelete(d *schema.ResourceDat } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } - response = result + return nil }) + if err != nil { log.Printf("[CRITAL]%s delete kubernetes health check policy failed, reason:%+v", logId, err) return err } - _ = response return nil } diff --git a/tencentcloud/services/tke/resource_tc_kubernetes_health_check_policy.md b/tencentcloud/services/tke/resource_tc_kubernetes_health_check_policy.md index 03be1dda5d..97ea21e94c 100644 --- a/tencentcloud/services/tke/resource_tc_kubernetes_health_check_policy.md +++ b/tencentcloud/services/tke/resource_tc_kubernetes_health_check_policy.md @@ -1,28 +1,29 @@ -Provides a resource to create a tke kubernetes_health_check_policy +Provides a resource to create a TKE kubernetes health check policy Example Usage ```hcl -resource "tencentcloud_kubernetes_health_check_policy" "kubernetes_health_check_policy" { - cluster_id = "cls-xxxxx" - name = "example" - rules { - name = "OOMKilling" - auto_repair_enabled = true - enabled = true - } - rules { - name = "KubeletUnhealthy" - auto_repair_enabled = true - enabled = true - } +resource "tencentcloud_kubernetes_health_check_policy" "example" { + cluster_id = "cls-fdy7hm1q" + name = "tf-example" + rules { + name = "OOMKilling" + auto_repair_enabled = true + enabled = true + } + + rules { + name = "KubeletUnhealthy" + auto_repair_enabled = true + enabled = true + } } ``` Import -tke kubernetes_health_check_policy can be imported using the id, e.g. +TKE kubernetes health check policy can be imported using the clusterId#name, e.g. ``` -terraform import tencentcloud_kubernetes_health_check_policy.kubernetes_health_check_policy cls-xxxxx#healthcheckpolicyname +terraform import tencentcloud_kubernetes_health_check_policy.example cls-fdy7hm1q#tf-example ``` diff --git a/tencentcloud/services/tke/service_tencentcloud_tke.go b/tencentcloud/services/tke/service_tencentcloud_tke.go index 45a934e55c..bec39b856b 100644 --- a/tencentcloud/services/tke/service_tencentcloud_tke.go +++ b/tencentcloud/services/tke/service_tencentcloud_tke.go @@ -3606,26 +3606,28 @@ func (me *TkeService) DescribeKubernetesHealthCheckPolicyById(ctx context.Contex } }() - ratelimit.Check(request.GetAction()) - var ( - offset int64 = 0 - limit int64 = 20 + offset int64 = 0 + limit int64 = 100 + instances []*tke2.HealthCheckPolicy ) - var instances []*tke2.HealthCheckPolicy + for { request.Offset = &offset request.Limit = &limit + ratelimit.Check(request.GetAction()) response, err := me.client.UseTkeV20220501Client().DescribeHealthCheckPolicies(request) if err != nil { errRet = err return } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) if response == nil || len(response.Response.HealthCheckPolicies) < 1 { break } + instances = append(instances, response.Response.HealthCheckPolicies...) if len(response.Response.HealthCheckPolicies) < int(limit) { break diff --git a/website/docs/r/kubernetes_health_check_policy.html.markdown b/website/docs/r/kubernetes_health_check_policy.html.markdown index 4437165063..bcc5f68686 100644 --- a/website/docs/r/kubernetes_health_check_policy.html.markdown +++ b/website/docs/r/kubernetes_health_check_policy.html.markdown @@ -4,24 +4,25 @@ layout: "tencentcloud" page_title: "TencentCloud: tencentcloud_kubernetes_health_check_policy" sidebar_current: "docs-tencentcloud-resource-kubernetes_health_check_policy" description: |- - Provides a resource to create a tke kubernetes_health_check_policy + Provides a resource to create a TKE kubernetes health check policy --- # tencentcloud_kubernetes_health_check_policy -Provides a resource to create a tke kubernetes_health_check_policy +Provides a resource to create a TKE kubernetes health check policy ## Example Usage ```hcl -resource "tencentcloud_kubernetes_health_check_policy" "kubernetes_health_check_policy" { - cluster_id = "cls-xxxxx" - name = "example" +resource "tencentcloud_kubernetes_health_check_policy" "example" { + cluster_id = "cls-fdy7hm1q" + name = "tf-example" rules { name = "OOMKilling" auto_repair_enabled = true enabled = true } + rules { name = "KubeletUnhealthy" auto_repair_enabled = true @@ -34,8 +35,8 @@ resource "tencentcloud_kubernetes_health_check_policy" "kubernetes_health_check_ The following arguments are supported: -* `cluster_id` - (Required, String) ID of the cluster. -* `name` - (Required, String) Health Check Policy Name. +* `cluster_id` - (Required, String, ForceNew) ID of the cluster. +* `name` - (Required, String, ForceNew) Health Check Policy Name. * `rules` - (Required, List) Health check policy rule list. The `rules` object supports the following: @@ -54,9 +55,9 @@ In addition to all arguments above, the following attributes are exported: ## Import -tke kubernetes_health_check_policy can be imported using the id, e.g. +TKE kubernetes health check policy can be imported using the clusterId#name, e.g. ``` -terraform import tencentcloud_kubernetes_health_check_policy.kubernetes_health_check_policy cls-xxxxx#healthcheckpolicyname +terraform import tencentcloud_kubernetes_health_check_policy.example cls-fdy7hm1q#tf-example ```