diff --git a/tencentcloud/basic_test.go b/tencentcloud/basic_test.go index c8531638ba..58a288d041 100644 --- a/tencentcloud/basic_test.go +++ b/tencentcloud/basic_test.go @@ -264,6 +264,7 @@ resource "tencentcloud_instance" "default" { subnet_id = var.subnet_id } ` + // End of SQLServer const defaultCVMName = "keep-cvm" diff --git a/tencentcloud/data_source_tc_sqlserver_account_db_attachments_test.go b/tencentcloud/data_source_tc_sqlserver_account_db_attachments_test.go index 07485f1da3..98292ffbb9 100644 --- a/tencentcloud/data_source_tc_sqlserver_account_db_attachments_test.go +++ b/tencentcloud/data_source_tc_sqlserver_account_db_attachments_test.go @@ -11,7 +11,7 @@ var testDataSqlserverAccountDBAttachmentsName = "data.tencentcloud_sqlserver_acc func TestAccDataSourceTencentCloudSqlserverAccountDBAttachments(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, + PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) }, Providers: testAccProviders, CheckDestroy: testAccCheckLBDestroy, Steps: []resource.TestStep{ diff --git a/tencentcloud/data_source_tc_sqlserver_accounts_test.go b/tencentcloud/data_source_tc_sqlserver_accounts_test.go index f749e2e526..9b468ff156 100644 --- a/tencentcloud/data_source_tc_sqlserver_accounts_test.go +++ b/tencentcloud/data_source_tc_sqlserver_accounts_test.go @@ -11,7 +11,7 @@ var testDataSqlserverAccountsName = "data.tencentcloud_sqlserver_accounts.test" func TestAccDataSourceTencentCloudSqlserverAccounts(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, + PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) }, Providers: testAccProviders, CheckDestroy: testAccCheckLBDestroy, Steps: []resource.TestStep{ diff --git a/tencentcloud/data_source_tc_sqlserver_backups_test.go b/tencentcloud/data_source_tc_sqlserver_backups_test.go index 8996e71ea9..e92856bf09 100644 --- a/tencentcloud/data_source_tc_sqlserver_backups_test.go +++ b/tencentcloud/data_source_tc_sqlserver_backups_test.go @@ -15,7 +15,7 @@ var now = time.Now().Format("2006-01-02 15:04:05") func TestAccDataSourceTencentCloudSqlserverBackups(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, + PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) }, Providers: testAccProviders, CheckDestroy: testAccCheckLBDestroy, Steps: []resource.TestStep{ diff --git a/tencentcloud/data_source_tc_sqlserver_basic_instances_test.go b/tencentcloud/data_source_tc_sqlserver_basic_instances_test.go index 472c5ebdfd..509518302e 100644 --- a/tencentcloud/data_source_tc_sqlserver_basic_instances_test.go +++ b/tencentcloud/data_source_tc_sqlserver_basic_instances_test.go @@ -11,7 +11,7 @@ var testDataSqlserverBasicInstancesName = "data.tencentcloud_sqlserver_basic_ins func TestAccDataSourceTencentCloudSqlserverBasicInstances(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, + PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) }, Providers: testAccProviders, CheckDestroy: testAccCheckSqlserverBasicInstanceDestroy, Steps: []resource.TestStep{ diff --git a/tencentcloud/data_source_tc_sqlserver_dbs_test.go b/tencentcloud/data_source_tc_sqlserver_dbs_test.go index 6621cecbea..a4046d9f42 100644 --- a/tencentcloud/data_source_tc_sqlserver_dbs_test.go +++ b/tencentcloud/data_source_tc_sqlserver_dbs_test.go @@ -9,7 +9,7 @@ import ( func TestAccDataSourceTencentCloudSqlserverDBs_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, + PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) }, Providers: testAccProviders, Steps: []resource.TestStep{ { diff --git a/tencentcloud/data_source_tc_sqlserver_instances_test.go b/tencentcloud/data_source_tc_sqlserver_instances_test.go index ea9359a67e..845bbca690 100644 --- a/tencentcloud/data_source_tc_sqlserver_instances_test.go +++ b/tencentcloud/data_source_tc_sqlserver_instances_test.go @@ -11,7 +11,7 @@ var testDataSqlserverInstancesName = "data.tencentcloud_sqlserver_instances.test func TestAccDataSourceTencentCloudSqlserverInstances(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, + PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) }, Providers: testAccProviders, CheckDestroy: testAccCheckSqlserverInstanceDestroy, Steps: []resource.TestStep{ diff --git a/tencentcloud/data_source_tc_sqlserver_publish_subscribes_test.go b/tencentcloud/data_source_tc_sqlserver_publish_subscribes_test.go index 57dcc3fefa..746c82e373 100644 --- a/tencentcloud/data_source_tc_sqlserver_publish_subscribes_test.go +++ b/tencentcloud/data_source_tc_sqlserver_publish_subscribes_test.go @@ -9,7 +9,7 @@ import ( func TestAccTencentCloudSqlserverPublishSubscribeDataSource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, + PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) }, Providers: testAccProviders, CheckDestroy: testAccCheckSqlserverPublishSubscribeDestroy, Steps: []resource.TestStep{ diff --git a/tencentcloud/data_source_tc_sqlserver_readonly_groups_test.go b/tencentcloud/data_source_tc_sqlserver_readonly_groups_test.go index fa9bbb5454..7aff06cfc7 100644 --- a/tencentcloud/data_source_tc_sqlserver_readonly_groups_test.go +++ b/tencentcloud/data_source_tc_sqlserver_readonly_groups_test.go @@ -11,7 +11,7 @@ var testDataSqlserverReadonlyGroupsName = "data.tencentcloud_sqlserver_readonly_ func TestAccDataSourceTencentCloudSqlserverReadonlyGroups(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, + PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) }, Providers: testAccProviders, CheckDestroy: testAccCheckLBDestroy, Steps: []resource.TestStep{ diff --git a/tencentcloud/resource_tc_sqlserver_account_db_attachment_test.go b/tencentcloud/resource_tc_sqlserver_account_db_attachment_test.go index adee09f6ae..3a23e0e15e 100644 --- a/tencentcloud/resource_tc_sqlserver_account_db_attachment_test.go +++ b/tencentcloud/resource_tc_sqlserver_account_db_attachment_test.go @@ -16,7 +16,7 @@ var testSqlserverAccountDBAttachmentResourceKey = testSqlserverAccountDBAttachme func TestAccTencentCloudSqlserverAccountDBAttachmentResource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, + PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) }, Providers: testAccProviders, CheckDestroy: testAccCheckSqlserverAccountDBAttachmentDestroy, Steps: []resource.TestStep{ diff --git a/tencentcloud/resource_tc_sqlserver_account_test.go b/tencentcloud/resource_tc_sqlserver_account_test.go index 402b0e5b1e..4e9360eb43 100644 --- a/tencentcloud/resource_tc_sqlserver_account_test.go +++ b/tencentcloud/resource_tc_sqlserver_account_test.go @@ -64,7 +64,7 @@ func init() { func TestAccTencentCloudSqlserverAccountResource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, + PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) }, Providers: testAccProviders, CheckDestroy: testAccCheckSqlserverAccountDestroy, Steps: []resource.TestStep{ diff --git a/tencentcloud/resource_tc_sqlserver_basic_instance.go b/tencentcloud/resource_tc_sqlserver_basic_instance.go index 2378c32a4f..fee854550a 100644 --- a/tencentcloud/resource_tc_sqlserver_basic_instance.go +++ b/tencentcloud/resource_tc_sqlserver_basic_instance.go @@ -453,24 +453,6 @@ func resourceTencentCloudSqlserverBasicInstanceUpdate(d *schema.ResourceData, me return outErr } - outErr = resource.Retry(writeRetryTimeout, func() *resource.RetryError { - instance, _, inErr := sqlserverService.DescribeSqlserverInstanceById(ctx, instanceId) - - if inErr != nil { - return retryError(inErr) - } - //specAsExpected := int(*instance.Memory) != memory && int(*instance.Storage) != storage - - if IsContains(SQLSERVER_STATUS_WAITING, *instance.Status) { - return resource.RetryableError(fmt.Errorf("instance status code is: %d, waiting for upgrade complete", *instance.Status)) - } - return nil - }) - - if outErr != nil { - return outErr - } - d.SetPartial("memory") d.SetPartial("storage") d.SetPartial("cpu") diff --git a/tencentcloud/resource_tc_sqlserver_basic_instance_test.go b/tencentcloud/resource_tc_sqlserver_basic_instance_test.go index 71ccb8e4e2..4806d6baac 100644 --- a/tencentcloud/resource_tc_sqlserver_basic_instance_test.go +++ b/tencentcloud/resource_tc_sqlserver_basic_instance_test.go @@ -15,7 +15,7 @@ var testSqlserverBasicInstanceResourceKey = testSqlserverBasicInstanceResourceNa func TestAccTencentCloudSqlserverBasicInstanceResource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, + PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) }, Providers: testAccProviders, CheckDestroy: testAccCheckSqlserverBasicInstanceDestroy, Steps: []resource.TestStep{ diff --git a/tencentcloud/resource_tc_sqlserver_db_test.go b/tencentcloud/resource_tc_sqlserver_db_test.go index da9f943cba..27ac4b2a0b 100644 --- a/tencentcloud/resource_tc_sqlserver_db_test.go +++ b/tencentcloud/resource_tc_sqlserver_db_test.go @@ -57,7 +57,7 @@ func init() { func TestAccTencentCloudSqlserverDB_basic_and_update(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, + PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) }, Providers: testAccProviders, CheckDestroy: testAccCheckSqlserverDBDestroy, Steps: []resource.TestStep{ diff --git a/tencentcloud/resource_tc_sqlserver_instance.go b/tencentcloud/resource_tc_sqlserver_instance.go index c0b84e35cb..dad9405641 100644 --- a/tencentcloud/resource_tc_sqlserver_instance.go +++ b/tencentcloud/resource_tc_sqlserver_instance.go @@ -291,8 +291,9 @@ func resourceTencentCloudSqlserverInstanceCreate(d *schema.ResourceData, meta in request.AutoVoucher = helper.IntInt64(v) } - if v, ok := d.Get("voucher_ids").([]interface{}); ok { - request.VoucherIds = helper.InterfacesStringsPoint(v) + if v, ok := d.GetOk("voucher_ids"); ok { + voucherIds := v.(*schema.Set).List() + request.VoucherIds = helper.InterfacesStringsPoint(voucherIds) } if projectId != 0 { @@ -383,7 +384,7 @@ func sqlServerAllInstanceRoleUpdate(ctx context.Context, d *schema.ResourceData, memory := d.Get("memory").(int) storage := d.Get("storage").(int) autoVoucher := d.Get("auto_voucher").(int) - voucherIds := d.Get("voucher_ids").([]interface{}) + voucherIds := d.Get("voucher_ids").(*schema.Set).List() outErr = resource.Retry(writeRetryTimeout, func() *resource.RetryError { inErr = sqlserverService.UpgradeSqlserverInstance(ctx, instanceId, memory, storage, autoVoucher, helper.InterfacesStringsPoint(voucherIds)) if inErr != nil { @@ -396,24 +397,6 @@ func sqlServerAllInstanceRoleUpdate(ctx context.Context, d *schema.ResourceData, return outErr } - outErr = resource.Retry(writeRetryTimeout, func() *resource.RetryError { - instance, _, inErr := sqlserverService.DescribeSqlserverInstanceById(ctx, instanceId) - - if inErr != nil { - return retryError(inErr) - } - //specAsExpected := int(*instance.Memory) != memory && int(*instance.Storage) != storage - - if IsContains(SQLSERVER_STATUS_WAITING, *instance.Status) { - return resource.RetryableError(fmt.Errorf("instance status code is: %d, waiting for upgrade complete", *instance.Status)) - } - return nil - }) - - if outErr != nil { - return outErr - } - d.SetPartial("memory") d.SetPartial("storage") } diff --git a/tencentcloud/resource_tc_sqlserver_instance_test.go b/tencentcloud/resource_tc_sqlserver_instance_test.go index b3430126f6..9f6ab75ca1 100644 --- a/tencentcloud/resource_tc_sqlserver_instance_test.go +++ b/tencentcloud/resource_tc_sqlserver_instance_test.go @@ -145,10 +145,10 @@ func batchDeleteSQLServerInstances(ctx context.Context, service SqlserverService return nil } -func TestAccTencentCloudSqlserverInstanceResource(t *testing.T) { +func TestAccTencentCloudSqlserverInstanceResource_PostPaid(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, + PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) }, Providers: testAccProviders, CheckDestroy: testAccCheckSqlserverInstanceDestroy, Steps: []resource.TestStep{ @@ -208,7 +208,6 @@ func TestAccTencentCloudSqlserverInstanceResource(t *testing.T) { } func TestAccTencentCloudSqlserverInstanceResource_Prepaid(t *testing.T) { - t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, Providers: testAccProviders, @@ -239,7 +238,7 @@ func TestAccTencentCloudSqlserverInstanceResource_Prepaid(t *testing.T) { func TestAccTencentCloudSqlserverInstanceMultiClusterResource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, + PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) }, Providers: testAccProviders, CheckDestroy: testAccCheckSqlserverInstanceDestroy, Steps: []resource.TestStep{ @@ -371,8 +370,6 @@ resource "tencentcloud_sqlserver_instance" "test" { const testAccSqlserverInstanceUpdate string = testAccSqlserverBasicInstanceNetwork + ` resource "tencentcloud_sqlserver_instance" "test" { name = "tf_sqlserver_instance_update" - availability_zone = local.az1 - charge_type = "POSTPAID_BY_HOUR" availability_zone = var.default_az charge_type = "POSTPAID_BY_HOUR" vpc_id = local.vpc_id diff --git a/tencentcloud/resource_tc_sqlserver_publish_subscribe_test.go b/tencentcloud/resource_tc_sqlserver_publish_subscribe_test.go index 4accc7a664..da98c8dee9 100644 --- a/tencentcloud/resource_tc_sqlserver_publish_subscribe_test.go +++ b/tencentcloud/resource_tc_sqlserver_publish_subscribe_test.go @@ -13,7 +13,7 @@ import ( func TestAccTencentCloudSqlserverPublishSubscribeResource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, + PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) }, Providers: testAccProviders, CheckDestroy: testAccCheckSqlserverPublishSubscribeDestroy, Steps: []resource.TestStep{ diff --git a/tencentcloud/resource_tc_sqlserver_readonly_instance_test.go b/tencentcloud/resource_tc_sqlserver_readonly_instance_test.go index 6cab50252e..15e080d152 100644 --- a/tencentcloud/resource_tc_sqlserver_readonly_instance_test.go +++ b/tencentcloud/resource_tc_sqlserver_readonly_instance_test.go @@ -15,7 +15,7 @@ var testReadonlySqlserverInstanceResourceKey = testReadonlySqlserverInstanceReso func TestAccTencentCloudReadonlySqlserverInstanceResource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, + PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) }, Providers: testAccProviders, CheckDestroy: testAccCheckReadonlySqlserverInstanceDestroy, Steps: []resource.TestStep{ diff --git a/tencentcloud/service_tencentcloud_sqlserver.go b/tencentcloud/service_tencentcloud_sqlserver.go index a86dfed6a4..5b03eb5c6a 100644 --- a/tencentcloud/service_tencentcloud_sqlserver.go +++ b/tencentcloud/service_tencentcloud_sqlserver.go @@ -175,8 +175,9 @@ func (me *SqlserverService) UpgradeSqlserverInstance(ctx context.Context, instan return err } + startPending := false //check status not expanding - errRet = resource.Retry(readRetryTimeout, func() *resource.RetryError { + errRet = resource.Retry(10*readRetryTimeout, func() *resource.RetryError { instance, has, err := me.DescribeSqlserverInstanceById(ctx, instanceId) if err != nil { return resource.NonRetryableError(errors.WithStack(err)) @@ -184,11 +185,13 @@ func (me *SqlserverService) UpgradeSqlserverInstance(ctx context.Context, instan if !has { return resource.NonRetryableError(fmt.Errorf("cannot find SQL Server instance %s", instanceId)) } - if int(*instance.Status) == 9 { + if *instance.Status != 2 { + startPending = true return resource.RetryableError(fmt.Errorf("expanding , SQL Server instance ID %s, status %d.... ", instanceId, *instance.Status)) - } else { - return nil + } else if !startPending { + return resource.RetryableError(fmt.Errorf("ready for expanding, SQL Server instance ID %s, status %d.... ", instanceId, *instance.Status)) } + return nil }) return @@ -1444,26 +1447,24 @@ func (me *SqlserverService) UpgradeSqlserverBasicInstance(ctx context.Context, i return err } - // prepaid expansion number of retries - retryCount := 0 + startPending := false + errRet = resource.Retry(10*readRetryTimeout, func() *resource.RetryError { instance, has, err := me.DescribeSqlserverInstanceById(ctx, instanceId) if err != nil { - return resource.NonRetryableError(errors.WithStack(err)) + return retryError(err) } if !has { return resource.NonRetryableError(fmt.Errorf("cannot find SQL Server basic instance %s", instanceId)) } // Status == 9, expanding - if int(*instance.Status) == 9 { - return resource.RetryableError(fmt.Errorf("expanding , SQL Server basic instance ID %s, status %d.... ", instanceId, *instance.Status)) - // After UpgradeDBInstance of the prepaid instance, the status does not immediately change to 9 and is still 2, so we need to query it again - } else if *instance.PayMode == 1 && int(*instance.Status) == 2 && retryCount < 2 { - retryCount++ - return resource.RetryableError(fmt.Errorf("expanding , SQL Server basic Prepaid instance ID %s, status %d.... ", instanceId, *instance.Status)) - } else { - return nil + if *instance.Status == 9 { + startPending = true + return resource.RetryableError(fmt.Errorf("expanding, SQL Server basic instance ID %s, status %d.... ", instanceId, *instance.Status)) + } else if !startPending && *instance.Status == 2 { + return resource.RetryableError(fmt.Errorf("expanding, SQL Server basic Prepaid instance ID %s, status %d.... ", instanceId, *instance.Status)) } + return nil }) return