Skip to content

Commit bb396ca

Browse files
committed
add
1 parent 52b8c0a commit bb396ca

6 files changed

+224
-7
lines changed

tencentcloud/services/dlc/resource_tc_dlc_standard_engine_resource_group.go

Lines changed: 156 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ func ResourceTencentCloudDlcStandardEngineResourceGroup() *schema.Resource {
162162
"image_name": {
163163
Type: schema.TypeString,
164164
Optional: true,
165-
Description: "Image name.\nmachine-learning: pytorch-v2.5.1, scikit-learn-v1.6.0, tensorflow-v2.18.0\nspark-ml: Standard-S 1.1\npython: python-v3.10.",
165+
Description: "Image Name. \nExample value: image-xxx. If using a built-in image (ImageType is built-in), the ImageName for different frameworks is: machine-learning: pytorch-v2.5.1, scikit-learn-v1.6.0, tensorflow-v2.18.0, python: python-v3.10, spark-m: Standard-S 1.1.",
166166
},
167167

168168
"image_version": {
@@ -560,7 +560,7 @@ func resourceTencentCloudDlcStandardEngineResourceGroupUpdate(d *schema.Resource
560560
engineResourceGroupName = d.Id()
561561
)
562562

563-
immutableArgs := []string{"engine_resource_group_name", "data_engine_name", "auto_launch", "auto_pause", "auto_pause_time", "static_config_pairs", "dynamic_config_pairs", "max_concurrency", "resource_group_scene"}
563+
immutableArgs := []string{"engine_resource_group_name", "data_engine_name", "static_config_pairs", "dynamic_config_pairs", "resource_group_scene"}
564564
for _, v := range immutableArgs {
565565
if d.HasChange(v) {
566566
return fmt.Errorf("argument `%s` cannot be changed", v)
@@ -782,6 +782,94 @@ func resourceTencentCloudDlcStandardEngineResourceGroupUpdate(d *schema.Resource
782782
}
783783
}
784784

785+
if d.HasChange("auto_pause") || d.HasChange("auto_launch") || d.HasChange("auto_pause_time") || d.HasChange("max_concurrency") {
786+
var (
787+
autoPause int
788+
autoLaunch int
789+
)
790+
791+
request := dlcv20210125.NewUpdateStandardEngineResourceGroupBaseInfoRequest()
792+
if v, ok := d.GetOkExists("auto_pause"); ok {
793+
autoPause = v.(int)
794+
}
795+
796+
if v, ok := d.GetOkExists("auto_launch"); ok {
797+
autoLaunch = v.(int)
798+
}
799+
800+
if v, ok := d.GetOkExists("auto_pause_time"); ok {
801+
request.AutoPauseTime = helper.IntInt64(v.(int))
802+
}
803+
804+
if v, ok := d.GetOkExists("max_concurrency"); ok {
805+
request.MaxConcurrency = helper.IntInt64(v.(int))
806+
}
807+
808+
request.AutoPause = helper.IntInt64(autoPause)
809+
request.AutoLaunch = helper.IntInt64(autoLaunch)
810+
request.EngineResourceGroupName = &engineResourceGroupName
811+
reqErr := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
812+
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDlcClient().UpdateStandardEngineResourceGroupBaseInfoWithContext(ctx, request)
813+
if e != nil {
814+
return tccommon.RetryError(e)
815+
} else {
816+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
817+
}
818+
819+
return nil
820+
})
821+
822+
if reqErr != nil {
823+
log.Printf("[CRITAL]%s update dlc standard engine resource group base info failed, reason:%+v", logId, reqErr)
824+
return reqErr
825+
}
826+
827+
// wait
828+
waitErr := resource.Retry(tccommon.WriteRetryTimeout*4, func() *resource.RetryError {
829+
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDlcClient().DescribeStandardEngineResourceGroupsWithContext(ctx, &dlcv20210125.DescribeStandardEngineResourceGroupsRequest{
830+
Filters: []*dlcv20210125.Filter{
831+
{
832+
Name: helper.String("engine-resource-group-name-unique"),
833+
Values: helper.Strings([]string{engineResourceGroupName}),
834+
},
835+
},
836+
})
837+
if e != nil {
838+
return tccommon.RetryError(e)
839+
} else {
840+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
841+
}
842+
843+
if result == nil || result.Response == nil {
844+
return resource.NonRetryableError(fmt.Errorf("Describe dlc standard engine resource groups failed, Response is nil."))
845+
}
846+
847+
if result.Response.UserEngineResourceGroupInfos == nil || len(result.Response.UserEngineResourceGroupInfos) == 0 {
848+
return resource.NonRetryableError(fmt.Errorf("UserEngineResourceGroupInfos is nil."))
849+
}
850+
851+
if len(result.Response.UserEngineResourceGroupInfos) != 1 {
852+
return resource.NonRetryableError(fmt.Errorf("UserEngineResourceGroupInfos is not 1."))
853+
}
854+
855+
state := result.Response.UserEngineResourceGroupInfos[0].ResourceGroupState
856+
if state != nil {
857+
if *state == 2 {
858+
return nil
859+
}
860+
} else {
861+
return resource.NonRetryableError(fmt.Errorf("ResourceGroupState is nil."))
862+
}
863+
864+
return resource.RetryableError(fmt.Errorf("UserEngineResourceGroupInfos is not ready, state:%d", *state))
865+
})
866+
867+
if waitErr != nil {
868+
log.Printf("[CRITAL]%s wait for dlc standard engine resource group failed, reason:%+v", logId, waitErr)
869+
return waitErr
870+
}
871+
}
872+
785873
return resourceTencentCloudDlcStandardEngineResourceGroupRead(d, meta)
786874
}
787875

@@ -796,8 +884,73 @@ func resourceTencentCloudDlcStandardEngineResourceGroupDelete(d *schema.Resource
796884
engineResourceGroupName = d.Id()
797885
)
798886

799-
request.EngineResourceGroupName = &engineResourceGroupName
887+
// pause first
888+
pauseRequest := dlcv20210125.NewPauseStandardEngineResourceGroupsRequest()
889+
pauseRequest.EngineResourceGroupNames = helper.Strings([]string{engineResourceGroupName})
800890
reqErr := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
891+
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDlcClient().PauseStandardEngineResourceGroupsWithContext(ctx, pauseRequest)
892+
if e != nil {
893+
return tccommon.RetryError(e)
894+
} else {
895+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
896+
}
897+
898+
return nil
899+
})
900+
901+
if reqErr != nil {
902+
log.Printf("[CRITAL]%s pause dlc standard engine resource group failed, reason:%+v", logId, reqErr)
903+
return reqErr
904+
}
905+
906+
// wait
907+
waitErr := resource.Retry(tccommon.WriteRetryTimeout*4, func() *resource.RetryError {
908+
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDlcClient().DescribeStandardEngineResourceGroupsWithContext(ctx, &dlcv20210125.DescribeStandardEngineResourceGroupsRequest{
909+
Filters: []*dlcv20210125.Filter{
910+
{
911+
Name: helper.String("engine-resource-group-name-unique"),
912+
Values: helper.Strings([]string{engineResourceGroupName}),
913+
},
914+
},
915+
})
916+
if e != nil {
917+
return tccommon.RetryError(e)
918+
} else {
919+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
920+
}
921+
922+
if result == nil || result.Response == nil {
923+
return resource.NonRetryableError(fmt.Errorf("Describe dlc standard engine resource groups failed, Response is nil."))
924+
}
925+
926+
if result.Response.UserEngineResourceGroupInfos == nil || len(result.Response.UserEngineResourceGroupInfos) == 0 {
927+
return resource.NonRetryableError(fmt.Errorf("UserEngineResourceGroupInfos is nil."))
928+
}
929+
930+
if len(result.Response.UserEngineResourceGroupInfos) != 1 {
931+
return resource.NonRetryableError(fmt.Errorf("UserEngineResourceGroupInfos is not 1."))
932+
}
933+
934+
state := result.Response.UserEngineResourceGroupInfos[0].ResourceGroupState
935+
if state != nil {
936+
if *state == 3 {
937+
return nil
938+
}
939+
} else {
940+
return resource.NonRetryableError(fmt.Errorf("ResourceGroupState is nil."))
941+
}
942+
943+
return resource.RetryableError(fmt.Errorf("UserEngineResourceGroupInfos is not pause, state:%d", *state))
944+
})
945+
946+
if waitErr != nil {
947+
log.Printf("[CRITAL]%s wait for dlc standard engine resource group pause failed, reason:%+v", logId, waitErr)
948+
return waitErr
949+
}
950+
951+
// delete end
952+
request.EngineResourceGroupName = &engineResourceGroupName
953+
reqErr = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
801954
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDlcClient().DeleteStandardEngineResourceGroupWithContext(ctx, request)
802955
if e != nil {
803956
return tccommon.RetryError(e)

tencentcloud/services/dlc/resource_tc_dlc_standard_engine_resource_group.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ Provides a resource to create a DLC standard engine resource group
22

33
~> **NOTE:** If you are creating a machine learning resource group for the first time, you need to contact DLC product for whitelisting.
44

5+
~> **NOTE:** Field `auto_pause_time` is meaningful only when the values ​​of fields `auto_launch` and `auto_pause` are 0.
6+
57
Example Usage
68

79
Only SQL analysis resource group

tencentcloud/services/dlc/resource_tc_dlc_standard_engine_resource_group_test.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,21 @@ func TestAccTencentCloudDlcStandardEngineResourceGroupResource_basic(t *testing.
3131
resource.TestCheckResourceAttrSet("tencentcloud_dlc_standard_engine_resource_group.example", "spark_size"),
3232
),
3333
},
34+
{
35+
Config: testAccDlcStandardEngineResourceGroupUpdate,
36+
Check: resource.ComposeTestCheckFunc(
37+
resource.TestCheckResourceAttrSet("tencentcloud_dlc_standard_engine_resource_group.example", "id"),
38+
resource.TestCheckResourceAttrSet("tencentcloud_dlc_standard_engine_resource_group.example", "engine_resource_group_name"),
39+
resource.TestCheckResourceAttrSet("tencentcloud_dlc_standard_engine_resource_group.example", "data_engine_name"),
40+
resource.TestCheckResourceAttrSet("tencentcloud_dlc_standard_engine_resource_group.example", "auto_launch"),
41+
resource.TestCheckResourceAttrSet("tencentcloud_dlc_standard_engine_resource_group.example", "auto_pause"),
42+
resource.TestCheckResourceAttrSet("tencentcloud_dlc_standard_engine_resource_group.example", "auto_pause_time"),
43+
resource.TestCheckResourceAttrSet("tencentcloud_dlc_standard_engine_resource_group.example", "max_concurrency"),
44+
resource.TestCheckResourceAttrSet("tencentcloud_dlc_standard_engine_resource_group.example", "resource_group_scene"),
45+
resource.TestCheckResourceAttrSet("tencentcloud_dlc_standard_engine_resource_group.example", "spark_spec_mode"),
46+
resource.TestCheckResourceAttrSet("tencentcloud_dlc_standard_engine_resource_group.example", "spark_size"),
47+
),
48+
},
3449
},
3550
})
3651
}
@@ -57,3 +72,26 @@ resource "tencentcloud_dlc_standard_engine_resource_group" "example" {
5772
spark_size = 16
5873
}
5974
`
75+
76+
const testAccDlcStandardEngineResourceGroupUpdate = `
77+
resource "tencentcloud_dlc_standard_engine_resource_group" "example" {
78+
engine_resource_group_name = "tf-example"
79+
data_engine_name = "tf-engine"
80+
auto_launch = 0
81+
auto_pause = 0
82+
auto_pause_time = 20
83+
static_config_pairs {
84+
config_item = "key"
85+
config_value = "value"
86+
}
87+
88+
dynamic_config_pairs {
89+
config_item = "key"
90+
config_value = "value"
91+
}
92+
max_concurrency = 10
93+
resource_group_scene = "SparkSQL"
94+
spark_spec_mode = "fast"
95+
spark_size = 16
96+
}
97+
`

tencentcloud/services/dlc/resource_tc_dlc_user_vpc_connection.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,15 @@ resource "tencentcloud_dlc_user_vpc_connection" "example" {
1010
engine_network_id = "DataEngine-Network-2mfg9icb"
1111
}
1212
```
13+
14+
Or
15+
16+
```hcl
17+
resource "tencentcloud_dlc_user_vpc_connection" "example" {
18+
user_vpc_id = "vpc-f7fa1fu5"
19+
user_subnet_id = "subnet-ds2t3udw"
20+
user_vpc_endpoint_name = "tf-example"
21+
engine_network_id = "DataEngine-Network-2mfg9icb"
22+
user_vpc_endpoint_vip = "10.0.1.10"
23+
}
24+
```

website/docs/r/dlc_standard_engine_resource_group.html.markdown

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ Provides a resource to create a DLC standard engine resource group
1313

1414
~> **NOTE:** If you are creating a machine learning resource group for the first time, you need to contact DLC product for whitelisting.
1515

16+
~> **NOTE:** Field `auto_pause_time` is meaningful only when the values ​​of fields `auto_launch` and `auto_pause` are 0.
17+
1618
## Example Usage
1719

1820
### Only SQL analysis resource group
@@ -72,10 +74,8 @@ The following arguments are supported:
7274
* `dynamic_config_pairs` - (Optional, List) Dynamic parameters of the resource group, effective in the next task.
7375
* `executor_cu_spec` - (Optional, String) Executor CU specifications: Currently supported: small (default, 1 CU), medium (2 CU), large (4 CU), xlarge (8 CU). Memory CUs are CPUs with a ratio of 1:8, m.small (1 CU memory), m.medium (2 CU memory), m.large (4 CU memory), and m.xlarge (8 CU memory).
7476
* `frame_type` - (Optional, String) The framework type of the AI type resource group, machine-learning, python, spark-ml, if not filled in, the default is machine-learning.
75-
* `image_name` - (Optional, String) Image name.
76-
machine-learning: pytorch-v2.5.1, scikit-learn-v1.6.0, tensorflow-v2.18.0
77-
spark-ml: Standard-S 1.1
78-
python: python-v3.10.
77+
* `image_name` - (Optional, String) Image Name.
78+
Example value: image-xxx. If using a built-in image (ImageType is built-in), the ImageName for different frameworks is: machine-learning: pytorch-v2.5.1, scikit-learn-v1.6.0, tensorflow-v2.18.0, python: python-v3.10, spark-m: Standard-S 1.1.
7979
* `image_type` - (Optional, String) Image type, build-in: built-in, custom: custom, if not filled in, the default is build-in.
8080
* `image_version` - (Optional, String) Image ID.
8181
* `max_concurrency` - (Optional, Int) The number of concurrent tasks is 5 by default.

website/docs/r/dlc_user_vpc_connection.html.markdown

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,18 @@ resource "tencentcloud_dlc_user_vpc_connection" "example" {
2222
}
2323
```
2424

25+
### Or
26+
27+
```hcl
28+
resource "tencentcloud_dlc_user_vpc_connection" "example" {
29+
user_vpc_id = "vpc-f7fa1fu5"
30+
user_subnet_id = "subnet-ds2t3udw"
31+
user_vpc_endpoint_name = "tf-example"
32+
engine_network_id = "DataEngine-Network-2mfg9icb"
33+
user_vpc_endpoint_vip = "10.0.1.10"
34+
}
35+
```
36+
2537
## Argument Reference
2638

2739
The following arguments are supported:

0 commit comments

Comments
 (0)