diff --git a/.changelog/3647.txt b/.changelog/3647.txt new file mode 100644 index 0000000000..69b65e6173 --- /dev/null +++ b/.changelog/3647.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/tencentcloud_cynosdb_cluster_transparent_encrypt: optimiz code logic +``` \ No newline at end of file diff --git a/tencentcloud/services/cynosdb/resource_tc_cynosdb_cluster_transparent_encrypt.go b/tencentcloud/services/cynosdb/resource_tc_cynosdb_cluster_transparent_encrypt.go index e83235651e..67e1515250 100644 --- a/tencentcloud/services/cynosdb/resource_tc_cynosdb_cluster_transparent_encrypt.go +++ b/tencentcloud/services/cynosdb/resource_tc_cynosdb_cluster_transparent_encrypt.go @@ -1,8 +1,8 @@ -// Code generated by iacg; DO NOT EDIT. package cynosdb import ( "context" + "fmt" "log" "strconv" "time" @@ -27,6 +27,7 @@ func ResourceTencentCloudCynosdbClusterTransparentEncrypt() *schema.Resource { "cluster_id": { Type: schema.TypeString, Required: true, + ForceNew: true, Description: "Cluster ID.", }, @@ -78,13 +79,12 @@ func resourceTencentCloudCynosdbClusterTransparentEncryptRead(d *schema.Resource defer tccommon.LogElapsed("resource.tencentcloud_cynosdb_cluster_transparent_encrypt.read")() defer tccommon.InconsistentCheck(d, meta)() - logId := tccommon.GetLogId(tccommon.ContextNil) - - ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) - - service := CynosdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - - clusterId := d.Id() + var ( + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + service = CynosdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + clusterId = d.Id() + ) respData, err := service.DescribeCynosdbClusterTransparentEncryptById(ctx, clusterId) if err != nil { @@ -92,8 +92,8 @@ func resourceTencentCloudCynosdbClusterTransparentEncryptRead(d *schema.Resource } if respData == nil { + log.Printf("[WARN]%s resource `tencentcloud_cynosdb_cluster_transparent_encrypt` [%s] not found, please check if it has been deleted.\n", logId, d.Id()) d.SetId("") - log.Printf("[WARN]%s resource `cynosdb_cluster_transparent_encrypt` [%s] not found, please check if it has been deleted.\n", logId, d.Id()) return nil } @@ -115,7 +115,6 @@ func resourceTencentCloudCynosdbClusterTransparentEncryptRead(d *schema.Resource _ = d.Set("is_open_global_encryption", respData.IsOpenGlobalEncryption) } - _ = clusterId return nil } @@ -123,14 +122,14 @@ func resourceTencentCloudCynosdbClusterTransparentEncryptUpdate(d *schema.Resour defer tccommon.LogElapsed("resource.tencentcloud_cynosdb_cluster_transparent_encrypt.update")() defer tccommon.InconsistentCheck(d, meta)() - logId := tccommon.GetLogId(tccommon.ContextNil) - - ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) - - clusterId := d.Id() + var ( + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + clusterId = d.Id() + ) needChange := false - mutableArgs := []string{"cluster_id", "key_type", "key_id", "key_region"} + mutableArgs := []string{"key_type", "key_id", "key_region"} for _, v := range mutableArgs { if d.HasChange(v) { needChange = true @@ -141,11 +140,6 @@ func resourceTencentCloudCynosdbClusterTransparentEncryptUpdate(d *schema.Resour if needChange { request := cynosdbv20190107.NewOpenClusterTransparentEncryptRequest() response := cynosdbv20190107.NewOpenClusterTransparentEncryptResponse() - - if v, ok := d.GetOk("cluster_id"); ok { - request.ClusterId = helper.String(v.(string)) - } - if v, ok := d.GetOk("key_type"); ok { request.KeyType = helper.String(v.(string)) } @@ -158,6 +152,7 @@ func resourceTencentCloudCynosdbClusterTransparentEncryptUpdate(d *schema.Resour request.KeyRegion = helper.String(v.(string)) } + request.ClusterId = &clusterId reqErr := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseCynosdbClient().OpenClusterTransparentEncryptWithContext(ctx, request) if e != nil { @@ -165,6 +160,11 @@ func resourceTencentCloudCynosdbClusterTransparentEncryptUpdate(d *schema.Resour } 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 || result.Response.TaskId == nil { + return resource.NonRetryableError(fmt.Errorf("Update cynosdb cluster transparent encrypt failed, Response is nil.")) + } + response = result return nil }) @@ -181,15 +181,14 @@ func resourceTencentCloudCynosdbClusterTransparentEncryptUpdate(d *schema.Resour } } - if d.HasChange("is_open_global_encryption") && !d.IsNewResource() { + if d.HasChange("is_open_global_encryption") { request := cynosdbv20190107.NewModifyClusterGlobalEncryptionRequest() response := cynosdbv20190107.NewModifyClusterGlobalEncryptionResponse() - request.ClusterId = helper.String(clusterId) - if v, ok := d.GetOkExists("is_open_global_encryption"); ok { request.IsOpenGlobalEncryption = helper.Bool(v.(bool)) } + request.ClusterId = &clusterId reqErr := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseCynosdbClient().ModifyClusterGlobalEncryptionWithContext(ctx, request) if e != nil { @@ -197,9 +196,15 @@ func resourceTencentCloudCynosdbClusterTransparentEncryptUpdate(d *schema.Resour } 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 || result.Response.TaskId == nil { + return resource.NonRetryableError(fmt.Errorf("Update cynosdb cluster is_open_global_encryption failed, Response is nil.")) + } + response = result return nil }) + if reqErr != nil { log.Printf("[CRITAL]%s update cynosdb cluster is_open_global_encryption failed, reason:%+v", logId, reqErr) return reqErr @@ -213,7 +218,6 @@ func resourceTencentCloudCynosdbClusterTransparentEncryptUpdate(d *schema.Resour } } - _ = clusterId return resourceTencentCloudCynosdbClusterTransparentEncryptRead(d, meta) } diff --git a/tencentcloud/services/cynosdb/resource_tc_cynosdb_cluster_transparent_encrypt.md b/tencentcloud/services/cynosdb/resource_tc_cynosdb_cluster_transparent_encrypt.md index 8a4ec4d7f7..7004d26d34 100644 --- a/tencentcloud/services/cynosdb/resource_tc_cynosdb_cluster_transparent_encrypt.md +++ b/tencentcloud/services/cynosdb/resource_tc_cynosdb_cluster_transparent_encrypt.md @@ -1,4 +1,4 @@ -Provides a resource to create a cynosdb cluster_transparent_encrypt +Provides a resource to create a Cynosdb cluster transparent encrypt ~> **NOTE:** Once activated, it cannot be deactivated. @@ -7,19 +7,19 @@ Provides a resource to create a cynosdb cluster_transparent_encrypt Example Usage ```hcl -resource "tencentcloud_cynosdb_cluster_transparent_encrypt" "cynosdb_cluster_transparent_encrypt" { +resource "tencentcloud_cynosdb_cluster_transparent_encrypt" "example" { cluster_id = cynosdbmysql-bu6hlulf - is_open_global_encryption = false key_id = "f063c18b-xxxx-xxxx-xxxx-525400d3a886" key_region = "ap-guangzhou" key_type = "custom" + is_open_global_encryption = false } ``` Import -cynosdb cluster_transparent_encrypt can be imported using the id, e.g. +Cynosdb cluster transparent encrypt can be imported using the id, e.g. ``` -terraform import tencentcloud_cynosdb_cluster_transparent_encrypt.cynosdb_cluster_transparent_encrypt cynosdbmysql-bu6hlulf +terraform import tencentcloud_cynosdb_cluster_transparent_encrypt.example cynosdbmysql-bu6hlulf ``` \ No newline at end of file diff --git a/website/docs/r/cynosdb_cluster_transparent_encrypt.html.markdown b/website/docs/r/cynosdb_cluster_transparent_encrypt.html.markdown index 3a7b8c7e81..ed4f644002 100644 --- a/website/docs/r/cynosdb_cluster_transparent_encrypt.html.markdown +++ b/website/docs/r/cynosdb_cluster_transparent_encrypt.html.markdown @@ -4,12 +4,12 @@ layout: "tencentcloud" page_title: "TencentCloud: tencentcloud_cynosdb_cluster_transparent_encrypt" sidebar_current: "docs-tencentcloud-resource-cynosdb_cluster_transparent_encrypt" description: |- - Provides a resource to create a cynosdb cluster_transparent_encrypt + Provides a resource to create a Cynosdb cluster transparent encrypt --- # tencentcloud_cynosdb_cluster_transparent_encrypt -Provides a resource to create a cynosdb cluster_transparent_encrypt +Provides a resource to create a Cynosdb cluster transparent encrypt ~> **NOTE:** Once activated, it cannot be deactivated. @@ -18,12 +18,12 @@ Provides a resource to create a cynosdb cluster_transparent_encrypt ## Example Usage ```hcl -resource "tencentcloud_cynosdb_cluster_transparent_encrypt" "cynosdb_cluster_transparent_encrypt" { +resource "tencentcloud_cynosdb_cluster_transparent_encrypt" "example" { cluster_id = cynosdbmysql-bu6hlulf - is_open_global_encryption = false key_id = "f063c18b-xxxx-xxxx-xxxx-525400d3a886" key_region = "ap-guangzhou" key_type = "custom" + is_open_global_encryption = false } ``` @@ -31,7 +31,7 @@ resource "tencentcloud_cynosdb_cluster_transparent_encrypt" "cynosdb_cluster_tra The following arguments are supported: -* `cluster_id` - (Required, String) Cluster ID. +* `cluster_id` - (Required, String, ForceNew) Cluster ID. * `key_type` - (Required, String) Key type (cloud, custom). * `is_open_global_encryption` - (Optional, Bool) Whether to enable global encryption. * `key_id` - (Optional, String) Key Id. @@ -47,9 +47,9 @@ In addition to all arguments above, the following attributes are exported: ## Import -cynosdb cluster_transparent_encrypt can be imported using the id, e.g. +Cynosdb cluster transparent encrypt can be imported using the id, e.g. ``` -terraform import tencentcloud_cynosdb_cluster_transparent_encrypt.cynosdb_cluster_transparent_encrypt cynosdbmysql-bu6hlulf +terraform import tencentcloud_cynosdb_cluster_transparent_encrypt.example cynosdbmysql-bu6hlulf ```