Skip to content

fix(dts): [122437920] Fix the issue where resources cannot be deleted correctly #3230

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Mar 21, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .changelog/3230.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
```release-note:enhancement
resource/tencentcloud_dts_migrate_service: Optimize deletion logic
```

```release-note:enhancement
resource/tencentcloud_dts_sync_job: Optimize deletion logic
```

```release-note:enhancement
resource/tencentcloud_dts_sync_job: Optimize update logic
```
206 changes: 105 additions & 101 deletions tencentcloud/services/dts/resource_tc_dts_migrate_job.md
Original file line number Diff line number Diff line change
@@ -1,121 +1,125 @@
Provides a resource to create a dts migrate_job
Provides a resource to create a DTS migrate job

Example Usage

```hcl
resource "tencentcloud_cynosdb_cluster" "foo" {
available_zone = var.availability_zone
vpc_id = local.vpc_id
subnet_id = local.subnet_id
db_type = "MYSQL"
db_version = "5.7"
storage_limit = 1000
cluster_name = "tf-cynosdb-mysql"
password = "cynos@123"
instance_maintain_duration = 3600
instance_maintain_start_time = 10800
instance_maintain_weekdays = [
"Fri",
"Mon",
"Sat",
"Sun",
"Thu",
"Wed",
"Tue",
]
resource "tencentcloud_mysql_instance" "example" {
instance_name = "tf-example"
internet_service = 1
engine_version = "5.7"
charge_type = "POSTPAID"
root_password = "PassWord@123"
slave_deploy_mode = 0
slave_sync_mode = 1
availability_zone = "ap-guangzhou-7"
mem_size = 128000
volume_size = 250
vpc_id = "vpc-i5yyodl9"
subnet_id = "subnet-hhi88a58"
intranet_port = 3306
security_groups = ["sg-e6a8xxib"]
parameters = {
character_set_server = "utf8"
max_connections = "1000"
}
tags = {
createBy = "Terraform"
}
}

instance_cpu_core = 1
instance_memory_size = 2
param_items {
name = "character_set_server"
current_value = "utf8"
}
param_items {
name = "time_zone"
current_value = "+09:00"
}
param_items {
name = "lower_case_table_names"
current_value = "1"
}
resource "tencentcloud_cynosdb_cluster" "example" {
cluster_name = "tf-example"
db_mode = "NORMAL"
db_type = "MYSQL"
db_version = "5.7"
port = 3306
password = "Password@123"
force_delete = true
available_zone = "ap-guangzhou-6"
slave_zone = "ap-guangzhou-7"
vpc_id = "vpc-i5yyodl9"
subnet_id = "subnet-hhi88a58"
instance_cpu_core = 2
instance_memory_size = 4
instance_maintain_duration = 7200
instance_maintain_start_time = 3600
instance_maintain_weekdays = [
"Fri",
"Mon",
"Sat",
"Sun",
"Thu",
"Wed",
"Tue",
]

force_delete = true
rw_group_sg = ["sg-e6a8xxib"]
ro_group_sg = ["sg-e6a8xxib"]
}

rw_group_sg = [
local.sg_id
]
ro_group_sg = [
local.sg_id
]
prarm_template_id = var.my_param_template
resource "tencentcloud_dts_migrate_service" "example" {
src_database_type = "mysql"
dst_database_type = "cynosdbmysql"
src_region = "ap-guangzhou"
dst_region = "ap-guangzhou"
instance_class = "small"
job_name = "tf-example"
tags {
tag_key = "createBy"
tag_value = "Terraform"
}
}

resource "tencentcloud_dts_migrate_service" "service" {
src_database_type = "mysql"
dst_database_type = "cynosdbmysql"
src_region = "ap-guangzhou"
dst_region = "ap-guangzhou"
instance_class = "small"
job_name = "tf_test_migration_service_1"
tags {
tag_key = "aaa"
tag_value = "bbb"
}
resource "tencentcloud_dts_migrate_job" "example" {
service_id = tencentcloud_dts_migrate_service.example.id
run_mode = "immediate"
auto_retry_time_range_minutes = 0
migrate_option {
database_table {
object_mode = "partial"
databases {
db_name = "db_name"
db_mode = "partial"
table_mode = "partial"
tables {
table_name = "table_name"
new_table_name = "new_table_name"
table_edit_mode = "rename"
}
}
}
}

resource "tencentcloud_dts_migrate_job" "job" {
service_id = tencentcloud_dts_migrate_service.service.id
run_mode = "immediate"
migrate_option {
database_table {
object_mode = "partial"
databases {
db_name = "tf_ci_test"
db_mode = "partial"
table_mode = "partial"
tables {
table_name = "test"
new_table_name = "test_%s"
table_edit_mode = "rename"
}
}
}
}
src_info {
region = "ap-guangzhou"
access_type = "cdb"
database_type = "mysql"
node_type = "simple"
info {
user = "user_name"
password = "your_pw"
instance_id = "cdb-fitq5t9h"
}

}
dst_info {
region = "ap-guangzhou"
access_type = "cdb"
database_type = "cynosdbmysql"
node_type = "simple"
info {
user = "user_name"
password = "your_pw"
instance_id = tencentcloud_cynosdb_cluster.foo.id
}
}
auto_retry_time_range_minutes = 0
}
src_info {
region = "ap-guangzhou"
access_type = "cdb"
database_type = "mysql"
node_type = "simple"
info {
user = "root"
password = "Password@123"
instance_id = tencentcloud_mysql_instance.example.id
}
}

resource "tencentcloud_dts_migrate_job_start_operation" "start"{
job_id = tencentcloud_dts_migrate_job.job.id
dst_info {
region = "ap-guangzhou"
access_type = "cdb"
database_type = "cynosdbmysql"
node_type = "simple"
info {
user = "root"
password = "Password@123"
instance_id = tencentcloud_cynosdb_cluster.example.id
}
}
}
```

Import

dts migrate_job can be imported using the id, e.g.
DTS migrate job can be imported using the id, e.g.

```
terraform import tencentcloud_dts_migrate_job.migrate_job migrate_config_id
terraform import tencentcloud_dts_migrate_job.example dts-iy98oxba
```
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
Provides a resource to create a dts migrate_job_resume_operation
Provides a resource to create a DTS migrate job resume operation

Example Usage

```hcl
resource "tencentcloud_dts_migrate_job_resume_operation" "resume" {
job_id = "job_id"
resume_option = "normal"
resource "tencentcloud_dts_migrate_job_resume_operation" "example" {
job_id = "dts-puwyj5uy"
resume_option = "normal"
}
```
Original file line number Diff line number Diff line change
@@ -1,9 +1,121 @@
Provides a resource to start a dts migrate_job
Provides a resource to start a DTS migrate job

Example Usage

```hcl
resource "tencentcloud_dts_migrate_job_start_operation" "start"{
job_id = tencentcloud_dts_migrate_job.job.id
resource "tencentcloud_mysql_instance" "example" {
instance_name = "tf-example"
internet_service = 1
engine_version = "5.7"
charge_type = "POSTPAID"
root_password = "PassWord@123"
slave_deploy_mode = 0
slave_sync_mode = 1
availability_zone = "ap-guangzhou-7"
mem_size = 128000
volume_size = 250
vpc_id = "vpc-i5yyodl9"
subnet_id = "subnet-hhi88a58"
intranet_port = 3306
security_groups = ["sg-e6a8xxib"]
parameters = {
character_set_server = "utf8"
max_connections = "1000"
}
tags = {
createBy = "Terraform"
}
}

resource "tencentcloud_cynosdb_cluster" "example" {
cluster_name = "tf-example"
db_mode = "NORMAL"
db_type = "MYSQL"
db_version = "5.7"
port = 3306
password = "Password@123"
force_delete = true
available_zone = "ap-guangzhou-6"
slave_zone = "ap-guangzhou-7"
vpc_id = "vpc-i5yyodl9"
subnet_id = "subnet-hhi88a58"
instance_cpu_core = 2
instance_memory_size = 4
instance_maintain_duration = 7200
instance_maintain_start_time = 3600
instance_maintain_weekdays = [
"Fri",
"Mon",
"Sat",
"Sun",
"Thu",
"Wed",
"Tue",
]

rw_group_sg = ["sg-e6a8xxib"]
ro_group_sg = ["sg-e6a8xxib"]
}

resource "tencentcloud_dts_migrate_service" "example" {
src_database_type = "mysql"
dst_database_type = "cynosdbmysql"
src_region = "ap-guangzhou"
dst_region = "ap-guangzhou"
instance_class = "small"
job_name = "tf-example"
tags {
tag_key = "createBy"
tag_value = "Terraform"
}
}

resource "tencentcloud_dts_migrate_job" "example" {
service_id = tencentcloud_dts_migrate_service.example.id
run_mode = "immediate"
auto_retry_time_range_minutes = 0
migrate_option {
database_table {
object_mode = "partial"
databases {
db_name = "db_name"
db_mode = "partial"
table_mode = "partial"
tables {
table_name = "table_name"
new_table_name = "new_table_name"
table_edit_mode = "rename"
}
}
}
}

src_info {
region = "ap-guangzhou"
access_type = "cdb"
database_type = "mysql"
node_type = "simple"
info {
user = "root"
password = "Password@123"
instance_id = tencentcloud_mysql_instance.example.id
}
}

dst_info {
region = "ap-guangzhou"
access_type = "cdb"
database_type = "cynosdbmysql"
node_type = "simple"
info {
user = "root"
password = "Password@123"
instance_id = tencentcloud_cynosdb_cluster.example.id
}
}
}

resource "tencentcloud_dts_migrate_job_start_operation" "example" {
job_id = tencentcloud_dts_migrate_job.example.id
}
```
3 changes: 2 additions & 1 deletion tencentcloud/services/dts/resource_tc_dts_migrate_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,8 @@ func resourceTencentCloudDtsMigrateServiceCreate(d *schema.ResourceData, meta in

jobId = *response.Response.JobIds[0]
// wait created
if err = service.PollingMigrateJobStatusUntil(ctx, jobId, DTSJobStatus, []string{"created"}); err != nil {
_, err = service.PollingMigrateJobStatusUntil(ctx, jobId, DTSJobStatus, []string{"created"})
if err != nil {
return err
}

Expand Down
Loading
Loading