Skip to content

Commit 5a634f6

Browse files
authored
support mps operation (#2196)
* support mps operation * add e2e. * add changelog and update doc * fix golangci-lint issues
1 parent 91fc66f commit 5a634f6

10 files changed

+385
-0
lines changed

.changelog/2196.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
```release-note:new-resource
2+
tencentcloud_mps_manage_task_operation
3+
```
4+
5+
```release-note:new-resource
6+
tencentcloud_mps_execute_function_operation
7+
```

tencentcloud/provider.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1651,6 +1651,8 @@ Media Processing Service(MPS)
16511651
tencentcloud_mps_enable_schedule_config
16521652
tencentcloud_mps_flow
16531653
tencentcloud_mps_event
1654+
tencentcloud_mps_manage_task_operation
1655+
tencentcloud_mps_execute_function_operation
16541656
16551657
Cloud HDFS(CHDFS)
16561658
Data Source
@@ -3226,6 +3228,8 @@ func Provider() *schema.Provider {
32263228
"tencentcloud_mps_flow": resourceTencentCloudMpsFlow(),
32273229
"tencentcloud_mps_start_flow_operation": resourceTencentCloudMpsStartFlowOperation(),
32283230
"tencentcloud_mps_event": resourceTencentCloudMpsEvent(),
3231+
"tencentcloud_mps_execute_function_operation": resourceTencentCloudMpsExecuteFunctionOperation(),
3232+
"tencentcloud_mps_manage_task_operation": resourceTencentCloudMpsManageTaskOperation(),
32293233
"tencentcloud_mps_transcode_template": resourceTencentCloudMpsTranscodeTemplate(),
32303234
"tencentcloud_mps_watermark_template": resourceTencentCloudMpsWatermarkTemplate(),
32313235
"tencentcloud_mps_image_sprite_template": resourceTencentCloudMpsImageSpriteTemplate(),
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
/*
2+
Provides a resource to create a mps execute_function_operation
3+
4+
Example Usage
5+
6+
```hcl
7+
resource "tencentcloud_mps_execute_function_operation" "operation" {
8+
function_name = "ExampleFunc"
9+
function_arg = "arg1"
10+
}
11+
```
12+
13+
*/
14+
package tencentcloud
15+
16+
import (
17+
"log"
18+
19+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
20+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
21+
mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612"
22+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
23+
)
24+
25+
func resourceTencentCloudMpsExecuteFunctionOperation() *schema.Resource {
26+
return &schema.Resource{
27+
Create: resourceTencentCloudMpsExecuteFunctionOperationCreate,
28+
Read: resourceTencentCloudMpsExecuteFunctionOperationRead,
29+
Delete: resourceTencentCloudMpsExecuteFunctionOperationDelete,
30+
Schema: map[string]*schema.Schema{
31+
"function_name": {
32+
Required: true,
33+
ForceNew: true,
34+
Type: schema.TypeString,
35+
Description: "Name of called backend API.",
36+
},
37+
38+
"function_arg": {
39+
Required: true,
40+
ForceNew: true,
41+
Type: schema.TypeString,
42+
Description: "API parameter. Parameter format will depend on the actual function definition.",
43+
},
44+
},
45+
}
46+
}
47+
48+
func resourceTencentCloudMpsExecuteFunctionOperationCreate(d *schema.ResourceData, meta interface{}) error {
49+
defer logElapsed("resource.tencentcloud_mps_execute_function_operation.create")()
50+
defer inconsistentCheck(d, meta)()
51+
52+
logId := getLogId(contextNil)
53+
54+
var (
55+
request = mps.NewExecuteFunctionRequest()
56+
functionName string
57+
)
58+
if v, ok := d.GetOk("function_name"); ok {
59+
request.FunctionName = helper.String(v.(string))
60+
functionName = v.(string)
61+
}
62+
63+
if v, ok := d.GetOk("function_arg"); ok {
64+
request.FunctionArg = helper.String(v.(string))
65+
}
66+
67+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
68+
result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().ExecuteFunction(request)
69+
if e != nil {
70+
return retryError(e)
71+
} else {
72+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
73+
}
74+
return nil
75+
})
76+
if err != nil {
77+
log.Printf("[CRITAL]%s operate mps executeFunctionOperation failed, reason:%+v", logId, err)
78+
return err
79+
}
80+
81+
d.SetId(functionName)
82+
83+
return resourceTencentCloudMpsExecuteFunctionOperationRead(d, meta)
84+
}
85+
86+
func resourceTencentCloudMpsExecuteFunctionOperationRead(d *schema.ResourceData, meta interface{}) error {
87+
defer logElapsed("resource.tencentcloud_mps_execute_function_operation.read")()
88+
defer inconsistentCheck(d, meta)()
89+
90+
return nil
91+
}
92+
93+
func resourceTencentCloudMpsExecuteFunctionOperationDelete(d *schema.ResourceData, meta interface{}) error {
94+
defer logElapsed("resource.tencentcloud_mps_execute_function_operation.delete")()
95+
defer inconsistentCheck(d, meta)()
96+
97+
return nil
98+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package tencentcloud
2+
3+
import (
4+
"testing"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
7+
)
8+
9+
// NeedFix: reserved for the custom support
10+
func TestAccTencentCloudNeedFixMpsExecuteFunctionOperationResource_basic(t *testing.T) {
11+
t.Parallel()
12+
resource.Test(t, resource.TestCase{
13+
PreCheck: func() {
14+
testAccPreCheck(t)
15+
},
16+
Providers: testAccProviders,
17+
Steps: []resource.TestStep{
18+
{
19+
Config: testAccMpsExecuteFunctionOperation,
20+
Check: resource.ComposeTestCheckFunc(
21+
resource.TestCheckResourceAttrSet("tencentcloud_mps_execute_function_operation.operation", "id"),
22+
resource.TestCheckResourceAttr("tencentcloud_mps_execute_function_operation.operation", "function_name", "ExampleFunc"),
23+
resource.TestCheckResourceAttr("tencentcloud_mps_execute_function_operation.operation", "function_arg", "arg1"),
24+
),
25+
},
26+
},
27+
})
28+
}
29+
30+
const testAccMpsExecuteFunctionOperation = `
31+
32+
resource "tencentcloud_mps_execute_function_operation" "operation" {
33+
function_name = "ExampleFunc"
34+
function_arg = "arg1"
35+
}
36+
37+
`
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
/*
2+
Provides a resource to create a mps manage_task_operation
3+
4+
Example Usage
5+
6+
```hcl
7+
resource "tencentcloud_mps_manage_task_operation" "operation" {
8+
operation_type = "Abort"
9+
task_id = "2600010949-LiveScheduleTask-xxxx"
10+
}
11+
```
12+
13+
*/
14+
package tencentcloud
15+
16+
import (
17+
"log"
18+
19+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
20+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
21+
mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612"
22+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
23+
)
24+
25+
func resourceTencentCloudMpsManageTaskOperation() *schema.Resource {
26+
return &schema.Resource{
27+
Create: resourceTencentCloudMpsManageTaskOperationCreate,
28+
Read: resourceTencentCloudMpsManageTaskOperationRead,
29+
Delete: resourceTencentCloudMpsManageTaskOperationDelete,
30+
Schema: map[string]*schema.Schema{
31+
"operation_type": {
32+
Required: true,
33+
ForceNew: true,
34+
Type: schema.TypeString,
35+
Description: "Operation type. Valid values:`Abort`: task termination. Notice: If the task type is live stream processing (LiveStreamProcessTask), tasks whose task status is `WAITING` or `PROCESSING` can be terminated.For other task types, only tasks whose task status is `WAITING` can be terminated.",
36+
},
37+
38+
"task_id": {
39+
Required: true,
40+
ForceNew: true,
41+
Type: schema.TypeString,
42+
Description: "Video processing task ID.",
43+
},
44+
},
45+
}
46+
}
47+
48+
func resourceTencentCloudMpsManageTaskOperationCreate(d *schema.ResourceData, meta interface{}) error {
49+
defer logElapsed("resource.tencentcloud_mps_manage_task_operation.create")()
50+
defer inconsistentCheck(d, meta)()
51+
52+
logId := getLogId(contextNil)
53+
54+
var (
55+
request = mps.NewManageTaskRequest()
56+
taskId string
57+
)
58+
if v, ok := d.GetOk("operation_type"); ok {
59+
request.OperationType = helper.String(v.(string))
60+
}
61+
62+
if v, ok := d.GetOk("task_id"); ok {
63+
request.TaskId = helper.String(v.(string))
64+
}
65+
66+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
67+
result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().ManageTask(request)
68+
if e != nil {
69+
return retryError(e)
70+
} else {
71+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
72+
}
73+
return nil
74+
})
75+
if err != nil {
76+
log.Printf("[CRITAL]%s operate mps manageTaskOperation failed, reason:%+v", logId, err)
77+
return err
78+
}
79+
80+
d.SetId(taskId)
81+
82+
return resourceTencentCloudMpsManageTaskOperationRead(d, meta)
83+
}
84+
85+
func resourceTencentCloudMpsManageTaskOperationRead(d *schema.ResourceData, meta interface{}) error {
86+
defer logElapsed("resource.tencentcloud_mps_manage_task_operation.read")()
87+
defer inconsistentCheck(d, meta)()
88+
89+
return nil
90+
}
91+
92+
func resourceTencentCloudMpsManageTaskOperationDelete(d *schema.ResourceData, meta interface{}) error {
93+
defer logElapsed("resource.tencentcloud_mps_manage_task_operation.delete")()
94+
defer inconsistentCheck(d, meta)()
95+
96+
return nil
97+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package tencentcloud
2+
3+
import (
4+
"testing"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
7+
)
8+
9+
// NeedFix: only abort task once
10+
func TestAccTencentCloudNeedFixMpsManageTaskOperationResource_basic(t *testing.T) {
11+
t.Parallel()
12+
resource.Test(t, resource.TestCase{
13+
PreCheck: func() {
14+
testAccPreCheck(t)
15+
},
16+
Providers: testAccProviders,
17+
Steps: []resource.TestStep{
18+
{
19+
Config: testAccMpsManageTaskOperation,
20+
Check: resource.ComposeTestCheckFunc(
21+
resource.TestCheckResourceAttrSet("tencentcloud_mps_manage_task_operation.operation", "id"),
22+
resource.TestCheckResourceAttrSet("tencentcloud_mps_manage_task_operation.operation", "task_id"),
23+
resource.TestCheckResourceAttr("tencentcloud_mps_manage_task_operation.operation", "operation_type", "Abort"),
24+
),
25+
},
26+
},
27+
})
28+
}
29+
30+
const testAccMpsManageTaskOperation = userInfoData + `
31+
32+
resource "tencentcloud_mps_manage_task_operation" "operation" {
33+
operation_type = "Abort"
34+
task_id = "2600010949-LiveScheduleTask-322343d93884db7c1cc252d7f7145d7att7"
35+
}
36+
37+
`

tencentcloud/service_tencentcloud_mps.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -932,3 +932,28 @@ func (me *MpsService) DeleteMpsEventById(ctx context.Context, eventId string) (e
932932

933933
return
934934
}
935+
936+
func (me *MpsService) DescribeMpsTaskDetailById(ctx context.Context, taskId string) (manageTaskOperation *mps.DescribeTaskDetailResponseParams, errRet error) {
937+
logId := getLogId(ctx)
938+
939+
request := mps.NewDescribeTaskDetailRequest()
940+
request.TaskId = &taskId
941+
942+
defer func() {
943+
if errRet != nil {
944+
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error())
945+
}
946+
}()
947+
948+
ratelimit.Check(request.GetAction())
949+
950+
response, err := me.client.UseMpsClient().DescribeTaskDetail(request)
951+
if err != nil {
952+
errRet = err
953+
return
954+
}
955+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
956+
957+
manageTaskOperation = response.Response
958+
return
959+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
---
2+
subcategory: "Media Processing Service(MPS)"
3+
layout: "tencentcloud"
4+
page_title: "TencentCloud: tencentcloud_mps_execute_function_operation"
5+
sidebar_current: "docs-tencentcloud-resource-mps_execute_function_operation"
6+
description: |-
7+
Provides a resource to create a mps execute_function_operation
8+
---
9+
10+
# tencentcloud_mps_execute_function_operation
11+
12+
Provides a resource to create a mps execute_function_operation
13+
14+
## Example Usage
15+
16+
```hcl
17+
resource "tencentcloud_mps_execute_function_operation" "operation" {
18+
function_name = "ExampleFunc"
19+
function_arg = "arg1"
20+
}
21+
```
22+
23+
## Argument Reference
24+
25+
The following arguments are supported:
26+
27+
* `function_arg` - (Required, String, ForceNew) API parameter. Parameter format will depend on the actual function definition.
28+
* `function_name` - (Required, String, ForceNew) Name of called backend API.
29+
30+
## Attributes Reference
31+
32+
In addition to all arguments above, the following attributes are exported:
33+
34+
* `id` - ID of the resource.
35+
36+
37+

0 commit comments

Comments
 (0)