Skip to content

Commit 0107cef

Browse files
authored
Merge pull request #2079 from tencentcloudstack/dev/trigger
Dev/trigger
2 parents 6c21551 + 595133a commit 0107cef

File tree

10 files changed

+567
-35
lines changed

10 files changed

+567
-35
lines changed

.changelog/2071.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
resource/tencentcloud_scf_trigger_config: support new para, update api UpdateTrigger
3+
```

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ require (
7171
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts v1.0.533
7272
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/redis v1.0.657
7373
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum v1.0.542
74-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.664
74+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.729
7575
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ses v1.0.529
7676
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms v1.0.486
7777
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.689

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -924,6 +924,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum v1.0.542 h1:/U0rTVK
924924
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum v1.0.542/go.mod h1:QF1J13hmuMY5gMrBopRFmHWFs/KsLr5uCNBRJt5aA1M=
925925
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.664 h1:57r4xDd0t9zQw8tLO9k13gYy/EYYGtFV3fMPx1BJinY=
926926
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.664/go.mod h1:dFFSCohvDzW2jidqjb5GFDhQD/2AfM1tZ8ijkuJUr9Y=
927+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.729 h1:UWTpLpN3UngFNTuMosxSMCcmuoLksvuc9tt7ulCe0D8=
928+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.729/go.mod h1:P5cLcaPdmOiRhv79OAvAKf+9JTg/64N7ZxwZHBW2mZA=
927929
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ses v1.0.529 h1:NezuBQEG7ihXbwueREo4qavBAo6ZcHuWGZt1dR+VdKc=
928930
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ses v1.0.529/go.mod h1:Xfmf4Rq4J2ukz6NoEwpADQS5ws3By3KDPemCQeeMF+M=
929931
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms v1.0.486 h1:eHLaL+hl5X5f8Apuf2SGVclO3MRev/E3AfA/0aZQGUA=

tencentcloud/resource_tc_scf_trigger_config.go

Lines changed: 107 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,19 @@ Provides a resource to create a scf trigger_config
44
Example Usage
55
66
```hcl
7+
78
resource "tencentcloud_scf_trigger_config" "trigger_config" {
89
enable = "OPEN"
910
function_name = "keep-1676351130"
1011
trigger_name = "SCF-timer-1685540160"
1112
type = "timer"
1213
qualifier = "$DEFAULT"
1314
namespace = "default"
15+
trigger_desc = "* 1 2 * * * *"
16+
description = "func"
17+
custom_argument = "Information"
1418
}
19+
1520
```
1621
1722
Import
@@ -26,6 +31,7 @@ package tencentcloud
2631

2732
import (
2833
"context"
34+
"encoding/json"
2935
"fmt"
3036
"log"
3137
"strings"
@@ -48,26 +54,28 @@ func resourceTencentCloudScfTriggerConfig() *schema.Resource {
4854
Schema: map[string]*schema.Schema{
4955
"function_name": {
5056
Required: true,
57+
ForceNew: true,
5158
Type: schema.TypeString,
5259
Description: "Function name.",
5360
},
5461

5562
"trigger_name": {
5663
Required: true,
64+
ForceNew: true,
5765
Type: schema.TypeString,
58-
Description: "Trigger name.",
66+
Description: "Trigger Name.",
5967
},
6068

6169
"type": {
6270
Required: true,
6371
Type: schema.TypeString,
64-
Description: "Trigger Type.",
72+
Description: "Trigger type.",
6573
},
6674

6775
"enable": {
68-
Required: true,
76+
Optional: true,
6977
Type: schema.TypeString,
70-
Description: "Initial status of the trigger. Values: `OPEN` (enabled); `CLOSE` disabled).",
78+
Description: "Status of trigger. Values: OPEN (enabled); CLOSE disabled).",
7179
},
7280

7381
"qualifier": {
@@ -78,40 +86,100 @@ func resourceTencentCloudScfTriggerConfig() *schema.Resource {
7886

7987
"namespace": {
8088
Optional: true,
89+
ForceNew: true,
8190
Type: schema.TypeString,
82-
Default: "default",
8391
Description: "Function namespace.",
8492
},
8593

8694
"trigger_desc": {
8795
Optional: true,
88-
Computed: true,
8996
Type: schema.TypeString,
90-
Description: "To update a COS trigger, this field is required. It stores the data {event:cos:ObjectCreated:*} in the JSON format. The data content of this field is in the same format as that of SetTrigger. This field is optional if a scheduled trigger or CMQ trigger is to be deleted.",
97+
Description: "TriggerDesc parameter.",
98+
},
99+
100+
"description": {
101+
Optional: true,
102+
Type: schema.TypeString,
103+
Description: "Trigger description.",
104+
},
105+
106+
"custom_argument": {
107+
Optional: true,
108+
Type: schema.TypeString,
109+
Description: "User Additional Information.",
91110
},
92111
},
93112
}
94113
}
95114

115+
type TriggerDesc struct {
116+
Cron string `json:"cron"`
117+
}
118+
96119
func resourceTencentCloudScfTriggerConfigCreate(d *schema.ResourceData, meta interface{}) error {
97120
defer logElapsed("resource.tencentcloud_scf_trigger_config.create")()
98121
defer inconsistentCheck(d, meta)()
99122

123+
logId := getLogId(contextNil)
124+
100125
var (
126+
request = scf.NewUpdateTriggerRequest()
101127
functionName string
102128
triggerName string
103129
namespace string
104130
)
131+
105132
if v, ok := d.GetOk("function_name"); ok {
106-
functionName = v.(string)
133+
request.FunctionName = helper.String(v.(string))
134+
functionName = *request.FunctionName
135+
}
136+
137+
if v, ok := d.GetOk("trigger_name"); ok {
138+
request.TriggerName = helper.String(v.(string))
139+
triggerName = *request.TriggerName
140+
}
141+
142+
if v, ok := d.GetOk("type"); ok {
143+
request.Type = helper.String(v.(string))
144+
}
145+
146+
if v, ok := d.GetOk("enable"); ok {
147+
request.Enable = helper.String(v.(string))
148+
}
149+
150+
if v, ok := d.GetOk("qualifier"); ok {
151+
request.Qualifier = helper.String(v.(string))
107152
}
108153

109154
if v, ok := d.GetOk("namespace"); ok {
110-
namespace = v.(string)
155+
request.Namespace = helper.String(v.(string))
156+
namespace = *request.Namespace
111157
}
112158

113-
if v, ok := d.GetOk("trigger_name"); ok {
114-
triggerName = v.(string)
159+
if v, ok := d.GetOk("trigger_desc"); ok {
160+
request.TriggerDesc = helper.String(v.(string))
161+
}
162+
163+
if v, ok := d.GetOk("description"); ok {
164+
request.Description = helper.String(v.(string))
165+
}
166+
167+
if v, ok := d.GetOk("custom_argument"); ok {
168+
request.CustomArgument = helper.String(v.(string))
169+
}
170+
171+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
172+
result, e := meta.(*TencentCloudClient).apiV3Conn.UseScfClient().UpdateTrigger(request)
173+
if e != nil {
174+
return retryError(e)
175+
} else {
176+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
177+
}
178+
return nil
179+
})
180+
if err != nil {
181+
log.Printf("[CRITAL]%s operate scf triggerConfig failed, reason:%+v", logId, err)
182+
return err
115183
}
116184

117185
d.SetId(functionName + FILED_SP + namespace + FILED_SP + triggerName)
@@ -173,7 +241,20 @@ func resourceTencentCloudScfTriggerConfigRead(d *schema.ResourceData, meta inter
173241
}
174242

175243
if triggerConfig.TriggerDesc != nil {
176-
_ = d.Set("trigger_desc", triggerConfig.TriggerDesc)
244+
var triggerDesc TriggerDesc
245+
err := json.Unmarshal([]byte(*triggerConfig.TriggerDesc), &triggerDesc)
246+
if err != nil {
247+
return err
248+
}
249+
_ = d.Set("trigger_desc", triggerDesc.Cron)
250+
}
251+
252+
if triggerConfig.CustomArgument != nil {
253+
_ = d.Set("custom_argument", triggerConfig.CustomArgument)
254+
}
255+
256+
if triggerConfig.CustomArgument != nil {
257+
_ = d.Set("description", triggerConfig.Description)
177258
}
178259

179260
return nil
@@ -185,7 +266,7 @@ func resourceTencentCloudScfTriggerConfigUpdate(d *schema.ResourceData, meta int
185266

186267
logId := getLogId(contextNil)
187268

188-
request := scf.NewUpdateTriggerStatusRequest()
269+
request := scf.NewUpdateTriggerRequest()
189270

190271
idSplit := strings.Split(d.Id(), FILED_SP)
191272
if len(idSplit) != 3 {
@@ -199,14 +280,14 @@ func resourceTencentCloudScfTriggerConfigUpdate(d *schema.ResourceData, meta int
199280
request.Namespace = &namespace
200281
request.TriggerName = &triggerName
201282

202-
if v, ok := d.GetOk("enable"); ok {
203-
request.Enable = helper.String(v.(string))
204-
}
205-
206283
if v, ok := d.GetOk("type"); ok {
207284
request.Type = helper.String(v.(string))
208285
}
209286

287+
if v, ok := d.GetOk("enable"); ok {
288+
request.Enable = helper.String(v.(string))
289+
}
290+
210291
if v, ok := d.GetOk("qualifier"); ok {
211292
request.Qualifier = helper.String(v.(string))
212293
}
@@ -215,8 +296,16 @@ func resourceTencentCloudScfTriggerConfigUpdate(d *schema.ResourceData, meta int
215296
request.TriggerDesc = helper.String(v.(string))
216297
}
217298

299+
if v, ok := d.GetOk("description"); ok {
300+
request.Description = helper.String(v.(string))
301+
}
302+
303+
if v, ok := d.GetOk("custom_argument"); ok {
304+
request.CustomArgument = helper.String(v.(string))
305+
}
306+
218307
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
219-
result, e := meta.(*TencentCloudClient).apiV3Conn.UseScfClient().UpdateTriggerStatus(request)
308+
result, e := meta.(*TencentCloudClient).apiV3Conn.UseScfClient().UpdateTrigger(request)
220309
if e != nil {
221310
return retryError(e)
222311
} else {

tencentcloud/resource_tc_scf_trigger_config_test.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,16 @@ func TestAccTencentCloudScfTriggerConfigResource_basic(t *testing.T) {
1616
Steps: []resource.TestStep{
1717
{
1818
Config: testAccScfTriggerConfig,
19-
Check: resource.ComposeTestCheckFunc(resource.TestCheckResourceAttrSet("tencentcloud_scf_trigger_config.trigger_config", "id")),
19+
Check: resource.ComposeTestCheckFunc(resource.TestCheckResourceAttrSet("tencentcloud_scf_trigger_config.trigger_config", "id"),
20+
resource.ComposeTestCheckFunc(resource.TestCheckResourceAttr("tencentcloud_scf_trigger_config.trigger_config", "enable", "OPEN")),
21+
resource.ComposeTestCheckFunc(resource.TestCheckResourceAttr("tencentcloud_scf_trigger_config.trigger_config", "function_name", "keep-1676351130")),
22+
resource.ComposeTestCheckFunc(resource.TestCheckResourceAttr("tencentcloud_scf_trigger_config.trigger_config", "trigger_name", "SCF-timer-1685540160")),
23+
resource.ComposeTestCheckFunc(resource.TestCheckResourceAttr("tencentcloud_scf_trigger_config.trigger_config", "type", "timer")),
24+
resource.ComposeTestCheckFunc(resource.TestCheckResourceAttr("tencentcloud_scf_trigger_config.trigger_config", "qualifier", "$DEFAULT")),
25+
resource.ComposeTestCheckFunc(resource.TestCheckResourceAttr("tencentcloud_scf_trigger_config.trigger_config", "namespace", "default")),
26+
resource.ComposeTestCheckFunc(resource.TestCheckResourceAttr("tencentcloud_scf_trigger_config.trigger_config", "trigger_desc", "* 1 2 * * * *")),
27+
resource.ComposeTestCheckFunc(resource.TestCheckResourceAttr("tencentcloud_scf_trigger_config.trigger_config", "description", "func")),
28+
resource.ComposeTestCheckFunc(resource.TestCheckResourceAttr("tencentcloud_scf_trigger_config.trigger_config", "custom_argument", "Information"))),
2029
},
2130
{
2231
ResourceName: "tencentcloud_scf_trigger_config.trigger_config",
@@ -36,6 +45,9 @@ resource "tencentcloud_scf_trigger_config" "trigger_config" {
3645
type = "timer"
3746
qualifier = "$DEFAULT"
3847
namespace = "default"
48+
trigger_desc = "* 1 2 * * * *"
49+
description = "func"
50+
custom_argument = "Information"
3951
}
4052
4153
`

0 commit comments

Comments
 (0)