Skip to content

Commit c741d4c

Browse files
authored
support mps schedule resource (#2179)
* support schedule resource * add e2e case * adjust e2e case * add doc
1 parent 95cfab6 commit c741d4c

10 files changed

+9447
-0
lines changed

.changelog/2179.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_schedule
3+
```
4+
5+
```release-note:new-resource
6+
tencentcloud_mps_enable_schedule_config
7+
```

tencentcloud/provider.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1583,6 +1583,8 @@ Media Processing Service(MPS)
15831583
tencentcloud_mps_person_sample
15841584
tencentcloud_mps_withdraws_watermark_operation
15851585
tencentcloud_mps_word_sample
1586+
tencentcloud_mps_schedule
1587+
tencentcloud_mps_enable_schedule_config
15861588
15871589
Cloud HDFS(CHDFS)
15881590
Data Source
@@ -3097,6 +3099,8 @@ func Provider() *schema.Provider {
30973099
"tencentcloud_mps_person_sample": resourceTencentCloudMpsPersonSample(),
30983100
"tencentcloud_mps_withdraws_watermark_operation": resourceTencentCloudMpsWithdrawsWatermarkOperation(),
30993101
"tencentcloud_mps_word_sample": resourceTencentCloudMpsWordSample(),
3102+
"tencentcloud_mps_schedule": resourceTencentCloudMpsSchedule(),
3103+
"tencentcloud_mps_enable_schedule_config": resourceTencentCloudMpsEnableScheduleConfig(),
31003104
"tencentcloud_cbs_disk_backup": resourceTencentCloudCbsDiskBackup(),
31013105
"tencentcloud_cbs_snapshot_share_permission": resourceTencentCloudCbsSnapshotSharePermission(),
31023106
"tencentcloud_cbs_disk_backup_rollback_operation": resourceTencentCloudCbsDiskBackupRollbackOperation(),
Lines changed: 317 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,317 @@
1+
/*
2+
Provides a resource to create a mps enable_schedule_config
3+
4+
Example Usage
5+
6+
Enable the mps schedule
7+
8+
```hcl
9+
data "tencentcloud_cos_bucket_object" "object" {
10+
bucket = "keep-bucket-${local.app_id}"
11+
key = "/mps-test/test.mov"
12+
}
13+
14+
resource "tencentcloud_cos_bucket" "output" {
15+
bucket = "tf-bucket-mps-schedule-config-output1-${local.app_id}"
16+
force_clean = true
17+
acl = "public-read"
18+
}
19+
20+
resource "tencentcloud_mps_schedule" "example" {
21+
schedule_name = "tf_test_mps_schedule_config"
22+
23+
trigger {
24+
type = "CosFileUpload"
25+
cos_file_upload_trigger {
26+
bucket = data.tencentcloud_cos_bucket_object.object.bucket
27+
region = "%s"
28+
dir = "/upload/"
29+
formats = ["flv", "mov"]
30+
}
31+
}
32+
33+
activities {
34+
activity_type = "input"
35+
reardrive_index = [1, 2]
36+
}
37+
38+
activities {
39+
activity_type = "action-trans"
40+
reardrive_index = [3]
41+
activity_para {
42+
transcode_task {
43+
definition = 10
44+
}
45+
}
46+
}
47+
48+
activities {
49+
activity_type = "action-trans"
50+
reardrive_index = [6, 7]
51+
activity_para {
52+
transcode_task {
53+
definition = 10
54+
}
55+
}
56+
}
57+
58+
activities {
59+
activity_type = "action-trans"
60+
reardrive_index = [4, 5]
61+
activity_para {
62+
transcode_task {
63+
definition = 10
64+
}
65+
}
66+
}
67+
68+
activities {
69+
activity_type = "action-trans"
70+
reardrive_index = [10]
71+
activity_para {
72+
transcode_task {
73+
definition = 10
74+
}
75+
}
76+
}
77+
78+
activities {
79+
activity_type = "action-trans"
80+
reardrive_index = [10]
81+
activity_para {
82+
transcode_task {
83+
definition = 10
84+
}
85+
}
86+
}
87+
88+
activities {
89+
activity_type = "action-trans"
90+
reardrive_index = [10]
91+
activity_para {
92+
transcode_task {
93+
definition = 10
94+
}
95+
}
96+
}
97+
98+
activities {
99+
activity_type = "action-trans"
100+
reardrive_index = [8]
101+
activity_para {
102+
transcode_task {
103+
definition = 10
104+
}
105+
}
106+
}
107+
108+
activities {
109+
activity_type = "action-trans"
110+
reardrive_index = [9]
111+
activity_para {
112+
transcode_task {
113+
definition = 10
114+
}
115+
}
116+
}
117+
118+
activities {
119+
activity_type = "action-trans"
120+
reardrive_index = [10]
121+
activity_para {
122+
transcode_task {
123+
definition = 10
124+
}
125+
}
126+
}
127+
128+
activities {
129+
activity_type = "output"
130+
}
131+
132+
output_storage {
133+
type = "COS"
134+
cos_output_storage {
135+
bucket = tencentcloud_cos_bucket.output.bucket
136+
region = "%s"
137+
}
138+
}
139+
140+
output_dir = "output/"
141+
}
142+
143+
resource "tencentcloud_mps_enable_schedule_config" "config" {
144+
schedule_id = tencentcloud_mps_schedule.example.id
145+
enabled = true
146+
}
147+
```
148+
149+
Disable the mps schedule
150+
151+
```hcl
152+
resource "tencentcloud_mps_enable_schedule_config" "config" {
153+
schedule_id = tencentcloud_mps_schedule.example.id
154+
enabled = false
155+
}
156+
157+
```
158+
159+
Import
160+
161+
mps enable_schedule_config can be imported using the id, e.g.
162+
163+
```
164+
terraform import tencentcloud_mps_enable_schedule_config.enable_schedule_config enable_schedule_config_id
165+
```
166+
*/
167+
package tencentcloud
168+
169+
import (
170+
"context"
171+
"log"
172+
173+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
174+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
175+
mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612"
176+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
177+
)
178+
179+
func resourceTencentCloudMpsEnableScheduleConfig() *schema.Resource {
180+
return &schema.Resource{
181+
Create: resourceTencentCloudMpsEnableScheduleConfigCreate,
182+
Read: resourceTencentCloudMpsEnableScheduleConfigRead,
183+
Update: resourceTencentCloudMpsEnableScheduleConfigUpdate,
184+
Delete: resourceTencentCloudMpsEnableScheduleConfigDelete,
185+
Importer: &schema.ResourceImporter{
186+
State: schema.ImportStatePassthrough,
187+
},
188+
Schema: map[string]*schema.Schema{
189+
"schedule_id": {
190+
Required: true,
191+
Type: schema.TypeInt,
192+
Description: "The scheme ID.",
193+
},
194+
195+
"enabled": {
196+
Required: true,
197+
Type: schema.TypeBool,
198+
Description: "true: enable; false: disable.",
199+
},
200+
},
201+
}
202+
}
203+
204+
func resourceTencentCloudMpsEnableScheduleConfigCreate(d *schema.ResourceData, meta interface{}) error {
205+
defer logElapsed("resource.tencentcloud_mps_enable_schedule_config.create")()
206+
defer inconsistentCheck(d, meta)()
207+
208+
var scheduleId int
209+
if v, ok := d.GetOkExists("schedule_id"); ok {
210+
scheduleId = v.(int)
211+
}
212+
d.SetId(helper.IntToStr(scheduleId))
213+
214+
return resourceTencentCloudMpsEnableScheduleConfigUpdate(d, meta)
215+
}
216+
217+
func resourceTencentCloudMpsEnableScheduleConfigRead(d *schema.ResourceData, meta interface{}) error {
218+
defer logElapsed("resource.tencentcloud_mps_enable_schedule_config.read")()
219+
defer inconsistentCheck(d, meta)()
220+
221+
logId := getLogId(contextNil)
222+
223+
ctx := context.WithValue(context.TODO(), logIdKey, logId)
224+
225+
service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn}
226+
227+
scheduleId := d.Id()
228+
229+
schedules, err := service.DescribeMpsScheduleById(ctx, &scheduleId)
230+
if err != nil {
231+
return err
232+
}
233+
234+
if len(schedules) == 0 {
235+
d.SetId("")
236+
log.Printf("[WARN]%s resource `MpsEnableScheduleConfig` [%s] not found, please check if it has been deleted.\n", logId, d.Id())
237+
return nil
238+
}
239+
240+
enableScheduleConfig := schedules[0]
241+
242+
if enableScheduleConfig.ScheduleId != nil {
243+
_ = d.Set("schedule_id", enableScheduleConfig.ScheduleId)
244+
}
245+
246+
status := enableScheduleConfig.Status
247+
if status != nil {
248+
if *status == "Enabled" {
249+
_ = d.Set("enabled", true)
250+
} else {
251+
_ = d.Set("enabled", false)
252+
}
253+
}
254+
255+
return nil
256+
}
257+
258+
func resourceTencentCloudMpsEnableScheduleConfigUpdate(d *schema.ResourceData, meta interface{}) error {
259+
defer logElapsed("resource.tencentcloud_mps_enable_schedule_config.update")()
260+
defer inconsistentCheck(d, meta)()
261+
262+
logId := getLogId(contextNil)
263+
264+
var (
265+
enableRequest = mps.NewEnableScheduleRequest()
266+
disableRequest = mps.NewDisableScheduleRequest()
267+
scheduleId *int64
268+
enabled bool
269+
)
270+
271+
scheduleId = helper.StrToInt64Point(d.Id())
272+
273+
if v, ok := d.GetOkExists("enabled"); ok && v != nil {
274+
enabled = v.(bool)
275+
276+
if enabled {
277+
enableRequest.ScheduleId = scheduleId
278+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
279+
result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().EnableSchedule(enableRequest)
280+
if e != nil {
281+
return retryError(e)
282+
} else {
283+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, enableRequest.GetAction(), enableRequest.ToJsonString(), result.ToJsonString())
284+
}
285+
return nil
286+
})
287+
if err != nil {
288+
log.Printf("[CRITAL]%s operate mps enableScheduleConfig failed, reason:%+v", logId, err)
289+
return err
290+
}
291+
} else {
292+
disableRequest.ScheduleId = scheduleId
293+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
294+
result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().DisableSchedule(disableRequest)
295+
if e != nil {
296+
return retryError(e)
297+
} else {
298+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, disableRequest.GetAction(), disableRequest.ToJsonString(), result.ToJsonString())
299+
}
300+
return nil
301+
})
302+
if err != nil {
303+
log.Printf("[CRITAL]%s operate mps disableScheduleConfig failed, reason:%+v", logId, err)
304+
return err
305+
}
306+
}
307+
308+
}
309+
return resourceTencentCloudMpsEnableScheduleConfigRead(d, meta)
310+
}
311+
312+
func resourceTencentCloudMpsEnableScheduleConfigDelete(d *schema.ResourceData, meta interface{}) error {
313+
defer logElapsed("resource.tencentcloud_mps_enable_schedule_config.delete")()
314+
defer inconsistentCheck(d, meta)()
315+
316+
return nil
317+
}

0 commit comments

Comments
 (0)