Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .changelog/2071.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:enhancement
resource/tencentcloud_scf_trigger_config: support new para, update api UpdateTrigger
```
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ require (
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts v1.0.533
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/redis v1.0.657
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum v1.0.542
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.664
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.729
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ses v1.0.529
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms v1.0.486
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver v1.0.689
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -922,6 +922,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum v1.0.542 h1:/U0rTVK
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum v1.0.542/go.mod h1:QF1J13hmuMY5gMrBopRFmHWFs/KsLr5uCNBRJt5aA1M=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.664 h1:57r4xDd0t9zQw8tLO9k13gYy/EYYGtFV3fMPx1BJinY=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.664/go.mod h1:dFFSCohvDzW2jidqjb5GFDhQD/2AfM1tZ8ijkuJUr9Y=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.729 h1:UWTpLpN3UngFNTuMosxSMCcmuoLksvuc9tt7ulCe0D8=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.729/go.mod h1:P5cLcaPdmOiRhv79OAvAKf+9JTg/64N7ZxwZHBW2mZA=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ses v1.0.529 h1:NezuBQEG7ihXbwueREo4qavBAo6ZcHuWGZt1dR+VdKc=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ses v1.0.529/go.mod h1:Xfmf4Rq4J2ukz6NoEwpADQS5ws3By3KDPemCQeeMF+M=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms v1.0.486 h1:eHLaL+hl5X5f8Apuf2SGVclO3MRev/E3AfA/0aZQGUA=
Expand Down
125 changes: 107 additions & 18 deletions tencentcloud/resource_tc_scf_trigger_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,19 @@ Provides a resource to create a scf trigger_config
Example Usage

```hcl

resource "tencentcloud_scf_trigger_config" "trigger_config" {
enable = "OPEN"
function_name = "keep-1676351130"
trigger_name = "SCF-timer-1685540160"
type = "timer"
qualifier = "$DEFAULT"
namespace = "default"
trigger_desc = "* 1 2 * * * *"
description = "func"
custom_argument = "Information"
}

```

Import
Expand All @@ -26,6 +31,7 @@ package tencentcloud

import (
"context"
"encoding/json"
"fmt"
"log"
"strings"
Expand All @@ -48,26 +54,28 @@ func resourceTencentCloudScfTriggerConfig() *schema.Resource {
Schema: map[string]*schema.Schema{
"function_name": {
Required: true,
ForceNew: true,
Type: schema.TypeString,
Description: "Function name.",
},

"trigger_name": {
Required: true,
ForceNew: true,
Type: schema.TypeString,
Description: "Trigger name.",
Description: "Trigger Name.",
},

"type": {
Required: true,
Type: schema.TypeString,
Description: "Trigger Type.",
Description: "Trigger type.",
},

"enable": {
Required: true,
Optional: true,
Type: schema.TypeString,
Description: "Initial status of the trigger. Values: `OPEN` (enabled); `CLOSE` disabled).",
Description: "Status of trigger. Values: OPEN (enabled); CLOSE disabled).",
},

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

"namespace": {
Optional: true,
ForceNew: true,
Type: schema.TypeString,
Default: "default",
Description: "Function namespace.",
},

"trigger_desc": {
Optional: true,
Computed: true,
Type: schema.TypeString,
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.",
Description: "TriggerDesc parameter.",
},

"description": {
Optional: true,
Type: schema.TypeString,
Description: "Trigger description.",
},

"custom_argument": {
Optional: true,
Type: schema.TypeString,
Description: "User Additional Information.",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

我看有些首字母大写,有些又是小写的

},
},
}
}

type TriggerDesc struct {
Cron string `json:"cron"`
}

func resourceTencentCloudScfTriggerConfigCreate(d *schema.ResourceData, meta interface{}) error {
defer logElapsed("resource.tencentcloud_scf_trigger_config.create")()
defer inconsistentCheck(d, meta)()

logId := getLogId(contextNil)

var (
request = scf.NewUpdateTriggerRequest()
functionName string
triggerName string
namespace string
)

if v, ok := d.GetOk("function_name"); ok {
functionName = v.(string)
request.FunctionName = helper.String(v.(string))
functionName = *request.FunctionName
}

if v, ok := d.GetOk("trigger_name"); ok {
request.TriggerName = helper.String(v.(string))
triggerName = *request.TriggerName
}

if v, ok := d.GetOk("type"); ok {
request.Type = helper.String(v.(string))
}

if v, ok := d.GetOk("enable"); ok {
request.Enable = helper.String(v.(string))
}

if v, ok := d.GetOk("qualifier"); ok {
request.Qualifier = helper.String(v.(string))
}

if v, ok := d.GetOk("namespace"); ok {
namespace = v.(string)
request.Namespace = helper.String(v.(string))
namespace = *request.Namespace
}

if v, ok := d.GetOk("trigger_name"); ok {
triggerName = v.(string)
if v, ok := d.GetOk("trigger_desc"); ok {
request.TriggerDesc = helper.String(v.(string))
}

if v, ok := d.GetOk("description"); ok {
request.Description = helper.String(v.(string))
}

if v, ok := d.GetOk("custom_argument"); ok {
request.CustomArgument = helper.String(v.(string))
}

err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
result, e := meta.(*TencentCloudClient).apiV3Conn.UseScfClient().UpdateTrigger(request)
if e != nil {
return retryError(e)
} else {
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
}
return nil
})
if err != nil {
log.Printf("[CRITAL]%s operate scf triggerConfig failed, reason:%+v", logId, err)
return err
}

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

if triggerConfig.TriggerDesc != nil {
_ = d.Set("trigger_desc", triggerConfig.TriggerDesc)
var triggerDesc TriggerDesc
err := json.Unmarshal([]byte(*triggerConfig.TriggerDesc), &triggerDesc)
if err != nil {
return err
}
_ = d.Set("trigger_desc", triggerDesc.Cron)
}

if triggerConfig.CustomArgument != nil {
_ = d.Set("custom_argument", triggerConfig.CustomArgument)
}

if triggerConfig.CustomArgument != nil {
_ = d.Set("description", triggerConfig.Description)
}

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

logId := getLogId(contextNil)

request := scf.NewUpdateTriggerStatusRequest()
request := scf.NewUpdateTriggerRequest()

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

if v, ok := d.GetOk("enable"); ok {
request.Enable = helper.String(v.(string))
}

if v, ok := d.GetOk("type"); ok {
request.Type = helper.String(v.(string))
}

if v, ok := d.GetOk("enable"); ok {
request.Enable = helper.String(v.(string))
}

if v, ok := d.GetOk("qualifier"); ok {
request.Qualifier = helper.String(v.(string))
}
Expand All @@ -215,8 +296,16 @@ func resourceTencentCloudScfTriggerConfigUpdate(d *schema.ResourceData, meta int
request.TriggerDesc = helper.String(v.(string))
}

if v, ok := d.GetOk("description"); ok {
request.Description = helper.String(v.(string))
}

if v, ok := d.GetOk("custom_argument"); ok {
request.CustomArgument = helper.String(v.(string))
}

err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
result, e := meta.(*TencentCloudClient).apiV3Conn.UseScfClient().UpdateTriggerStatus(request)
result, e := meta.(*TencentCloudClient).apiV3Conn.UseScfClient().UpdateTrigger(request)
if e != nil {
return retryError(e)
} else {
Expand Down
14 changes: 13 additions & 1 deletion tencentcloud/resource_tc_scf_trigger_config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,16 @@ func TestAccTencentCloudScfTriggerConfigResource_basic(t *testing.T) {
Steps: []resource.TestStep{
{
Config: testAccScfTriggerConfig,
Check: resource.ComposeTestCheckFunc(resource.TestCheckResourceAttrSet("tencentcloud_scf_trigger_config.trigger_config", "id")),
Check: resource.ComposeTestCheckFunc(resource.TestCheckResourceAttrSet("tencentcloud_scf_trigger_config.trigger_config", "id"),
resource.ComposeTestCheckFunc(resource.TestCheckResourceAttr("tencentcloud_scf_trigger_config.trigger_config", "enable", "OPEN")),
resource.ComposeTestCheckFunc(resource.TestCheckResourceAttr("tencentcloud_scf_trigger_config.trigger_config", "function_name", "keep-1676351130")),
resource.ComposeTestCheckFunc(resource.TestCheckResourceAttr("tencentcloud_scf_trigger_config.trigger_config", "trigger_name", "SCF-timer-1685540160")),
resource.ComposeTestCheckFunc(resource.TestCheckResourceAttr("tencentcloud_scf_trigger_config.trigger_config", "type", "timer")),
resource.ComposeTestCheckFunc(resource.TestCheckResourceAttr("tencentcloud_scf_trigger_config.trigger_config", "qualifier", "$DEFAULT")),
resource.ComposeTestCheckFunc(resource.TestCheckResourceAttr("tencentcloud_scf_trigger_config.trigger_config", "namespace", "default")),
resource.ComposeTestCheckFunc(resource.TestCheckResourceAttr("tencentcloud_scf_trigger_config.trigger_config", "trigger_desc", "* 1 2 * * * *")),
resource.ComposeTestCheckFunc(resource.TestCheckResourceAttr("tencentcloud_scf_trigger_config.trigger_config", "description", "func")),
resource.ComposeTestCheckFunc(resource.TestCheckResourceAttr("tencentcloud_scf_trigger_config.trigger_config", "custom_argument", "Information"))),
},
{
ResourceName: "tencentcloud_scf_trigger_config.trigger_config",
Expand All @@ -36,6 +45,9 @@ resource "tencentcloud_scf_trigger_config" "trigger_config" {
type = "timer"
qualifier = "$DEFAULT"
namespace = "default"
trigger_desc = "* 1 2 * * * *"
description = "func"
custom_argument = "Information"
}

`
Loading