diff --git a/.changelog/2752.txt b/.changelog/2752.txt new file mode 100644 index 0000000000..4cb0cfbfe1 --- /dev/null +++ b/.changelog/2752.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/tencentcloud_mysql_instance: Optimize code logic +``` diff --git a/tencentcloud/services/cdb/resource_tc_mysql_instance.go b/tencentcloud/services/cdb/resource_tc_mysql_instance.go index 4516d39915..6c56df0773 100644 --- a/tencentcloud/services/cdb/resource_tc_mysql_instance.go +++ b/tencentcloud/services/cdb/resource_tc_mysql_instance.go @@ -1035,31 +1035,55 @@ func mysqlAllInstanceRoleUpdate(ctx context.Context, d *schema.ResourceData, met return err } - err = resource.Retry(6*time.Hour, func() *resource.RetryError { - taskStatus, message, err := mysqlService.DescribeAsyncRequestInfo(ctx, asyncRequestId) + if waitSwitch != InWindow { + err = resource.Retry(6*time.Hour, func() *resource.RetryError { + taskStatus, message, err := mysqlService.DescribeAsyncRequestInfo(ctx, asyncRequestId) + + if err != nil { + if _, ok := err.(*errors.TencentCloudSDKError); !ok { + return resource.RetryableError(err) + } else { + return resource.NonRetryableError(err) + } + } - if err != nil { - if _, ok := err.(*errors.TencentCloudSDKError); !ok { - return resource.RetryableError(err) - } else { - return resource.NonRetryableError(err) + if taskStatus == MYSQL_TASK_STATUS_SUCCESS { + return nil } - } + if taskStatus == MYSQL_TASK_STATUS_INITIAL || taskStatus == MYSQL_TASK_STATUS_RUNNING { + return resource.RetryableError(fmt.Errorf("update mysql mem_size/volume_size status is %s", taskStatus)) + } + err = fmt.Errorf("update mysql mem_size/volume_size task status is %s, we won't wait for it finish, it show message:%s", + taskStatus, message) + return resource.NonRetryableError(err) + }) - if taskStatus == MYSQL_TASK_STATUS_SUCCESS { - return nil - } - if taskStatus == MYSQL_TASK_STATUS_INITIAL || taskStatus == MYSQL_TASK_STATUS_RUNNING { - return resource.RetryableError(fmt.Errorf("update mysql mem_size/volume_size status is %s", taskStatus)) + if err != nil { + log.Printf("[CRITAL]%s update mysql mem_size/volume_size fail, reason:%s\n", logId, err.Error()) + return err } - err = fmt.Errorf("update mysql mem_size/volume_size task status is %s,we won't wait for it finish ,it show message:%s", - ",", message) - return resource.NonRetryableError(err) - }) + } else { + err = resource.Retry(6*time.Hour, func() *resource.RetryError { + mysqlInfo, err := mysqlService.DescribeDBInstanceById(ctx, d.Id()) + + if err != nil { + if _, ok := err.(*errors.TencentCloudSDKError); !ok { + return resource.RetryableError(err) + } else { + return resource.NonRetryableError(err) + } + } - if err != nil { - log.Printf("[CRITAL]%s update mysql mem_size/volume_size fail, reason:%s\n ", logId, err.Error()) - return err + if *mysqlInfo.TaskStatus == 15 { + return nil + } + return resource.RetryableError(fmt.Errorf("update mysql mem_size/volume_size task status is %v", mysqlInfo.TaskStatus)) + }) + + if err != nil { + log.Printf("[CRITAL]%s update mysql mem_size/volume_size fail, reason:%s\n", logId, err.Error()) + return err + } } } } else { @@ -1120,31 +1144,55 @@ func mysqlAllInstanceRoleUpdate(ctx context.Context, d *schema.ResourceData, met return err } - err = resource.Retry(6*time.Hour, func() *resource.RetryError { - taskStatus, message, err := mysqlService.DescribeAsyncRequestInfo(ctx, asyncRequestId) + if waitSwitch != InWindow { + err = resource.Retry(6*time.Hour, func() *resource.RetryError { + taskStatus, message, err := mysqlService.DescribeAsyncRequestInfo(ctx, asyncRequestId) - if err != nil { - if _, ok := err.(*errors.TencentCloudSDKError); !ok { - return resource.RetryableError(err) - } else { - return resource.NonRetryableError(err) + if err != nil { + if _, ok := err.(*errors.TencentCloudSDKError); !ok { + return resource.RetryableError(err) + } else { + return resource.NonRetryableError(err) + } } - } - if taskStatus == MYSQL_TASK_STATUS_SUCCESS { - return nil - } - if taskStatus == MYSQL_TASK_STATUS_INITIAL || taskStatus == MYSQL_TASK_STATUS_RUNNING { - return resource.RetryableError(fmt.Errorf("update mysql mem_size/volume_size status is %s", taskStatus)) + if taskStatus == MYSQL_TASK_STATUS_SUCCESS { + return nil + } + if taskStatus == MYSQL_TASK_STATUS_INITIAL || taskStatus == MYSQL_TASK_STATUS_RUNNING { + return resource.RetryableError(fmt.Errorf("update mysql mem_size/volume_size status is %s", taskStatus)) + } + err = fmt.Errorf("update mysql mem_size/volume_size task status is %s, we won't wait for it finish, it show message:%s", + taskStatus, message) + return resource.NonRetryableError(err) + }) + + if err != nil { + log.Printf("[CRITAL]%s update mysql mem_size/volume_size fail, reason:%s\n ", logId, err.Error()) + return err } - err = fmt.Errorf("update mysql mem_size/volume_size task status is %s,we won't wait for it finish ,it show message:%s", - ",", message) - return resource.NonRetryableError(err) - }) + } else { + err = resource.Retry(6*time.Hour, func() *resource.RetryError { + mysqlInfo, err := mysqlService.DescribeDBInstanceById(ctx, d.Id()) + + if err != nil { + if _, ok := err.(*errors.TencentCloudSDKError); !ok { + return resource.RetryableError(err) + } else { + return resource.NonRetryableError(err) + } + } - if err != nil { - log.Printf("[CRITAL]%s update mysql mem_size/volume_size fail, reason:%s\n ", logId, err.Error()) - return err + if *mysqlInfo.TaskStatus == 15 { + return nil + } + return resource.RetryableError(fmt.Errorf("update mysql engineVersion task status is %v", mysqlInfo.TaskStatus)) + }) + + if err != nil { + log.Printf("[CRITAL]%s update mysql engineVersion fail, reason:%s\n", logId, err.Error()) + return err + } } } } @@ -1221,13 +1269,13 @@ func mysqlAllInstanceRoleUpdate(ctx context.Context, d *schema.ResourceData, met if taskStatus == MYSQL_TASK_STATUS_INITIAL || taskStatus == MYSQL_TASK_STATUS_RUNNING { return resource.RetryableError(fmt.Errorf("update mysql engineVersion status is %s", taskStatus)) } - err = fmt.Errorf("update mysql engineVersion task status is %s,we won't wait for it finish ,it show message:%s", - ",", message) + err = fmt.Errorf("update mysql engineVersion task status is %s, we won't wait for it finish, it show message:%s", + taskStatus, message) return resource.NonRetryableError(err) }) if err != nil { - log.Printf("[CRITAL]%s update mysql engineVersion fail, reason:%s\n ", logId, err.Error()) + log.Printf("[CRITAL]%s update mysql engineVersion fail, reason:%s\n", logId, err.Error()) return err } } else { @@ -1249,7 +1297,7 @@ func mysqlAllInstanceRoleUpdate(ctx context.Context, d *schema.ResourceData, met }) if err != nil { - log.Printf("[CRITAL]%s update mysql engineVersion fail, reason:%s\n ", logId, err.Error()) + log.Printf("[CRITAL]%s update mysql engineVersion fail, reason:%s\n", logId, err.Error()) return err } diff --git a/tencentcloud/services/cdc/data_source_tc_cdc_dedicated_cluster_hosts.go b/tencentcloud/services/cdc/data_source_tc_cdc_dedicated_cluster_hosts.go index 9fc4be0f3a..de14c2a306 100644 --- a/tencentcloud/services/cdc/data_source_tc_cdc_dedicated_cluster_hosts.go +++ b/tencentcloud/services/cdc/data_source_tc_cdc_dedicated_cluster_hosts.go @@ -174,7 +174,7 @@ func DataSourceTencentCloudCdcDedicatedClusterHostsRead(d *schema.ResourceData, hostInfoMap["host_id"] = hostInfo.HostId } - ids = append(ids) + ids = append(ids, *hostInfo.HostId) tmpList = append(tmpList, hostInfoMap) } diff --git a/tencentcloud/services/cdc/data_source_tc_cdc_dedicated_cluster_hosts_test.go b/tencentcloud/services/cdc/data_source_tc_cdc_dedicated_cluster_hosts_test.go index 124e61f1ca..160609dd6e 100644 --- a/tencentcloud/services/cdc/data_source_tc_cdc_dedicated_cluster_hosts_test.go +++ b/tencentcloud/services/cdc/data_source_tc_cdc_dedicated_cluster_hosts_test.go @@ -1,4 +1,4 @@ -package cdc +package cdc_test import ( "testing" diff --git a/tencentcloud/services/cdc/data_source_tc_cdc_dedicated_cluster_instance_types.go b/tencentcloud/services/cdc/data_source_tc_cdc_dedicated_cluster_instance_types.go index 3049b2da11..8d03739ead 100644 --- a/tencentcloud/services/cdc/data_source_tc_cdc_dedicated_cluster_instance_types.go +++ b/tencentcloud/services/cdc/data_source_tc_cdc_dedicated_cluster_instance_types.go @@ -211,7 +211,7 @@ func DataSourceTencentCloudCdcDedicatedClusterInstanceTypesRead(d *schema.Resour dedicatedClusterInstanceTypeMap["status"] = dedicatedClusterInstanceType.Status } - ids = append(ids) + ids = append(ids, *dedicatedClusterInstanceType.InstanceType) tmpList = append(tmpList, dedicatedClusterInstanceTypeMap) } diff --git a/tencentcloud/services/cdc/data_source_tc_cdc_dedicated_cluster_instance_types_test.go b/tencentcloud/services/cdc/data_source_tc_cdc_dedicated_cluster_instance_types_test.go index f23e9ab6be..233fc32743 100644 --- a/tencentcloud/services/cdc/data_source_tc_cdc_dedicated_cluster_instance_types_test.go +++ b/tencentcloud/services/cdc/data_source_tc_cdc_dedicated_cluster_instance_types_test.go @@ -1,4 +1,4 @@ -package cdc +package cdc_test import ( "testing" diff --git a/tencentcloud/services/cdc/data_source_tc_cdc_dedicated_cluster_orders.go b/tencentcloud/services/cdc/data_source_tc_cdc_dedicated_cluster_orders.go index d53d06e74b..4254372f18 100644 --- a/tencentcloud/services/cdc/data_source_tc_cdc_dedicated_cluster_orders.go +++ b/tencentcloud/services/cdc/data_source_tc_cdc_dedicated_cluster_orders.go @@ -478,7 +478,7 @@ func DataSourceTencentCloudCdcDedicatedClusterOrdersRead(d *schema.ResourceData, dedicatedClusterOrderMap["order_type"] = dedicatedClusterOrder.OrderType } - ids = append(ids) + ids = append(ids, *dedicatedClusterOrder.DedicatedClusterId) tmpList = append(tmpList, dedicatedClusterOrderMap) } diff --git a/tencentcloud/services/cdc/data_source_tc_cdc_dedicated_cluster_orders_test.go b/tencentcloud/services/cdc/data_source_tc_cdc_dedicated_cluster_orders_test.go index 3dd2b1a4ff..e393d50013 100644 --- a/tencentcloud/services/cdc/data_source_tc_cdc_dedicated_cluster_orders_test.go +++ b/tencentcloud/services/cdc/data_source_tc_cdc_dedicated_cluster_orders_test.go @@ -1,4 +1,4 @@ -package cdc +package cdc_test import ( "testing" diff --git a/tencentcloud/services/cdc/resource_tc_cdc_dedicated_cluster_test.go b/tencentcloud/services/cdc/resource_tc_cdc_dedicated_cluster_test.go index 0266f971f8..0c6154d5bd 100644 --- a/tencentcloud/services/cdc/resource_tc_cdc_dedicated_cluster_test.go +++ b/tencentcloud/services/cdc/resource_tc_cdc_dedicated_cluster_test.go @@ -1,4 +1,4 @@ -package cdc +package cdc_test import ( "testing" diff --git a/tencentcloud/services/cdc/resource_tc_cdc_site_test.go b/tencentcloud/services/cdc/resource_tc_cdc_site_test.go index 7f4e949f76..0789ab82c7 100644 --- a/tencentcloud/services/cdc/resource_tc_cdc_site_test.go +++ b/tencentcloud/services/cdc/resource_tc_cdc_site_test.go @@ -1,4 +1,4 @@ -package cdc +package cdc_test import ( "testing"