diff --git a/.gitignore b/.gitignore index c7640abc8d..2dab422e73 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ export_env.sh .idea *.log *.exe +.terraform.lock.hcl .terraform/ terraform-provider-tencentcloud terraform-provider-qcloud diff --git a/tencentcloud/basic_test.go b/tencentcloud/basic_test.go index f880746d6d..c8531638ba 100644 --- a/tencentcloud/basic_test.go +++ b/tencentcloud/basic_test.go @@ -156,8 +156,38 @@ data "tencentcloud_instance_types" "default" { } ` +const defaultAzVariable = ` +variable "default_az" { + default = "ap-guangzhou-3" +} +` + +// default VPC/Subnet datasource +const defaultVpcSubnets = defaultAzVariable + ` + +data "tencentcloud_vpc_subnets" "gz3" { + availability_zone = var.default_az + is_default = true +} + +locals { + vpc_id = data.tencentcloud_vpc_subnets.gz3.instance_list.0.vpc_id + subnet_id = data.tencentcloud_vpc_subnets.gz3.instance_list.0.subnet_id +}` + +const defaultSecurityGroupData = ` +data "tencentcloud_security_groups" "internal" { + name = "default" +} + +locals { + # local.sg_id + sg_id = data.tencentcloud_security_groups.internal.security_groups.0.security_group_id +} +` + const ( - defaultMySQLName = "preset_mysql" + defaultMySQLName = "keep_preset_mysql" ) // ref with `local.mysql_id` @@ -179,13 +209,44 @@ locals { } ` +// SQLServer +const defaultSQLServerName = "keep-preset_sqlserver" +const defaultSQLServerDB = "keep_sqlserver_db" +const defaultSQLServerAccount = "keep_sqlserver_account" + const CommonPresetSQLServer = ` data "tencentcloud_sqlserver_instances" "sqlserver" { - project_id = "` + defaultProjectId + `" + name = "` + defaultSQLServerName + `" } locals { + # local.sqlserver_id sqlserver_id = data.tencentcloud_sqlserver_instances.sqlserver.instance_list.0.id + sqlserver_db = "` + defaultSQLServerDB + `" +} +` + +const CommonPresetSQLServerAccount = CommonPresetSQLServer + ` +data "tencentcloud_sqlserver_accounts" "test"{ + instance_id = local.sqlserver_id + name = "` + defaultSQLServerAccount + `" +} + +locals { + # local.sqlserver_id + sqlserver_account = data.tencentcloud_sqlserver_accounts.test.list.0.name +} +` + +const testAccSqlserverAZ = ` +data "tencentcloud_availability_zones_by_product" "zone" { + product = "sqlserver" +} + +locals { + # local.az, local.az1 + az = data.tencentcloud_availability_zones_by_product.zone.zones[0].name + az1 = data.tencentcloud_availability_zones_by_product.zone.zones[1].name } ` @@ -203,6 +264,7 @@ resource "tencentcloud_instance" "default" { subnet_id = var.subnet_id } ` +// End of SQLServer const defaultCVMName = "keep-cvm" const presetCVM = ` diff --git a/tencentcloud/data_source_tc_sqlserver_backups_test.go b/tencentcloud/data_source_tc_sqlserver_backups_test.go index 4609be4708..8996e71ea9 100644 --- a/tencentcloud/data_source_tc_sqlserver_backups_test.go +++ b/tencentcloud/data_source_tc_sqlserver_backups_test.go @@ -1,13 +1,17 @@ package tencentcloud import ( + "fmt" "testing" + "time" "github.com/hashicorp/terraform-plugin-sdk/helper/resource" ) var testDataSqlserverBackupsName = "data.tencentcloud_sqlserver_backups.test" +var now = time.Now().Format("2006-01-02 15:04:05") + func TestAccDataSourceTencentCloudSqlserverBackups(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ @@ -16,8 +20,9 @@ func TestAccDataSourceTencentCloudSqlserverBackups(t *testing.T) { CheckDestroy: testAccCheckLBDestroy, Steps: []resource.TestStep{ { - Config: testAccTencentCloudDataSqlserverBackupsBasic, + Config: testAccTencentCloudDataSqlserverBackupsBasic(), Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr(testDataSqlserverBackupsName, "end_time", now), resource.TestCheckResourceAttrSet(testDataSqlserverBackupsName, "list.0.start_time"), resource.TestCheckResourceAttrSet(testDataSqlserverBackupsName, "list.0.end_time"), resource.TestCheckResourceAttrSet(testDataSqlserverBackupsName, "list.0.file_name"), @@ -34,10 +39,13 @@ func TestAccDataSourceTencentCloudSqlserverBackups(t *testing.T) { }) } -const testAccTencentCloudDataSqlserverBackupsBasic = ` +func testAccTencentCloudDataSqlserverBackupsBasic() string { + return fmt.Sprintf(` +%s data "tencentcloud_sqlserver_backups" "test"{ - instance_id = "mssql-ds1xhnt9" + instance_id = local.sqlserver_id start_time = "2020-06-17 00:00:00" - end_time = "2022-06-22 00:00:00" + end_time = "%s" +} +`, CommonPresetSQLServer, now) } -` diff --git a/tencentcloud/data_source_tc_sqlserver_basic_instances_test.go b/tencentcloud/data_source_tc_sqlserver_basic_instances_test.go index d761ff9640..472c5ebdfd 100644 --- a/tencentcloud/data_source_tc_sqlserver_basic_instances_test.go +++ b/tencentcloud/data_source_tc_sqlserver_basic_instances_test.go @@ -43,7 +43,7 @@ func TestAccDataSourceTencentCloudSqlserverBasicInstances(t *testing.T) { }) } -const testAccTencentCloudDataSqlserverBasicInstancesBasic = testAccSqlserverInstanceBasic + ` +const testAccTencentCloudDataSqlserverBasicInstancesBasic = testAccSqlserverAZ + ` resource "tencentcloud_vpc" "foo" { name = "tf-sqlserver-vpc" diff --git a/tencentcloud/data_source_tc_sqlserver_dbs_test.go b/tencentcloud/data_source_tc_sqlserver_dbs_test.go index 0526c4d3f8..6621cecbea 100644 --- a/tencentcloud/data_source_tc_sqlserver_dbs_test.go +++ b/tencentcloud/data_source_tc_sqlserver_dbs_test.go @@ -28,8 +28,8 @@ func TestAccDataSourceTencentCloudSqlserverDBs_basic(t *testing.T) { }) } -const TestAccDataSourceTencentCloudSqlserverDB = ` +const TestAccDataSourceTencentCloudSqlserverDB = CommonPresetSQLServer + ` data "tencentcloud_sqlserver_dbs" "foo" { - instance_id = "mssql-ds1xhnt9" + instance_id = local.sqlserver_id } ` diff --git a/tencentcloud/data_source_tc_sqlserver_publish_subscribes_test.go b/tencentcloud/data_source_tc_sqlserver_publish_subscribes_test.go index 018d289432..57dcc3fefa 100644 --- a/tencentcloud/data_source_tc_sqlserver_publish_subscribes_test.go +++ b/tencentcloud/data_source_tc_sqlserver_publish_subscribes_test.go @@ -34,55 +34,44 @@ func TestAccTencentCloudSqlserverPublishSubscribeDataSource(t *testing.T) { }) } -const testAccTencentCloudSqlServerPublishSubscribeDataSourceConfig = testAccSqlserverInstanceBasic + ` -resource "tencentcloud_security_group" "foo" { - name = "test-sg-tf" -} +const testAccTencentCloudSqlServerPublishSubscribeDataSourceConfig = defaultVpcSubnets + defaultSecurityGroupData + CommonPresetSQLServer + ` resource "tencentcloud_sqlserver_instance" "publish_instance" { name = "tf_sqlserver_publish_instance" - availability_zone = var.availability_zone - charge_type = "POSTPAID_BY_HOUR" - vpc_id = "` + defaultVpcId + `" - subnet_id = "` + defaultSubnetId + `" + availability_zone = var.default_az + charge_type = "POSTPAID_BY_HOUR" + vpc_id = local.vpc_id + subnet_id = local.subnet_id project_id = 0 memory = 2 storage = 10 maintenance_week_set = [1,2,3] maintenance_start_time= "09:00" maintenance_time_span = 3 - security_groups = [tencentcloud_security_group.foo.name] + security_groups = [local.sg_id] } resource "tencentcloud_sqlserver_instance" "subscribe_instance" { name = "tf_sqlserver_subscribe_instance" - availability_zone = var.availability_zone + availability_zone = var.default_az charge_type = "POSTPAID_BY_HOUR" - vpc_id = "` + defaultVpcId + `" - subnet_id = "` + defaultSubnetId + `" - project_id = 0 + vpc_id = local.vpc_id + subnet_id = local.subnet_id memory = 2 storage = 10 maintenance_week_set = [1,2,3] maintenance_start_time = "09:00" maintenance_time_span = 3 - security_groups = [tencentcloud_security_group.foo.name] -} - -resource "tencentcloud_sqlserver_db" "test_publish_subscribe" { - instance_id = tencentcloud_sqlserver_instance.publish_instance.id - name = "test111" - charset = "Chinese_PRC_BIN" - remark = "testACC-remark" + security_groups = [local.sg_id] } resource "tencentcloud_sqlserver_publish_subscribe" "example" { - publish_instance_id = tencentcloud_sqlserver_instance.publish_instance.id + publish_instance_id = local.sqlserver_id subscribe_instance_id = tencentcloud_sqlserver_instance.subscribe_instance.id publish_subscribe_name = "example" delete_subscribe_db = false database_tuples { - publish_database = tencentcloud_sqlserver_db.test_publish_subscribe.name + publish_database = local.sqlserver_db } } diff --git a/tencentcloud/data_source_tc_sqlserver_readonly_groups_test.go b/tencentcloud/data_source_tc_sqlserver_readonly_groups_test.go index 487ec15ba4..fa9bbb5454 100644 --- a/tencentcloud/data_source_tc_sqlserver_readonly_groups_test.go +++ b/tencentcloud/data_source_tc_sqlserver_readonly_groups_test.go @@ -35,8 +35,8 @@ func TestAccDataSourceTencentCloudSqlserverReadonlyGroups(t *testing.T) { }) } -const testAccTencentCloudDataSqlserverReadonlyGroupsBasic = ` +const testAccTencentCloudDataSqlserverReadonlyGroupsBasic = CommonPresetSQLServer + ` data "tencentcloud_sqlserver_readonly_groups" "test"{ - master_instance_id = "mssql-ds1xhnt9" + master_instance_id = local.sqlserver_id } ` diff --git a/tencentcloud/extension_sqlserver.go b/tencentcloud/extension_sqlserver.go index 60bdeba5f4..02a748b6d8 100644 --- a/tencentcloud/extension_sqlserver.go +++ b/tencentcloud/extension_sqlserver.go @@ -42,19 +42,40 @@ const ( ) const ( - SQLSERVER_DB_CREATING = 1 - SQLSERVER_DB_RUNNING = 2 - SQLSERVER_DB_MODIFYING = 3 - SQLSERVER_DB_DELETING = -1 - SQLSERVER_DB_UPGRADING = 9 + SQLSERVER_DB_CREATING = 1 + SQLSERVER_DB_RUNNING = 2 + SQLSERVER_DB_MODIFYING = 3 + SQLSERVER_DB_DELETING = -1 + SQLSERVER_DB_UPGRADING = 9 + SQLSERVER_DB_SWITCH_PENDING = 13 // 实例修改中且待切换 + SQLSERVER_DB_PUBSUB_CREATING = 14 // 订阅发布创建中 + SQLSERVER_DB_PUBSUB_MODIFYING = 15 // 订阅发布修改中 + SQLSERVER_DB_SWITCHING = 16 // 实例修改中且切换中 + SQLSERVER_DB_RO_CREATING = 17 // 创建RO副本中 ) var SQLSERVER_DB_STATUS = map[int64]string{ - SQLSERVER_DB_CREATING: "creating", - SQLSERVER_DB_RUNNING: "running", - SQLSERVER_DB_MODIFYING: "modifying", - SQLSERVER_DB_DELETING: "deleting", - SQLSERVER_DB_UPGRADING: "upgrading", + SQLSERVER_DB_CREATING: "creating", + SQLSERVER_DB_RUNNING: "running", + SQLSERVER_DB_MODIFYING: "modifying", + SQLSERVER_DB_DELETING: "deleting", + SQLSERVER_DB_UPGRADING: "upgrading", + SQLSERVER_DB_SWITCH_PENDING: "switch pending", + SQLSERVER_DB_PUBSUB_CREATING: "pubsub creating", + SQLSERVER_DB_PUBSUB_MODIFYING: "pubsub modifying", + SQLSERVER_DB_SWITCHING: "switching", + SQLSERVER_DB_RO_CREATING: "ro creating", +} + +var SQLSERVER_STATUS_WAITING = []int{ + SQLSERVER_DB_CREATING, + SQLSERVER_DB_MODIFYING, + SQLSERVER_DB_UPGRADING, + SQLSERVER_DB_SWITCH_PENDING, + SQLSERVER_DB_PUBSUB_CREATING, + SQLSERVER_DB_PUBSUB_MODIFYING, + SQLSERVER_DB_SWITCHING, + SQLSERVER_DB_RO_CREATING, } const ( diff --git a/tencentcloud/resource_tc_sqlserver_account_db_attachment_test.go b/tencentcloud/resource_tc_sqlserver_account_db_attachment_test.go index 8317251a92..adee09f6ae 100644 --- a/tencentcloud/resource_tc_sqlserver_account_db_attachment_test.go +++ b/tencentcloud/resource_tc_sqlserver_account_db_attachment_test.go @@ -25,8 +25,8 @@ func TestAccTencentCloudSqlserverAccountDBAttachmentResource(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckSqlserverAccountDBAttachmentExists(testSqlserverAccountDBAttachmentResourceKey), resource.TestCheckResourceAttrSet(testSqlserverAccountDBAttachmentResourceKey, "instance_id"), - resource.TestCheckResourceAttr(testSqlserverAccountDBAttachmentResourceKey, "account_name", "tf_sqlserver_account_attach"), - resource.TestCheckResourceAttr(testSqlserverAccountDBAttachmentResourceKey, "db_name", "test111"), + resource.TestCheckResourceAttr(testSqlserverAccountDBAttachmentResourceKey, "account_name", defaultSQLServerAccount), + resource.TestCheckResourceAttr(testSqlserverAccountDBAttachmentResourceKey, "db_name", defaultSQLServerDB), resource.TestCheckResourceAttr(testSqlserverAccountDBAttachmentResourceKey, "privilege", "ReadOnly"), ), }, @@ -35,14 +35,13 @@ func TestAccTencentCloudSqlserverAccountDBAttachmentResource(t *testing.T) { ImportState: true, ImportStateVerify: true, }, - { Config: testAccSqlserverAccountDBAttachmentUpdate, Check: resource.ComposeTestCheckFunc( testAccCheckSqlserverAccountDBAttachmentExists(testSqlserverAccountDBAttachmentResourceKey), resource.TestCheckResourceAttrSet(testSqlserverAccountDBAttachmentResourceKey, "instance_id"), - resource.TestCheckResourceAttr(testSqlserverAccountDBAttachmentResourceKey, "account_name", "tf_sqlserver_account_attach"), - resource.TestCheckResourceAttr(testSqlserverAccountDBAttachmentResourceKey, "db_name", "test111"), + resource.TestCheckResourceAttr(testSqlserverAccountDBAttachmentResourceKey, "account_name", defaultSQLServerAccount), + resource.TestCheckResourceAttr(testSqlserverAccountDBAttachmentResourceKey, "db_name", defaultSQLServerDB), resource.TestCheckResourceAttr(testSqlserverAccountDBAttachmentResourceKey, "privilege", "ReadWrite"), ), }, @@ -117,46 +116,20 @@ func testAccCheckSqlserverAccountDBAttachmentExists(n string) resource.TestCheck } } -const testAccSqlserverAccountDBAttachment string = CommonPresetSQLServer + ` -resource "tencentcloud_sqlserver_account" "test" { - instance_id = local.sqlserver_id - name = "tf_sqlserver_account_attach" - password = "testt123" -} - -resource "tencentcloud_sqlserver_db" "test" { - instance_id = local.sqlserver_id - name = "test111" - charset = "Chinese_PRC_BIN" - remark = "testACC-remark" -} - +const testAccSqlserverAccountDBAttachment string = CommonPresetSQLServerAccount + ` resource "tencentcloud_sqlserver_account_db_attachment" "test" { instance_id = local.sqlserver_id - account_name = tencentcloud_sqlserver_account.test.name - db_name = tencentcloud_sqlserver_db.test.name + account_name = local.sqlserver_account + db_name = local.sqlserver_db privilege = "ReadOnly" } ` -const testAccSqlserverAccountDBAttachmentUpdate string = CommonPresetSQLServer + ` -resource "tencentcloud_sqlserver_account" "test" { - instance_id = local.sqlserver_id - name = "tf_sqlserver_account_attach" - password = "testt123" -} - -resource "tencentcloud_sqlserver_db" "test" { - instance_id = local.sqlserver_id - name = "test111" - charset = "Chinese_PRC_BIN" - remark = "testACC-remark" -} - +const testAccSqlserverAccountDBAttachmentUpdate string = CommonPresetSQLServerAccount + ` resource "tencentcloud_sqlserver_account_db_attachment" "test" { instance_id = local.sqlserver_id - account_name = tencentcloud_sqlserver_account.test.name - db_name = tencentcloud_sqlserver_db.test.name + account_name = local.sqlserver_account + db_name = local.sqlserver_db privilege = "ReadWrite" } ` diff --git a/tencentcloud/resource_tc_sqlserver_account_test.go b/tencentcloud/resource_tc_sqlserver_account_test.go index 9873441d6f..402b0e5b1e 100644 --- a/tencentcloud/resource_tc_sqlserver_account_test.go +++ b/tencentcloud/resource_tc_sqlserver_account_test.go @@ -5,6 +5,7 @@ import ( "fmt" "strings" "testing" + "time" "github.com/hashicorp/terraform-plugin-sdk/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/terraform" @@ -13,6 +14,53 @@ import ( var testSqlserverAccountResourceName = "tencentcloud_sqlserver_account" var testSqlserverAccountResourceKey = testSqlserverAccountResourceName + ".test" +func init() { + // go test -v ./tencentcloud -sweep=ap-guangzhou -sweep-run=tencentcloud_sqlserver_account + resource.AddTestSweepers("tencentcloud_sqlserver_account", &resource.Sweeper{ + Name: "tencentcloud_sqlserver_account", + F: func(r string) error { + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) + cli, _ := sharedClientForRegion(r) + client := cli.(*TencentCloudClient).apiV3Conn + + service := SqlserverService{client} + + db, err := service.DescribeSqlserverInstances(ctx, "", defaultSQLServerName, -1, "", "", -1) + + if err != nil { + return err + } + + if len(db) == 0 { + return fmt.Errorf("%s not exists", defaultSQLServerName) + } + + instanceId := *db[0].InstanceId + + accounts, err := service.DescribeSqlserverAccounts(ctx, instanceId) + + for i := range accounts { + account := accounts[i] + name := *account.Name + created, err := time.Parse("2006-01-02 15:04:05", *account.CreateTime) + if err != nil { + created = time.Time{} + } + if isResourcePersist(name, &created) { + continue + } + err = service.DeleteSqlserverAccount(ctx, instanceId, name) + if err != nil { + continue + } + } + + return nil + }, + }) +} + func TestAccTencentCloudSqlserverAccountResource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ diff --git a/tencentcloud/resource_tc_sqlserver_basic_instance.go b/tencentcloud/resource_tc_sqlserver_basic_instance.go index fee854550a..2378c32a4f 100644 --- a/tencentcloud/resource_tc_sqlserver_basic_instance.go +++ b/tencentcloud/resource_tc_sqlserver_basic_instance.go @@ -453,6 +453,24 @@ 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 bde42bc0f5..71ccb8e4e2 100644 --- a/tencentcloud/resource_tc_sqlserver_basic_instance_test.go +++ b/tencentcloud/resource_tc_sqlserver_basic_instance_test.go @@ -40,7 +40,6 @@ func TestAccTencentCloudSqlserverBasicInstanceResource(t *testing.T) { resource.TestCheckResourceAttrSet(testSqlserverBasicInstanceResourceKey, "status"), resource.TestCheckResourceAttrSet(testSqlserverBasicInstanceResourceKey, "auto_renew"), resource.TestCheckResourceAttr(testSqlserverBasicInstanceResourceKey, "security_groups.#", "1"), - resource.TestCheckResourceAttr(testSqlserverBasicInstanceResourceKey, "tags.test", "test"), resource.TestCheckResourceAttr(testSqlserverBasicInstanceResourceKey, "maintenance_start_time", "09:00"), resource.TestCheckResourceAttr(testSqlserverBasicInstanceResourceKey, "maintenance_time_span", "3"), resource.TestCheckResourceAttr(testSqlserverBasicInstanceResourceKey, "maintenance_week_set.#", "3"), @@ -58,9 +57,6 @@ func TestAccTencentCloudSqlserverBasicInstanceResource(t *testing.T) { resource.TestCheckResourceAttr(testSqlserverBasicInstanceResourceKey, "maintenance_start_time", "08:00"), resource.TestCheckResourceAttr(testSqlserverBasicInstanceResourceKey, "maintenance_time_span", "4"), resource.TestCheckResourceAttr(testSqlserverBasicInstanceResourceKey, "maintenance_week_set.#", "4"), - resource.TestCheckResourceAttr(testSqlserverBasicInstanceResourceKey, "memory", "8"), - resource.TestCheckResourceAttr(testSqlserverBasicInstanceResourceKey, "storage", "100"), - resource.TestCheckResourceAttr(testSqlserverBasicInstanceResourceKey, "cpu", "2"), resource.TestCheckResourceAttr(testSqlserverBasicInstanceResourceKey, "machine_type", "CLOUD_PREMIUM"), resource.TestCheckResourceAttrSet(testSqlserverBasicInstanceResourceKey, "create_time"), resource.TestCheckResourceAttr(testSqlserverBasicInstanceResourceKey, "project_id", "0"), @@ -69,8 +65,6 @@ func TestAccTencentCloudSqlserverBasicInstanceResource(t *testing.T) { resource.TestCheckResourceAttrSet(testSqlserverBasicInstanceResourceKey, "vport"), resource.TestCheckResourceAttrSet(testSqlserverBasicInstanceResourceKey, "status"), resource.TestCheckResourceAttr(testSqlserverBasicInstanceResourceKey, "security_groups.#", "1"), - resource.TestCheckNoResourceAttr(testSqlserverBasicInstanceResourceKey, "tags.test"), - resource.TestCheckResourceAttr(testSqlserverBasicInstanceResourceKey, "tags.abc", "abc"), ), }, { @@ -125,33 +119,16 @@ func testAccCheckSqlserverBasicInstanceExists(n string) resource.TestCheckFunc { } } -const testAccSqlserverBasicInstanceBasic = ` -variable "availability_zone"{ - default = "ap-guangzhou-3" -} - -resource "tencentcloud_vpc" "foo" { - name = "tf-sqlserver-vpc" - cidr_block = "10.0.0.0/16" -} - -resource "tencentcloud_subnet" "foo" { - availability_zone = "ap-guangzhou-3" - name = "tf-sqlserver-subnet" - vpc_id = tencentcloud_vpc.foo.id - cidr_block = "10.0.0.0/16" - is_multicast = false -} -` +const testAccSqlserverBasicInstanceBasic = defaultVpcSubnets + defaultSecurityGroupData const testAccSqlserverBasicInstancePostpaid string = testAccSqlserverBasicInstanceBasic + ` resource "tencentcloud_sqlserver_basic_instance" "test" { name = "tf_sqlserver_basic_instance" - availability_zone = var.availability_zone + availability_zone = var.default_az charge_type = "POSTPAID_BY_HOUR" - vpc_id = tencentcloud_vpc.foo.id - subnet_id = tencentcloud_subnet.foo.id - security_groups = ["` + defaultSecurityGroup + `"] + vpc_id = local.vpc_id + subnet_id = local.subnet_id + security_groups = [local.sg_id] project_id = 0 memory = 4 storage = 20 @@ -160,32 +137,24 @@ resource "tencentcloud_sqlserver_basic_instance" "test" { maintenance_week_set = [1,2,3] maintenance_start_time = "09:00" maintenance_time_span = 3 - - tags = { - "test" = "test" - } } ` const testAccSqlserverBasicInstancePostpaidUpdate string = testAccSqlserverBasicInstanceBasic + ` resource "tencentcloud_sqlserver_basic_instance" "test" { name = "tf_sqlserver_basic_instance_update" - availability_zone = var.availability_zone + availability_zone = var.default_az charge_type = "POSTPAID_BY_HOUR" - vpc_id = tencentcloud_vpc.foo.id - subnet_id = tencentcloud_subnet.foo.id - security_groups = ["` + defaultSecurityGroup + `"] + vpc_id = local.vpc_id + subnet_id = local.subnet_id + security_groups = [local.sg_id] project_id = 0 - memory = 8 - storage = 100 + memory = 4 + storage = 20 cpu = 2 machine_type = "CLOUD_PREMIUM" maintenance_week_set = [1,2,3,4] maintenance_start_time = "08:00" maintenance_time_span = 4 - - tags = { - abc = "abc" - } } ` diff --git a/tencentcloud/resource_tc_sqlserver_instance.go b/tencentcloud/resource_tc_sqlserver_instance.go index 384d437bfa..c0b84e35cb 100644 --- a/tencentcloud/resource_tc_sqlserver_instance.go +++ b/tencentcloud/resource_tc_sqlserver_instance.go @@ -404,12 +404,16 @@ func sqlServerAllInstanceRoleUpdate(ctx context.Context, d *schema.ResourceData, } //specAsExpected := int(*instance.Memory) != memory && int(*instance.Storage) != storage - if *instance.Status == SQLSERVER_DB_UPGRADING { + 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 e449e3c998..b3430126f6 100644 --- a/tencentcloud/resource_tc_sqlserver_instance_test.go +++ b/tencentcloud/resource_tc_sqlserver_instance_test.go @@ -17,6 +17,7 @@ var testSqlserverInstanceResourceName = "tencentcloud_sqlserver_instance" var testSqlserverInstanceResourceKey = testSqlserverInstanceResourceName + ".test" func init() { + // go test -v ./tencentcloud -sweep=ap-guangzhou -sweep-run=tencentcloud_sqlserver_instance resource.AddTestSweepers("tencentcloud_sqlserver_instance", &resource.Sweeper{ Name: "tencentcloud_sqlserver_instance", F: func(r string) error { @@ -177,7 +178,7 @@ func TestAccTencentCloudSqlserverInstanceResource(t *testing.T) { ResourceName: testSqlserverInstanceResourceKey, ImportState: true, ImportStateVerify: true, - ImportStateVerifyIgnore: []string{"multi_zones"}, + ImportStateVerifyIgnore: []string{"multi_zones", "auto_voucher"}, }, { @@ -193,7 +194,6 @@ func TestAccTencentCloudSqlserverInstanceResource(t *testing.T) { resource.TestCheckResourceAttr(testSqlserverInstanceResourceKey, "maintenance_time_span", "4"), resource.TestCheckResourceAttr(testSqlserverInstanceResourceKey, "storage", "20"), resource.TestCheckResourceAttrSet(testSqlserverInstanceResourceKey, "create_time"), - resource.TestCheckResourceAttr(testSqlserverInstanceResourceKey, "project_id", defaultProjectId), resource.TestCheckResourceAttrSet(testSqlserverInstanceResourceKey, "availability_zone"), resource.TestCheckResourceAttrSet(testSqlserverInstanceResourceKey, "vip"), resource.TestCheckResourceAttrSet(testSqlserverInstanceResourceKey, "vport"), @@ -324,16 +324,7 @@ func testAccCheckSqlserverInstanceExists(n string) resource.TestCheckFunc { } } -const testAccSqlserverInstanceBasic = ` -data "tencentcloud_availability_zones_by_product" "zone" { - product = "sqlserver" -} - -locals { - az = data.tencentcloud_availability_zones_by_product.zone.zones[0].name - az1 = data.tencentcloud_availability_zones_by_product.zone.zones[1].name -} -` +const testAccSqlserverBasicInstanceNetwork = defaultVpcSubnets + defaultSecurityGroupData const testAccSqlserverInstanceBasicPrepaid = ` locals { @@ -356,20 +347,20 @@ data "tencentcloud_subnet" "sub" { } ` -const testAccSqlserverInstance string = testAccSqlserverInstanceBasic + ` +const testAccSqlserverInstance string = testAccSqlserverBasicInstanceNetwork + ` resource "tencentcloud_sqlserver_instance" "test" { name = "tf_sqlserver_instance" - availability_zone = local.az1 + availability_zone = var.default_az charge_type = "POSTPAID_BY_HOUR" - vpc_id = "` + defaultVpcId + `" - subnet_id = "` + defaultSubnetId + `" + vpc_id = local.vpc_id + subnet_id = local.subnet_id + security_groups = [local.sg_id] project_id = 0 memory = 2 storage = 10 maintenance_week_set = [1,2,3] maintenance_start_time = "09:00" maintenance_time_span = 3 - security_groups = ["` + defaultSecurityGroup + `"] tags = { "test" = "test" @@ -377,14 +368,16 @@ resource "tencentcloud_sqlserver_instance" "test" { } ` -const testAccSqlserverInstanceUpdate string = testAccSqlserverInstanceBasic + ` +const testAccSqlserverInstanceUpdate string = testAccSqlserverBasicInstanceNetwork + ` resource "tencentcloud_sqlserver_instance" "test" { name = "tf_sqlserver_instance_update" availability_zone = local.az1 charge_type = "POSTPAID_BY_HOUR" - vpc_id = "` + defaultVpcId + `" - subnet_id = "` + defaultSubnetId + `" - project_id = ` + defaultProjectId + ` + availability_zone = var.default_az + charge_type = "POSTPAID_BY_HOUR" + vpc_id = local.vpc_id + subnet_id = local.subnet_id + security_groups = [local.sg_id] memory = 4 storage = 20 maintenance_week_set = [2,3,4] @@ -432,14 +425,16 @@ resource "tencentcloud_sqlserver_instance" "test" { } ` -const testAccSqlserverInstanceMultiCluster string = testAccSqlserverInstanceBasic + ` +const testAccSqlserverInstanceMultiCluster string = testAccSqlserverAZ + ` resource "tencentcloud_sqlserver_instance" "test" { name = "tf_sqlserver_instance_multi" - availability_zone = local.az1 - charge_type = "POSTPAID_BY_HOUR" engine_version = "2017" - vpc_id = "` + defaultVpcId + `" - subnet_id = "` + defaultSubnetId + `" + charge_type = "POSTPAID_BY_HOUR" + availability_zone = var.default_az + charge_type = "POSTPAID_BY_HOUR" + vpc_id = local.vpc_id + subnet_id = local.subnet_id + security_groups = [local.sg_id] project_id = 0 memory = 2 storage = 10 diff --git a/tencentcloud/resource_tc_sqlserver_publish_subscribe_test.go b/tencentcloud/resource_tc_sqlserver_publish_subscribe_test.go index ad3f099477..4accc7a664 100644 --- a/tencentcloud/resource_tc_sqlserver_publish_subscribe_test.go +++ b/tencentcloud/resource_tc_sqlserver_publish_subscribe_test.go @@ -97,32 +97,28 @@ func testAccCheckSqlserverPublishSubscribeExists(n string) resource.TestCheckFun } } -const testAccSqlserverPublishSubscribe_basic = testAccSqlserverInstanceBasic + ` -resource "tencentcloud_security_group" "foo" { - name = "test-sg-tf" -} - +const testAccSqlserverPublishSubscribe_basic = defaultVpcSubnets + defaultSecurityGroupData + ` resource "tencentcloud_sqlserver_instance" "publish_instance" { name = "tf_sqlserver_publish_instance" - availability_zone = var.availability_zone + availability_zone = var.default_az charge_type = "POSTPAID_BY_HOUR" - vpc_id = "` + defaultVpcId + `" - subnet_id = "` + defaultSubnetId + `" + vpc_id = local.vpc_id + subnet_id = local.subnet_id project_id = 0 memory = 2 storage = 10 maintenance_week_set = [1,2,3] maintenance_start_time = "09:00" maintenance_time_span = 3 - security_groups = [tencentcloud_security_group.foo.name] + security_groups = [local.sg_id] } resource "tencentcloud_sqlserver_instance" "subscribe_instance" { name = "tf_sqlserver_subscribe_instance" - availability_zone = var.availability_zone + availability_zone = var.default_az charge_type = "POSTPAID_BY_HOUR" - vpc_id = "` + defaultVpcId + `" - subnet_id = "` + defaultSubnetId + `" + vpc_id = local.vpc_id + subnet_id = local.subnet_id project_id = 0 memory = 2 storage = 10 @@ -149,13 +145,13 @@ resource "tencentcloud_sqlserver_publish_subscribe" "example" { } }` -const testAccSqlserverPublishSubscribe_basic_update_name = testAccSqlserverInstanceBasic + ` +const testAccSqlserverPublishSubscribe_basic_update_name = testAccSqlserverAZ + defaultSecurityGroupData + ` resource "tencentcloud_sqlserver_instance" "publish_instance" { name = "tf_sqlserver_publish_instance" - availability_zone = var.availability_zone - charge_type = "POSTPAID_BY_HOUR" - vpc_id = "` + defaultVpcId + `" - subnet_id = "` + defaultSubnetId + `" + availability_zone = var.default_az + charge_type = "POSTPAID_BY_HOUR" + vpc_id = local.vpc_id + subnet_id = local.subnet_id project_id = 0 memory = 2 storage = 10 @@ -167,10 +163,10 @@ resource "tencentcloud_sqlserver_instance" "publish_instance" { resource "tencentcloud_sqlserver_instance" "subscribe_instance" { name = "tf_sqlserver_subscribe_instance" - availability_zone = var.availability_zone - charge_type = "POSTPAID_BY_HOUR" - vpc_id = "` + defaultVpcId + `" - subnet_id = "` + defaultSubnetId + `" + availability_zone = var.default_az + charge_type = "POSTPAID_BY_HOUR" + vpc_id = local.vpc_id + subnet_id = local.subnet_id project_id = 0 memory = 2 storage = 10 diff --git a/tencentcloud/resource_tc_sqlserver_readonly_instance_test.go b/tencentcloud/resource_tc_sqlserver_readonly_instance_test.go index 1b0e577a21..6cab50252e 100644 --- a/tencentcloud/resource_tc_sqlserver_readonly_instance_test.go +++ b/tencentcloud/resource_tc_sqlserver_readonly_instance_test.go @@ -119,7 +119,7 @@ func testAccCheckReadonlySqlserverInstanceExists(n string) resource.TestCheckFun } } -const testAccReadonlySqlserverInstance string = testAccSqlserverInstanceBasic + ` +const testAccReadonlySqlserverInstance string = testAccSqlserverAZ + ` resource "tencentcloud_sqlserver_instance" "test" { name = "tf_sqlserver_instance_multi" availability_zone = "ap-guangzhou-2" @@ -156,7 +156,7 @@ resource "tencentcloud_sqlserver_readonly_instance" "test" { } ` -const testAccReadonlySqlserverInstanceUpdate string = testAccSqlserverInstanceBasic + ` +const testAccReadonlySqlserverInstanceUpdate string = testAccSqlserverAZ + ` resource = tencentcloud_sqlserver_instance" "test" { name = "tf_sqlserver_instance_multi" availability_zone = "ap-guangzhou-2"