Skip to content

Commit 2aa15e8

Browse files
authored
added AlertChannel flag settings (#49)
1 parent fb6fa65 commit 2aa15e8

File tree

5 files changed

+92
-12
lines changed

5 files changed

+92
-12
lines changed

checkly/resource_alert_channel.go

+63-9
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@ const (
3232
AcFieldOpsgenieAPIKey = "api_key"
3333
AcFieldOpsgenieRegion = "region"
3434
AcFieldOpsgeniePriority = "priority"
35+
AcFieldSendRecovery = "send_recovery"
36+
AcFieldSendFailure = "send_failure"
37+
AcFieldSendDegraded = "send_degraded"
38+
AcFieldSSLExpiry = "ssl_expiry"
39+
AcFieldSSLExpiryThreshold = "ssl_expiry_threshold"
3540
)
3641

3742
func resourceAlertChannel() *schema.Resource {
@@ -161,14 +166,34 @@ func resourceAlertChannel() *schema.Resource {
161166
},
162167
},
163168
},
169+
AcFieldSendRecovery: {
170+
Type: schema.TypeBool,
171+
Optional: true,
172+
},
173+
AcFieldSendFailure: {
174+
Type: schema.TypeBool,
175+
Optional: true,
176+
},
177+
AcFieldSendDegraded: {
178+
Type: schema.TypeBool,
179+
Optional: true,
180+
},
181+
AcFieldSSLExpiry: {
182+
Type: schema.TypeBool,
183+
Optional: true,
184+
},
185+
AcFieldSSLExpiryThreshold: {
186+
Type: schema.TypeInt,
187+
Optional: true,
188+
},
164189
},
165190
}
166191
}
167192

168193
func resourceAlertChannelCreate(d *schema.ResourceData, client interface{}) error {
169194
ac, err := alertChannelFromResourceData(d)
170195
if err != nil {
171-
return makeError("resourceAlertChannelCreate.1", &ErrorLog{"err": err})
196+
return makeError("resourceAlertChannelCreate.1", &ErrorLog{"err": err.Error()})
172197
}
173198
resp, err := client.(*checkly.Client).CreateAlertChannel(ac)
174199
if err != nil {
@@ -186,7 +211,7 @@ func resourceAlertChannelCreate(d *schema.ResourceData, client interface{}) erro
186211
func resourceAlertChannelRead(d *schema.ResourceData, client interface{}) error {
187212
ID, err := resourceIDToInt(d.Id())
188213
if err != nil {
189-
return makeError("resourceAlertChannelRead.1", &ErrorLog{"err": err})
214+
return makeError("resourceAlertChannelRead.1", &ErrorLog{"err": err.Error()})
190215
}
191216
ac, err := client.(*checkly.Client).GetAlertChannel(ID)
192217
if err != nil {
@@ -196,19 +221,19 @@ func resourceAlertChannelRead(d *schema.ResourceData, client interface{}) error
196221
d.SetId("")
197222
return nil
198223
}
199-
return makeError("resourceAlertChannelRead.2", &ErrorLog{"err": err})
224+
return makeError("resourceAlertChannelRead.2", &ErrorLog{"err": err.Error()})
200225
}
201226
return resourceDataFromAlertChannel(ac, d)
202227
}
203228

204229
func resourceAlertChannelUpdate(d *schema.ResourceData, client interface{}) error {
205230
ac, err := alertChannelFromResourceData(d)
206231
if err != nil {
207-
return makeError("resourceAlertChannelUpdate.1", &ErrorLog{"err": err})
232+
return makeError("resourceAlertChannelUpdate.1", &ErrorLog{"err": err.Error()})
208233
}
209234
_, err = client.(*checkly.Client).UpdateAlertChannel(ac.ID, ac)
210235
if err != nil {
211-
return makeError("resourceAlertChannelUpdate.2", &ErrorLog{"err": err})
236+
return makeError("resourceAlertChannelUpdate.2", &ErrorLog{"err": err.Error()})
212237
}
213238
d.SetId(fmt.Sprintf("%d", ac.ID))
214239
return resourceAlertChannelRead(d, client)
@@ -217,10 +242,10 @@ func resourceAlertChannelUpdate(d *schema.ResourceData, client interface{}) erro
217242
func resourceAlertChannelDelete(d *schema.ResourceData, client interface{}) error {
218243
ID, err := resourceIDToInt(d.Id())
219244
if err != nil {
220-
return makeError("resourceAlertChannelDelete.1", &ErrorLog{"err": err})
245+
return makeError("resourceAlertChannelDelete.1", &ErrorLog{"err": err.Error()})
221246
}
222247
if err := client.(*checkly.Client).DeleteAlertChannel(ID); err != nil {
223-
return makeError("resourceAlertChannelDelete.2", &ErrorLog{"err": err})
248+
return makeError("resourceAlertChannelDelete.2", &ErrorLog{"err": err.Error()})
224249
}
225250
return nil
226251
}
@@ -231,19 +256,48 @@ func resourceDataFromAlertChannel(it *checkly.AlertChannel, d *schema.ResourceDa
231256
d.Set(AcFieldSlack, setFromSlack(it.Slack))
232257
d.Set(AcFieldWebhook, setFromWebhook(it.Webhook))
233258
d.Set(AcFieldOpsgenie, setFromOpsgenie(it.Opsgenie))
259+
if it.SendRecovery != nil {
260+
d.Set(AcFieldSendRecovery, *it.SendRecovery)
261+
}
262+
if it.SendFailure != nil {
263+
d.Set(AcFieldSendFailure, *it.SendFailure)
264+
}
265+
if it.SendDegraded != nil {
266+
d.Set(AcFieldSendDegraded, *it.SendDegraded)
267+
}
268+
if it.SSLExpiry != nil {
269+
d.Set(AcFieldSSLExpiry, *it.SSLExpiry)
270+
}
271+
if it.SSLExpiryThreshold != nil {
272+
d.Set(AcFieldSSLExpiryThreshold, *it.SSLExpiryThreshold)
273+
}
234274
return nil
235275
}
236276

237277
func alertChannelFromResourceData(d *schema.ResourceData) (checkly.AlertChannel, error) {
238278
ac := checkly.AlertChannel{}
239279
ID, err := resourceIDToInt(d.Id())
240280
if err != nil {
241-
return ac, makeError("alertChannelFromResourceData.1", &ErrorLog{"err": err})
281+
return ac, makeError("alertChannelFromResourceData.1", &ErrorLog{"err": err.Error()})
242282
}
243283
if err == nil {
244284
ac.ID = ID
245285
}
246286

287+
sr := d.Get(AcFieldSendRecovery).(bool)
288+
ac.SendRecovery = &sr
289+
sf := d.Get(AcFieldSendFailure).(bool)
290+
ac.SendFailure = &sf
291+
sd := d.Get(AcFieldSendDegraded).(bool)
292+
ac.SendDegraded = &sd
293+
expiry := d.Get(AcFieldSSLExpiry).(bool)
294+
ac.SSLExpiry = &expiry
295+
if ac.SSLExpiry != nil {
296+
et := d.Get(AcFieldSSLExpiryThreshold).(int)
297+
if et > 0 {
298+
ac.SSLExpiryThreshold = &et
299+
}
300+
}
247301
fields := []string{AcFieldEmail, AcFieldSMS, AcFieldSlack, AcFieldWebhook, AcFieldOpsgenie}
248302
setCount := 0
249303
for _, field := range fields {
@@ -252,7 +306,7 @@ func alertChannelFromResourceData(d *schema.ResourceData) (checkly.AlertChannel,
252306
ac.Type = strings.ToUpper(field)
253307
c, err := alertChannelConfigFromSet(ac.Type, cfgSet)
254308
if err != nil {
255-
return ac, makeError("alertChannelFromResourceData.2", &ErrorLog{"err": err})
309+
return ac, makeError("alertChannelFromResourceData.2", &ErrorLog{"err": err.Error()})
256310
}
257311
ac.SetConfig(c)
258312
setCount++

docs/resources/alert-channel.md

+14-2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@ resource "checkly_alert_channel" "ac1" {
1010
email {
1111
address = "[email protected]"
1212
}
13+
send_recovery = true
14+
send_failure = false
15+
send_degraded = true
16+
ssl_expiry = true
17+
ssl_expiry_threshold = 22
1318
}
1419
```
1520

@@ -20,6 +25,8 @@ resource "checkly_alert_channel" "ac1" {
2025
name = "john"
2126
number = "0123456789"
2227
}
28+
send_recovery = true
29+
send_failure = true
2330
}
2431
```
2532

@@ -98,8 +105,13 @@ resource "checkly_check_group" "test-group1" {
98105
```
99106

100107
## Argument Reference
101-
a `checkly_alert_channel` should contain configuration for a single alerting channel,
102-
which can be one of the following: `email`, `sms`, `slack`, `opsgenie`, `webhook`.
108+
* a `checkly_alert_channel` should contain a single configuration for alerting channel type, which can be one of the following: `email`, `sms`, `slack`, `opsgenie`, `webhook`.
109+
* `send_recovery` (Optional) . Possible values: `true` | `false`.
110+
* `send_failure` (Optional) . Possible values: `true` | `false`.
111+
* `send_degraded` (Optional) . Possible values: `true` | `false`.
112+
* `ssl_expiry` (Optional) . Possible values: `true` | `false`.
113+
* `ssl_expiry_threshold` (Optional) . Possible values between 1 and 30. Default is `30`.
114+
103115
### Argument Reference for Email Alert Channel
104116
* `email` (Optional):
105117
* `address` (Required) the email address of this email alert channel.

go.mod

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ go 1.14
55
require (
66
github.com/agext/levenshtein v1.2.3 // indirect
77
github.com/aws/aws-sdk-go v1.31.11 // indirect
8-
github.com/checkly/checkly-go-sdk v0.5.0
8+
github.com/checkly/checkly-go-sdk v0.5.2
99
github.com/fatih/color v1.9.0 // indirect
1010
github.com/google/go-cmp v0.5.0
1111
github.com/gruntwork-io/terratest v0.18.3
@@ -24,3 +24,4 @@ require (
2424
github.com/zclconf/go-cty v1.4.2 // indirect
2525
golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980 // indirect
2626
)
27+

go.sum

+4
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ
6767
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
6868
github.com/checkly/checkly-go-sdk v0.5.0 h1:1WwBUrG6nGfhRhFApn18Zh0USb5ZEO8K1eyWItNQAtE=
6969
github.com/checkly/checkly-go-sdk v0.5.0/go.mod h1:wkAoXD2cVCNQEXi9lHZqy/zONIAZc5D9frih6Gas3Rs=
70+
github.com/checkly/checkly-go-sdk v0.5.1 h1:rBFP0FokEzwySq+DHpaRKmb/Dbm6d60Z5VE4Bo8M5dY=
71+
github.com/checkly/checkly-go-sdk v0.5.1/go.mod h1:wkAoXD2cVCNQEXi9lHZqy/zONIAZc5D9frih6Gas3Rs=
7072
github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s=
7173
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
7274
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
@@ -188,8 +190,10 @@ github.com/hashicorp/terraform-exec v0.3.0 h1:5WLBsnv9BoEUGlHJZETROZZxw+qO3/TFQE
188190
github.com/hashicorp/terraform-exec v0.3.0/go.mod h1:yKWvMPtkTaHpeAmllw+1qdHZ7E5u+pAZ+x8e2jQF6gM=
189191
github.com/hashicorp/terraform-json v0.5.0 h1:7TV3/F3y7QVSuN4r9BEXqnWqrAyeOtON8f0wvREtyzs=
190192
github.com/hashicorp/terraform-json v0.5.0/go.mod h1:eAbqb4w0pSlRmdvl8fOyHAi/+8jnkVYN28gJkSJrLhU=
193+
github.com/hashicorp/terraform-plugin-sdk v1.16.0 h1:NrkXMRjHErUPPTHQkZ6JIn6bByiJzGnlJzH1rVdNEuE=
191194
github.com/hashicorp/terraform-plugin-sdk/v2 v2.0.1 h1:qG6EdnW2UrftQI4mBdIsWP4YWqYJXynZtl0shQYuU78=
192195
github.com/hashicorp/terraform-plugin-sdk/v2 v2.0.1/go.mod h1:BRz6UtYmksQJU0eMfahQR8fcJf8tIe77gn7YVm6rGD4=
196+
github.com/hashicorp/terraform-plugin-sdk/v2 v2.4.0 h1:2c+vG46celrDCsfYEIzaXxvBaAXCqlVG77LwtFz8cfs=
193197
github.com/hashicorp/terraform-plugin-test/v2 v2.0.0 h1:fYGV3nZvs8KFGKuY2NPAJDMNfVSDHo+U2FGFl3bPv1s=
194198
github.com/hashicorp/terraform-plugin-test/v2 v2.0.0/go.mod h1:C6VALgUlvaif+PnHyRGKWPTdQkMJK4NQ20VJolxZLI0=
195199
github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=

test.tf

+9
Original file line numberDiff line numberDiff line change
@@ -423,13 +423,22 @@ resource "checkly_alert_channel" "email_ac" {
423423
email {
424424
address = "[email protected]"
425425
}
426+
send_recovery = true
427+
send_failure = false
428+
send_degraded = true
429+
ssl_expiry = false
426430
}
427431

428432
resource "checkly_alert_channel" "slack_ac" {
429433
slack {
430434
channel = "checkly_alerts"
431435
url = "https://slack.com/webhookurl"
432436
}
437+
send_recovery = false
438+
send_failure = true
439+
send_degraded = false
440+
ssl_expiry = true
441+
ssl_expiry_threshold = 11
433442
}
434443

435444
resource "checkly_alert_channel" "sms_ac" {

0 commit comments

Comments
 (0)