Skip to content

Commit 1cfa08e

Browse files
authored
feat: add phone call alert channel support [sc-00] (#260)
* feat: add phone call alert channel support [sc-00] * feat: update docs [sc-00]
1 parent f414703 commit 1cfa08e

File tree

5 files changed

+62
-4
lines changed

5 files changed

+62
-4
lines changed

checkly/resource_alert_channel.go

+41-1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ const (
4343
AcFieldSendDegraded = "send_degraded"
4444
AcFieldSSLExpiry = "ssl_expiry"
4545
AcFieldSSLExpiryThreshold = "ssl_expiry_threshold"
46+
AcFieldCall = "call"
47+
AcFieldCallName = "name"
48+
AcFieldCallNumber = "number"
4649
)
4750

4851
func resourceAlertChannel() *schema.Resource {
@@ -108,6 +111,25 @@ func resourceAlertChannel() *schema.Resource {
108111
},
109112
},
110113
},
114+
AcFieldCall: {
115+
Type: schema.TypeSet,
116+
Optional: true,
117+
MaxItems: 1,
118+
Elem: &schema.Resource{
119+
Schema: map[string]*schema.Schema{
120+
AcFieldCallName: {
121+
Type: schema.TypeString,
122+
Required: true,
123+
Description: "The name of this alert channel",
124+
},
125+
AcFieldCallNumber: {
126+
Type: schema.TypeString,
127+
Required: true,
128+
Description: "The mobile number to receive the alerts",
129+
},
130+
},
131+
},
132+
},
111133
AcFieldWebhook: {
112134
Type: schema.TypeSet,
113135
Optional: true,
@@ -334,6 +356,7 @@ func resourceAlertChannelDelete(d *schema.ResourceData, client interface{}) erro
334356
func resourceDataFromAlertChannel(it *checkly.AlertChannel, d *schema.ResourceData) error {
335357
d.Set(AcFieldEmail, setFromEmail(it.Email))
336358
d.Set(AcFieldSMS, setFromSMS(it.SMS))
359+
d.Set(AcFieldCall, setFromCall(it.CALL))
337360
d.Set(AcFieldSlack, setFromSlack(it.Slack))
338361
d.Set(AcFieldWebhook, setFromWebhook(it.Webhook))
339362
d.Set(AcFieldOpsgenie, setFromOpsgenie(it.Opsgenie))
@@ -383,7 +406,7 @@ func alertChannelFromResourceData(d *schema.ResourceData) (checkly.AlertChannel,
383406
ac.SSLExpiryThreshold = &i
384407
}
385408

386-
fields := []string{AcFieldEmail, AcFieldSMS, AcFieldSlack, AcFieldWebhook, AcFieldOpsgenie, AcFieldPagerduty}
409+
fields := []string{AcFieldEmail, AcFieldSMS, AcFieldCall, AcFieldSlack, AcFieldWebhook, AcFieldOpsgenie, AcFieldPagerduty}
387410
setCount := 0
388411
for _, field := range fields {
389412
cfgSet := (d.Get(field)).(*schema.Set)
@@ -418,6 +441,11 @@ func alertChannelConfigFromSet(channelType string, s *schema.Set) (interface{},
418441
Name: cfg[AcFieldSMSName].(string),
419442
Number: cfg[AcFieldSMSNumber].(string),
420443
}, nil
444+
case checkly.AlertTypeCall:
445+
return &checkly.AlertChannelCall{
446+
Name: cfg[AcFieldCallName].(string),
447+
Number: cfg[AcFieldCallNumber].(string),
448+
}, nil
421449
case checkly.AlertTypeSlack:
422450
return &checkly.AlertChannelSlack{
423451
Channel: cfg[AcFieldSlackChannel].(string),
@@ -474,6 +502,18 @@ func setFromSMS(cfg *checkly.AlertChannelSMS) []tfMap {
474502
}
475503
}
476504

505+
func setFromCall(cfg *checkly.AlertChannelCall) []tfMap {
506+
if cfg == nil {
507+
return []tfMap{}
508+
}
509+
return []tfMap{
510+
{
511+
AcFieldCallName: cfg.Name,
512+
AcFieldCallNumber: cfg.Number,
513+
},
514+
}
515+
}
516+
477517
func setFromSlack(cfg *checkly.AlertChannelSlack) []tfMap {
478518
if cfg == nil {
479519
return []tfMap{}

demo/alert-channels.tf

+8
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,14 @@ resource "checkly_alert_channel" "sms_ac" {
3030
}
3131
}
3232

33+
# Phone Call Alert Channel
34+
resource "checkly_alert_channel" "call_ac" {
35+
call {
36+
name = "phone call alert"
37+
number = "+4917512345678"
38+
}
39+
}
40+
3341
# Opsgenie Alert Channel
3442
resource "checkly_alert_channel" "opsgenie_ac" {
3543
opsgenie {

docs/resources/alert_channel.md

+10
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ resource "checkly_check" "example_check" {
115115

116116
### Optional
117117

118+
- `call` (Block Set, Max: 1) (see [below for nested schema](#nestedblock--call))
118119
- `email` (Block Set, Max: 1) (see [below for nested schema](#nestedblock--email))
119120
- `opsgenie` (Block Set, Max: 1) (see [below for nested schema](#nestedblock--opsgenie))
120121
- `pagerduty` (Block Set, Max: 1) (see [below for nested schema](#nestedblock--pagerduty))
@@ -131,6 +132,15 @@ resource "checkly_check" "example_check" {
131132

132133
- `id` (String) The ID of this resource.
133134

135+
<a id="nestedblock--call"></a>
136+
### Nested Schema for `call`
137+
138+
Required:
139+
140+
- `name` (String) The name of this alert channel
141+
- `number` (String) The mobile number to receive the alerts
142+
143+
134144
<a id="nestedblock--email"></a>
135145
### Nested Schema for `email`
136146

go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ go 1.18
44

55
require (
66
github.com/aws/aws-sdk-go v1.44.122 // indirect
7-
github.com/checkly/checkly-go-sdk v1.6.4
7+
github.com/checkly/checkly-go-sdk v1.6.5
88
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
99
github.com/google/go-cmp v0.5.9
1010
github.com/gruntwork-io/terratest v0.41.16

go.sum

+2-2
Original file line numberDiff line numberDiff line change
@@ -231,8 +231,8 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB
231231
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
232232
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
233233
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
234-
github.com/checkly/checkly-go-sdk v1.6.4 h1:tV/iT9dLRP1yWJyYO9YayHtXVTujyc8/nfYOfW8lfGU=
235-
github.com/checkly/checkly-go-sdk v1.6.4/go.mod h1:Pd6tBOggAe41NnCU5KwqA8JvD6J20/IctszT2E0AvHo=
234+
github.com/checkly/checkly-go-sdk v1.6.5 h1:J0hIl8zbiG7GObXXmwkXw/63IRXdYu9anr6oXJC04K8=
235+
github.com/checkly/checkly-go-sdk v1.6.5/go.mod h1:Pd6tBOggAe41NnCU5KwqA8JvD6J20/IctszT2E0AvHo=
236236
github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s=
237237
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
238238
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=

0 commit comments

Comments
 (0)