Skip to content

Commit e934ceb

Browse files
authored
Feat/support dts resource (#1638)
* support resume and sync check operation * support migrate job config and compare task stop feature * add e2e case. * 1.passed the e2e case. 2.fix the password diff issue in `tencentcloud_dts_migrate_job`. * add docs * fix e2e issues * update operations resource
1 parent b7b9a3d commit e934ceb

27 files changed

+2217
-178
lines changed

.changelog/1638.txt

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
```release-note:new-resource
2+
tencentcloud_dts_sync_check_job_operation
3+
```
4+
5+
```release-note:new-resource
6+
tencentcloud_dts_sync_job_resume_operation
7+
```
8+
9+
```release-note:new-resource
10+
tencentcloud_dts_migrate_job_resume_operation
11+
```
12+
13+
```release-note:new-resource
14+
tencentcloud_dts_compare_task_stop_operation
15+
```
16+
17+
```release-note:new-resource
18+
tencentcloud_dts_migrate_job_config
19+
```
20+
21+
```release-note:enhancement
22+
resource/tencentcloud_dts_migrate_job: adjust to avoid the unexpected diff when the `password` field is not modified
23+
```

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ require (
4848
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb v1.0.572
4949
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.539
5050
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/domain v1.0.414
51-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts v1.0.567
51+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts v1.0.628
5252
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/emr v1.0.287
5353
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es v1.0.383
5454
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/gaap v1.0.514

go.sum

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -529,6 +529,7 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.616/go.mod
529529
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.624/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
530530
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.625/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
531531
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.627/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
532+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.628/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
532533
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.630 h1:wjTmUzAigRKOYb+avYZCllzosnGqWM+U6u915znVRvs=
533534
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.630/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
534535
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.633 h1:Yj8s35IjbgaHp4Ic9BZLVGWdN2gXBMtwYi1JJ+qYbrc=
@@ -553,6 +554,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/domain v1.0.414 h1:egwj
553554
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/domain v1.0.414/go.mod h1:LRWnBUNRxs/Ee8MzJJd3eHzydlqyB5qmia975Ca/Ox0=
554555
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts v1.0.567 h1:N5aTesA129t5GuSlQyzwgrAx69nMg5lsyLChyJHzMUw=
555556
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts v1.0.567/go.mod h1:GkPxIo1C2WtyoX2eMSx8w1Q8DmYR9brs+es/fZc5nb4=
557+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts v1.0.628 h1:cnhe9uh8tSyBfiPUckfqNI6t51YNZG9POupTrqWG9lM=
558+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts v1.0.628/go.mod h1:JxTXEld643DHk5HeQe4xIvuuoxsCmbTjgmE64Mtrdxw=
556559
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/emr v1.0.287 h1:+9COBXAbQmL7aJ39Q/mF50Ykxq4m5kq/y6vbO+u3zgI=
557560
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/emr v1.0.287/go.mod h1:xRvd0xsyCoviCiMRfJMh5lODPnLx+bnTfENNx6GHzFA=
558561
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es v1.0.383 h1:OhKvreaRPhwBEButv45yBcu6BvfvR1JAEXbU/NTck94=

tencentcloud/basic_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -885,7 +885,7 @@ const (
885885

886886
// DTS
887887
const (
888-
defaultDTSJobId = "dts-iesbn9qg"
888+
defaultDTSJobId = "dts-r5gpejpe"
889889
)
890890

891891
// End of DTS

tencentcloud/extension_dts.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package tencentcloud
2+
3+
const (
4+
DTS_MIGRATE_ACTION_PAUSE = "pause"
5+
DTS_MIGRATE_ACTION_CONTINUE = "continue"
6+
DTS_MIGRATE_ACTION_COMPLETE = "complete"
7+
DTS_MIGRATE_ACTION_RECOVER = "recover"
8+
DTS_MIGRATE_ACTION_STOP = "stop"
9+
DTS_MIGRATE_ACTION_RESUME = "resume"
10+
DTS_MIGRATE_ACTION_ISOLATE = "isolate"
11+
)

tencentcloud/provider.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -926,6 +926,9 @@ Data Transmission Service(DTS)
926926
tencentcloud_dts_migrate_service
927927
tencentcloud_dts_migrate_job
928928
tencentcloud_dts_migrate_job_start_operation
929+
tencentcloud_dts_migrate_job_resume_operation
930+
tencentcloud_dts_compare_task_stop_operation
931+
tencentcloud_dts_migrate_job_config
929932
930933
TDMQ for RocketMQ(trocket)
931934
Data Source
@@ -1755,7 +1758,12 @@ func Provider() terraform.ResourceProvider {
17551758
"tencentcloud_tdmq_rocketmq_environment_role": resourceTencentCloudTdmqRocketmqEnvironmentRole(),
17561759
"tencentcloud_dts_migrate_service": resourceTencentCloudDtsMigrateService(),
17571760
"tencentcloud_dts_migrate_job": resourceTencentCloudDtsMigrateJob(),
1761+
"tencentcloud_dts_migrate_job_config": resourceTencentCloudDtsMigrateJobConfig(),
17581762
"tencentcloud_dts_migrate_job_start_operation": resourceTencentCloudDtsMigrateJobStartOperation(),
1763+
"tencentcloud_dts_migrate_job_resume_operation": resourceTencentCloudDtsMigrateJobResumeOperation(),
1764+
"tencentcloud_dts_sync_check_job_operation": resourceTencentCloudDtsSyncCheckJobOperation(),
1765+
"tencentcloud_dts_sync_job_resume_operation": resourceTencentCloudDtsSyncJobResumeOperation(),
1766+
"tencentcloud_dts_compare_task_stop_operation": resourceTencentCloudDtsCompareTaskStopOperation(),
17591767
"tencentcloud_dts_compare_task": resourceTencentCloudDtsCompareTask(),
17601768
"tencentcloud_cvm_hpc_cluster": resourceTencentCloudCvmHpcCluster(),
17611769
"tencentcloud_vpc_flow_log": resourceTencentCloudVpcFlowLog(),
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
/*
2+
Provides a resource to create a dts compare_task_stop_operation
3+
4+
Example Usage
5+
6+
```hcl
7+
resource "tencentcloud_dts_compare_task_stop_operation" "compare_task_stop_operation" {
8+
job_id = "dts-8yv4w2i1"
9+
compare_task_id = "dts-8yv4w2i1-cmp-37skmii9"
10+
}
11+
```
12+
13+
*/
14+
package tencentcloud
15+
16+
import (
17+
"log"
18+
19+
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
20+
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
21+
dts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts/v20211206"
22+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
23+
)
24+
25+
func resourceTencentCloudDtsCompareTaskStopOperation() *schema.Resource {
26+
return &schema.Resource{
27+
Create: resourceTencentCloudDtsCompareTaskStopOperationCreate,
28+
Read: resourceTencentCloudDtsCompareTaskStopOperationRead,
29+
Delete: resourceTencentCloudDtsCompareTaskStopOperationDelete,
30+
Schema: map[string]*schema.Schema{
31+
"job_id": {
32+
Required: true,
33+
ForceNew: true,
34+
Type: schema.TypeString,
35+
Description: "job id.",
36+
},
37+
38+
"compare_task_id": {
39+
Required: true,
40+
ForceNew: true,
41+
Type: schema.TypeString,
42+
Description: "Compare task id.",
43+
},
44+
},
45+
}
46+
}
47+
48+
func resourceTencentCloudDtsCompareTaskStopOperationCreate(d *schema.ResourceData, meta interface{}) error {
49+
defer logElapsed("resource.tencentcloud_dts_compare_task_stop_operation.create")()
50+
defer inconsistentCheck(d, meta)()
51+
52+
logId := getLogId(contextNil)
53+
54+
var (
55+
request = dts.NewStopCompareRequest()
56+
jobId string
57+
compareTaskId string
58+
)
59+
if v, ok := d.GetOk("job_id"); ok {
60+
jobId = v.(string)
61+
request.JobId = helper.String(v.(string))
62+
}
63+
64+
if v, ok := d.GetOk("compare_task_id"); ok {
65+
compareTaskId = v.(string)
66+
request.CompareTaskId = helper.String(v.(string))
67+
}
68+
69+
if v, ok := d.GetOk("job_id"); ok {
70+
request.JobId = helper.String(v.(string))
71+
}
72+
73+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
74+
result, e := meta.(*TencentCloudClient).apiV3Conn.UseDtsClient().StopCompare(request)
75+
if e != nil {
76+
return retryError(e)
77+
} else {
78+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
79+
}
80+
return nil
81+
})
82+
if err != nil {
83+
log.Printf("[CRITAL]%s operate dts compareTaskStopOperation failed, reason:%+v", logId, err)
84+
return err
85+
}
86+
87+
d.SetId(jobId + FILED_SP + compareTaskId)
88+
89+
return resourceTencentCloudDtsCompareTaskStopOperationRead(d, meta)
90+
}
91+
92+
func resourceTencentCloudDtsCompareTaskStopOperationRead(d *schema.ResourceData, meta interface{}) error {
93+
defer logElapsed("resource.tencentcloud_dts_compare_task_stop_operation.read")()
94+
defer inconsistentCheck(d, meta)()
95+
96+
return nil
97+
}
98+
99+
func resourceTencentCloudDtsCompareTaskStopOperationDelete(d *schema.ResourceData, meta interface{}) error {
100+
defer logElapsed("resource.tencentcloud_dts_compare_task_stop_operation.delete")()
101+
defer inconsistentCheck(d, meta)()
102+
103+
return nil
104+
}

tencentcloud/resource_tc_dts_compare_task_test.go

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,24 @@ func TestAccTencentCloudDtsCompareTaskResource_basic(t *testing.T) {
7272
CheckDestroy: testAccCheckDtsCompareTaskDestroy,
7373
Steps: []resource.TestStep{
7474
{
75-
Config: testAccDtsCompareTask,
75+
Config: fmt.Sprintf(testAccDtsCompareTask_basic, defaultDTSJobId),
7676
Check: resource.ComposeTestCheckFunc(
7777
testAccCheckDtsCompareTaskExists("tencentcloud_dts_compare_task.compare_task"),
7878
resource.TestCheckResourceAttrSet("tencentcloud_dts_compare_task.compare_task", "id"),
7979
resource.TestCheckResourceAttr("tencentcloud_dts_compare_task.compare_task", "task_name", "tf_test_compare_task"),
8080
),
8181
},
82+
{
83+
Config: fmt.Sprintf(testAccDtsCompareTask_stop, defaultDTSJobId, defaultDTSJobId),
84+
Check: resource.ComposeTestCheckFunc(
85+
testAccCheckDtsCompareTaskExists("tencentcloud_dts_compare_task.compare_task"),
86+
resource.TestCheckResourceAttrSet("tencentcloud_dts_compare_task.compare_task", "id"),
87+
resource.TestCheckResourceAttr("tencentcloud_dts_compare_task.compare_task", "task_name", "tf_test_compare_task"),
88+
resource.TestCheckResourceAttrSet("tencentcloud_dts_compare_task_stop_operation.stop", "id"),
89+
resource.TestCheckResourceAttrSet("tencentcloud_dts_compare_task_stop_operation.stop", "job_id"),
90+
resource.TestCheckResourceAttrSet("tencentcloud_dts_compare_task_stop_operation.stop", "compare_task_id"),
91+
),
92+
},
8293
},
8394
})
8495
}
@@ -148,14 +159,31 @@ func testAccCheckDtsCompareTaskExists(re string) resource.TestCheckFunc {
148159
}
149160
}
150161

151-
const testAccDtsCompareTask = `
162+
const testAccDtsCompareTask_basic = `
163+
164+
resource "tencentcloud_dts_compare_task" "compare_task" {
165+
job_id = "%s"
166+
task_name = "tf_test_compare_task"
167+
objects {
168+
object_mode = "partial"
169+
}
170+
}
171+
172+
`
173+
174+
const testAccDtsCompareTask_stop = `
152175
153176
resource "tencentcloud_dts_compare_task" "compare_task" {
154-
job_id = "dts-iesbn9qg"
177+
job_id = "%s"
155178
task_name = "tf_test_compare_task"
156179
objects {
157-
object_mode = "all"
180+
object_mode = "partial"
158181
}
159182
}
160183
184+
resource "tencentcloud_dts_compare_task_stop_operation" "stop" {
185+
job_id = "%s"
186+
compare_task_id = tencentcloud_dts_compare_task.compare_task.compare_task_id
187+
}
188+
161189
`

0 commit comments

Comments
 (0)