Skip to content

Commit e88539d

Browse files
WeiMengXSWeiMengXS
andauthored
Feat/dlc operation (#2257)
* feat: operation * feat: operation * feat: operation * feat: operation * feat: operation * feat: operation * feat: operation * feat: operation --------- Co-authored-by: WeiMengXS <nickcchen@tencent.com>
1 parent f1404e6 commit e88539d

13 files changed

+632
-0
lines changed

.changelog/2257.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
```release-note:new-resource
2+
tencentcloud_dlc_restart_data_engine_operation
3+
```
4+
5+
```release-note:new-resource
6+
tencentcloud_dlc_switch_data_engine_image_operation
7+
```
8+
9+
```release-note:new-resource
10+
tencentcloud_dlc_upgrade_data_engine_image_operation
11+
```

tencentcloud/provider.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1873,6 +1873,9 @@ Data Lake Compute(DLC)
18731873
tencentcloud_dlc_modify_data_engine_description_operation
18741874
tencentcloud_dlc_modify_user_typ_operation
18751875
tencentcloud_dlc_renew_data_engine_operation
1876+
tencentcloud_dlc_restart_data_engine_operation
1877+
tencentcloud_dlc_switch_data_engine_image_operation
1878+
tencentcloud_dlc_upgrade_data_engine_image_operation
18761879
18771880
WeData
18781881
Data Source
@@ -3570,6 +3573,9 @@ func Provider() *schema.Provider {
35703573
"tencentcloud_dlc_modify_data_engine_description_operation": resourceTencentCloudDlcModifyDataEngineDescriptionOperation(),
35713574
"tencentcloud_dlc_modify_user_typ_operation": resourceTencentCloudDlcModifyUserTypOperation(),
35723575
"tencentcloud_dlc_renew_data_engine_operation": resourceTencentCloudDlcRenewDataEngineOperation(),
3576+
"tencentcloud_dlc_restart_data_engine_operation": resourceTencentCloudDlcRestartDataEngineOperation(),
3577+
"tencentcloud_dlc_switch_data_engine_image_operation": resourceTencentCloudDlcSwitchDataEngineImageOperation(),
3578+
"tencentcloud_dlc_upgrade_data_engine_image_operation": resourceTencentCloudDlcUpgradeDataEngineImageOperation(),
35733579
"tencentcloud_wedata_rule_template": resourceTencentCloudWedataRuleTemplate(),
35743580
"tencentcloud_waf_custom_rule": resourceTencentCloudWafCustomRule(),
35753581
"tencentcloud_waf_custom_white_rule": resourceTencentCloudWafCustomWhiteRule(),
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
/*
2+
Provides a resource to create a dlc restart_data_engine
3+
4+
Example Usage
5+
6+
```hcl
7+
resource "tencentcloud_dlc_restart_data_engine_operation" "restart_data_engine" {
8+
data_engine_id = "DataEngine-g5ds87d8"
9+
forced_operation = false
10+
}
11+
```
12+
13+
*/
14+
package tencentcloud
15+
16+
import (
17+
"log"
18+
"time"
19+
20+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
21+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
22+
dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125"
23+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
24+
)
25+
26+
func resourceTencentCloudDlcRestartDataEngineOperation() *schema.Resource {
27+
return &schema.Resource{
28+
Create: resourceTencentCloudDlcRestartDataEngineCreateOperation,
29+
Read: resourceTencentCloudDlcRestartDataEngineReadOperation,
30+
Delete: resourceTencentCloudDlcRestartDataEngineDeleteOperation,
31+
Importer: &schema.ResourceImporter{
32+
State: schema.ImportStatePassthrough,
33+
},
34+
Schema: map[string]*schema.Schema{
35+
"data_engine_id": {
36+
Required: true,
37+
ForceNew: true,
38+
Type: schema.TypeString,
39+
Description: "Engine unique id.",
40+
},
41+
42+
"forced_operation": {
43+
Optional: true,
44+
ForceNew: true,
45+
Type: schema.TypeBool,
46+
Description: "Whether to force restart and ignore tasks.",
47+
},
48+
},
49+
}
50+
}
51+
52+
func resourceTencentCloudDlcRestartDataEngineCreateOperation(d *schema.ResourceData, meta interface{}) error {
53+
defer logElapsed("resource.tencentcloud_dlc_restart_data_engine_operation.create")()
54+
defer inconsistentCheck(d, meta)()
55+
56+
logId := getLogId(contextNil)
57+
58+
var (
59+
request = dlc.NewRestartDataEngineRequest()
60+
dataEngineId string
61+
)
62+
if v, ok := d.GetOk("data_engine_id"); ok {
63+
dataEngineId = v.(string)
64+
request.DataEngineId = helper.String(v.(string))
65+
}
66+
67+
if v, _ := d.GetOkExists("forced_operation"); v != nil {
68+
request.ForcedOperation = helper.Bool(v.(bool))
69+
}
70+
71+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
72+
result, e := meta.(*TencentCloudClient).apiV3Conn.UseDlcClient().RestartDataEngine(request)
73+
if e != nil {
74+
return retryError(e)
75+
} else {
76+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
77+
}
78+
return nil
79+
})
80+
if err != nil {
81+
log.Printf("[CRITAL]%s operate dlc restartDataEngine failed, reason:%+v", logId, err)
82+
return err
83+
}
84+
85+
d.SetId(dataEngineId)
86+
87+
service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn}
88+
89+
conf := BuildStateChangeConf([]string{}, []string{"2"}, 5*readRetryTimeout, time.Second, service.DlcRestartDataEngineStateRefreshFunc(d.Id(), []string{}))
90+
91+
if _, e := conf.WaitForState(); e != nil {
92+
return e
93+
}
94+
95+
return resourceTencentCloudDlcRestartDataEngineReadOperation(d, meta)
96+
}
97+
98+
func resourceTencentCloudDlcRestartDataEngineReadOperation(d *schema.ResourceData, meta interface{}) error {
99+
defer logElapsed("resource.tencentcloud_dlc_restart_data_engine_operation.read")()
100+
defer inconsistentCheck(d, meta)()
101+
102+
return nil
103+
}
104+
105+
func resourceTencentCloudDlcRestartDataEngineDeleteOperation(d *schema.ResourceData, meta interface{}) error {
106+
defer logElapsed("resource.tencentcloud_dlc_restart_data_engine_operation.delete")()
107+
defer inconsistentCheck(d, meta)()
108+
109+
return nil
110+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package tencentcloud
2+
3+
import (
4+
"testing"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
7+
)
8+
9+
func TestAccTencentCloudDlcRestartDataEngineOperationResource_basic(t *testing.T) {
10+
t.Parallel()
11+
resource.Test(t, resource.TestCase{
12+
PreCheck: func() {
13+
testAccPreCheck(t)
14+
},
15+
Providers: testAccProviders,
16+
Steps: []resource.TestStep{
17+
{
18+
Config: testAccDlcRestartDataEngine,
19+
Check: resource.ComposeTestCheckFunc(resource.TestCheckResourceAttrSet("tencentcloud_dlc_restart_data_engine_operation.restart_data_engine", "id"),
20+
resource.TestCheckResourceAttr("tencentcloud_dlc_restart_data_engine_operation.restart_data_engine", "data_engine_id", "DataEngine-cgkvbas6"),
21+
resource.TestCheckResourceAttr("tencentcloud_dlc_restart_data_engine_operation.restart_data_engine", "forced_operation", "false"),
22+
),
23+
},
24+
},
25+
})
26+
}
27+
28+
const testAccDlcRestartDataEngine = `
29+
30+
resource "tencentcloud_dlc_restart_data_engine_operation" "restart_data_engine" {
31+
data_engine_id = "DataEngine-cgkvbas6"
32+
forced_operation = false
33+
}
34+
35+
`
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
/*
2+
Provides a resource to create a dlc switch_data_engine_image_operation
3+
4+
Example Usage
5+
6+
```hcl
7+
resource "tencentcloud_dlc_switch_data_engine_image_operation" "switch_data_engine_image_operation" {
8+
data_engine_id = "DataEngine-g5ds87d8"
9+
new_image_version_id = "344ba1c6-b7a9-403a-a255-422fffed6d38"
10+
}
11+
```
12+
13+
*/
14+
package tencentcloud
15+
16+
import (
17+
"log"
18+
"time"
19+
20+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
21+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
22+
dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125"
23+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
24+
)
25+
26+
func resourceTencentCloudDlcSwitchDataEngineImageOperation() *schema.Resource {
27+
return &schema.Resource{
28+
Create: resourceTencentCloudDlcSwitchDataEngineImageOperationCreate,
29+
Read: resourceTencentCloudDlcSwitchDataEngineImageOperationRead,
30+
Delete: resourceTencentCloudDlcSwitchDataEngineImageOperationDelete,
31+
Importer: &schema.ResourceImporter{
32+
State: schema.ImportStatePassthrough,
33+
},
34+
Schema: map[string]*schema.Schema{
35+
"data_engine_id": {
36+
Required: true,
37+
ForceNew: true,
38+
Type: schema.TypeString,
39+
Description: "Engine unique id.",
40+
},
41+
42+
"new_image_version_id": {
43+
Required: true,
44+
ForceNew: true,
45+
Type: schema.TypeString,
46+
Description: "New image version id.",
47+
},
48+
},
49+
}
50+
}
51+
52+
func resourceTencentCloudDlcSwitchDataEngineImageOperationCreate(d *schema.ResourceData, meta interface{}) error {
53+
defer logElapsed("resource.tencentcloud_dlc_switch_data_engine_image_operation.create")()
54+
defer inconsistentCheck(d, meta)()
55+
56+
logId := getLogId(contextNil)
57+
58+
var (
59+
request = dlc.NewSwitchDataEngineImageRequest()
60+
dataEngineId string
61+
)
62+
if v, ok := d.GetOk("data_engine_id"); ok {
63+
dataEngineId = v.(string)
64+
request.DataEngineId = helper.String(v.(string))
65+
}
66+
67+
if v, ok := d.GetOk("new_image_version_id"); ok {
68+
request.NewImageVersionId = helper.String(v.(string))
69+
}
70+
71+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
72+
result, e := meta.(*TencentCloudClient).apiV3Conn.UseDlcClient().SwitchDataEngineImage(request)
73+
if e != nil {
74+
return retryError(e)
75+
} else {
76+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
77+
}
78+
return nil
79+
})
80+
if err != nil {
81+
log.Printf("[CRITAL]%s operate dlc switchDataEngineImageOperation failed, reason:%+v", logId, err)
82+
return err
83+
}
84+
85+
d.SetId(dataEngineId)
86+
87+
service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn}
88+
89+
conf := BuildStateChangeConf([]string{}, []string{"2"}, 5*readRetryTimeout, time.Second, service.DlcRestartDataEngineStateRefreshFunc(d.Id(), []string{}))
90+
91+
if _, e := conf.WaitForState(); e != nil {
92+
return e
93+
}
94+
95+
return resourceTencentCloudDlcSwitchDataEngineImageOperationRead(d, meta)
96+
}
97+
98+
func resourceTencentCloudDlcSwitchDataEngineImageOperationRead(d *schema.ResourceData, meta interface{}) error {
99+
defer logElapsed("resource.tencentcloud_dlc_switch_data_engine_image_operation.read")()
100+
defer inconsistentCheck(d, meta)()
101+
102+
return nil
103+
}
104+
105+
func resourceTencentCloudDlcSwitchDataEngineImageOperationDelete(d *schema.ResourceData, meta interface{}) error {
106+
defer logElapsed("resource.tencentcloud_dlc_switch_data_engine_image_operation.delete")()
107+
defer inconsistentCheck(d, meta)()
108+
109+
return nil
110+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package tencentcloud
2+
3+
import (
4+
"testing"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
7+
)
8+
9+
func TestAccTencentCloudDlcSwitchDataEngineImageOperationResource_basic(t *testing.T) {
10+
t.Parallel()
11+
resource.Test(t, resource.TestCase{
12+
PreCheck: func() {
13+
testAccPreCheck(t)
14+
},
15+
Providers: testAccProviders,
16+
Steps: []resource.TestStep{
17+
{
18+
Config: testAccDlcSwitchDataEngineImageOperation,
19+
Check: resource.ComposeTestCheckFunc(resource.TestCheckResourceAttrSet("tencentcloud_dlc_switch_data_engine_image_operation.switch_data_engine_image_operation", "id"),
20+
resource.TestCheckResourceAttr("tencentcloud_dlc_switch_data_engine_image_operation.switch_data_engine_image_operation", "data_engine_id", "DataEngine-cgkvbas6"),
21+
resource.TestCheckResourceAttrSet("tencentcloud_dlc_switch_data_engine_image_operation.switch_data_engine_image_operation", "new_image_version_id"),
22+
),
23+
},
24+
{
25+
Config: testAccDlcSwitchDataEngineImageOperationRecover,
26+
Check: resource.ComposeTestCheckFunc(resource.TestCheckResourceAttrSet("tencentcloud_dlc_switch_data_engine_image_operation.switch_data_engine_image_operation", "id"),
27+
resource.TestCheckResourceAttr("tencentcloud_dlc_switch_data_engine_image_operation.switch_data_engine_image_operation", "data_engine_id", "DataEngine-cgkvbas6"),
28+
resource.TestCheckResourceAttrSet("tencentcloud_dlc_switch_data_engine_image_operation.switch_data_engine_image_operation", "new_image_version_id"),
29+
),
30+
},
31+
},
32+
})
33+
}
34+
35+
const testAccDlcSwitchDataEngineImageOperation = `
36+
37+
data "tencentcloud_dlc_describe_data_engine_image_versions" "describe_data_engine_image_versions" {
38+
engine_type = "SparkBatch"
39+
}
40+
41+
resource "tencentcloud_dlc_switch_data_engine_image_operation" "switch_data_engine_image_operation" {
42+
data_engine_id = "DataEngine-cgkvbas6"
43+
new_image_version_id = data.tencentcloud_dlc_describe_data_engine_image_versions.describe_data_engine_image_versions.image_parent_versions.0.image_version_id
44+
}
45+
46+
`
47+
const testAccDlcSwitchDataEngineImageOperationRecover = `
48+
49+
data "tencentcloud_dlc_describe_data_engine_image_versions" "describe_data_engine_image_versions" {
50+
engine_type = "SparkBatch"
51+
}
52+
53+
resource "tencentcloud_dlc_switch_data_engine_image_operation" "switch_data_engine_image_operation" {
54+
data_engine_id = "DataEngine-cgkvbas6"
55+
new_image_version_id = data.tencentcloud_dlc_describe_data_engine_image_versions.describe_data_engine_image_versions.image_parent_versions.1.image_version_id
56+
}
57+
58+
`

0 commit comments

Comments
 (0)