@@ -4,14 +4,19 @@ Provides a resource to create a scf trigger_config
44Example Usage
55
66```hcl
7+
78resource "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
1722Import
@@ -26,6 +31,7 @@ package tencentcloud
2631
2732import (
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+
96119func 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 {
0 commit comments