Skip to content

Commit 3b74b81

Browse files
authored
add grafana_oncall_user_notification_rule resource (#1653)
* add `grafana_oncall_user_notification_rule` resource * WIP * WIP * WIP * WIP * docs + update `github.com/grafana/amixr-api-go-client` package to latest version * linting * remove unused code * update `type` documentation * update tests * `go generate` * `make golangci-lint` * update tests * update tests * update tests * change test user_id * change test user id * update tests * update tests * update tests
1 parent 7e0ceeb commit 3b74b81

File tree

8 files changed

+681
-1
lines changed

8 files changed

+681
-1
lines changed
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
---
2+
# generated by https://github.com/hashicorp/terraform-plugin-docs
3+
page_title: "grafana_oncall_user_notification_rule Resource - terraform-provider-grafana"
4+
subcategory: "OnCall"
5+
description: |-
6+
HTTP API https://grafana.com/docs/oncall/latest/oncall-api-reference/personal_notification_rules/
7+
Note: you must be running Grafana OnCall >= v1.8.0 to use this resource.
8+
---
9+
10+
# grafana_oncall_user_notification_rule (Resource)
11+
12+
* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/personal_notification_rules/)
13+
14+
**Note**: you must be running Grafana OnCall >= v1.8.0 to use this resource.
15+
16+
## Example Usage
17+
18+
```terraform
19+
data "grafana_oncall_user" "my_user" {
20+
provider = grafana.oncall
21+
username = "my_username"
22+
}
23+
24+
resource "grafana_oncall_user_notification_rule" "my_user_step_1" {
25+
provider = grafana.oncall
26+
user_id = data.grafana_oncall_user.my_user.id
27+
position = 0
28+
type = "notify_by_mobile_app"
29+
}
30+
31+
resource "grafana_oncall_user_notification_rule" "my_user_step_2" {
32+
provider = grafana.oncall
33+
user_id = data.grafana_oncall_user.my_user.id
34+
position = 1
35+
duration = 600 # 10 minutes
36+
type = "wait"
37+
}
38+
39+
resource "grafana_oncall_user_notification_rule" "my_user_step_3" {
40+
provider = grafana.oncall
41+
user_id = data.grafana_oncall_user.my_user.id
42+
position = 2
43+
type = "notify_by_phone_call"
44+
}
45+
46+
resource "grafana_oncall_user_notification_rule" "my_user_step_4" {
47+
provider = grafana.oncall
48+
user_id = data.grafana_oncall_user.my_user.id
49+
position = 3
50+
duration = 300 # 5 minutes
51+
type = "wait"
52+
}
53+
54+
resource "grafana_oncall_user_notification_rule" "my_user_step_5" {
55+
provider = grafana.oncall
56+
user_id = data.grafana_oncall_user.my_user.id
57+
position = 4
58+
type = "notify_by_slack"
59+
}
60+
61+
resource "grafana_oncall_user_notification_rule" "my_user_important_step_1" {
62+
provider = grafana.oncall
63+
user_id = data.grafana_oncall_user.my_user.id
64+
important = true
65+
position = 0
66+
type = "notify_by_mobile_app_critical"
67+
}
68+
69+
resource "grafana_oncall_user_notification_rule" "my_user_important_step_2" {
70+
provider = grafana.oncall
71+
user_id = data.grafana_oncall_user.my_user.id
72+
important = true
73+
position = 1
74+
duration = 300 # 5 minutes
75+
type = "wait"
76+
}
77+
78+
resource "grafana_oncall_user_notification_rule" "my_user_important_step_3" {
79+
provider = grafana.oncall
80+
user_id = data.grafana_oncall_user.my_user.id
81+
important = true
82+
position = 2
83+
type = "notify_by_mobile_app_critical"
84+
}
85+
```
86+
87+
<!-- schema generated by tfplugindocs -->
88+
## Schema
89+
90+
### Required
91+
92+
- `type` (String) The type of notification rule. Can be wait, notify_by_slack, notify_by_msteams, notify_by_sms, notify_by_phone_call, notify_by_telegram, notify_by_email, notify_by_mobile_app, notify_by_mobile_app_critical. NOTE: `notify_by_msteams` is only available for Grafana Cloud customers.
93+
- `user_id` (String) User ID
94+
95+
### Optional
96+
97+
- `duration` (Number) A time in seconds to wait (when `type=wait`). Can be 60, 300, 900, 1800, 3600
98+
- `important` (Boolean) Boolean value which indicates if a rule is “important”
99+
- `position` (Number) Personal notification rules execute one after another starting from position=0. A new escalation policy created with a position of an existing escalation policy will move the old one (and all following) down on the list.
100+
101+
### Read-Only
102+
103+
- `id` (String) The ID of this resource.
104+
105+
## Import
106+
107+
Import is supported using the following syntax:
108+
109+
```shell
110+
terraform import grafana_oncall_user_notification_rule.name "{{ id }}"
111+
```
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
terraform import grafana_oncall_user_notification_rule.name "{{ id }}"
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
data "grafana_oncall_user" "my_user" {
2+
provider = grafana.oncall
3+
username = "my_username"
4+
}
5+
6+
resource "grafana_oncall_user_notification_rule" "my_user_step_1" {
7+
provider = grafana.oncall
8+
user_id = data.grafana_oncall_user.my_user.id
9+
position = 0
10+
type = "notify_by_mobile_app"
11+
}
12+
13+
resource "grafana_oncall_user_notification_rule" "my_user_step_2" {
14+
provider = grafana.oncall
15+
user_id = data.grafana_oncall_user.my_user.id
16+
position = 1
17+
duration = 600 # 10 minutes
18+
type = "wait"
19+
}
20+
21+
resource "grafana_oncall_user_notification_rule" "my_user_step_3" {
22+
provider = grafana.oncall
23+
user_id = data.grafana_oncall_user.my_user.id
24+
position = 2
25+
type = "notify_by_phone_call"
26+
}
27+
28+
resource "grafana_oncall_user_notification_rule" "my_user_step_4" {
29+
provider = grafana.oncall
30+
user_id = data.grafana_oncall_user.my_user.id
31+
position = 3
32+
duration = 300 # 5 minutes
33+
type = "wait"
34+
}
35+
36+
resource "grafana_oncall_user_notification_rule" "my_user_step_5" {
37+
provider = grafana.oncall
38+
user_id = data.grafana_oncall_user.my_user.id
39+
position = 4
40+
type = "notify_by_slack"
41+
}
42+
43+
resource "grafana_oncall_user_notification_rule" "my_user_important_step_1" {
44+
provider = grafana.oncall
45+
user_id = data.grafana_oncall_user.my_user.id
46+
important = true
47+
position = 0
48+
type = "notify_by_mobile_app_critical"
49+
}
50+
51+
resource "grafana_oncall_user_notification_rule" "my_user_important_step_2" {
52+
provider = grafana.oncall
53+
user_id = data.grafana_oncall_user.my_user.id
54+
important = true
55+
position = 1
56+
duration = 300 # 5 minutes
57+
type = "wait"
58+
}
59+
60+
resource "grafana_oncall_user_notification_rule" "my_user_important_step_3" {
61+
provider = grafana.oncall
62+
user_id = data.grafana_oncall_user.my_user.id
63+
important = true
64+
position = 2
65+
type = "notify_by_mobile_app_critical"
66+
}

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ require (
99
github.com/fatih/color v1.17.0
1010
github.com/go-openapi/runtime v0.28.0
1111
github.com/go-openapi/strfmt v0.23.0
12-
github.com/grafana/amixr-api-go-client v0.0.12-0.20240410110211-c9f68db085c4 // main branch
12+
github.com/grafana/amixr-api-go-client v0.0.12 // main branch
1313
github.com/grafana/grafana-com-public-clients/go/gcom v0.0.0-20240322153219-42c6a1d2bcab
1414
github.com/grafana/grafana-openapi-client-go v0.0.0-20240523010106-657d101fcbd9
1515
github.com/grafana/machine-learning-go-client v0.7.0

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,8 @@ github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
136136
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
137137
github.com/grafana/amixr-api-go-client v0.0.12-0.20240410110211-c9f68db085c4 h1:e7cZfDiNodjQn63be9m8zfnvMEQAMqHVFswjcbdlspk=
138138
github.com/grafana/amixr-api-go-client v0.0.12-0.20240410110211-c9f68db085c4/go.mod h1:N6x26XUrM5zGtK5zL5vNJnAn2JFMxLFPPLTw/6pDkFE=
139+
github.com/grafana/amixr-api-go-client v0.0.12 h1:oEHZTBhxoZ35EsfeccZBJGPKhZUVOmdSir3WWnSJMLc=
140+
github.com/grafana/amixr-api-go-client v0.0.12/go.mod h1:N6x26XUrM5zGtK5zL5vNJnAn2JFMxLFPPLTw/6pDkFE=
139141
github.com/grafana/grafana-com-public-clients/go/gcom v0.0.0-20240322153219-42c6a1d2bcab h1:/5R8NO996/keDkZqKXEkU3/QgFs1wzChKYkakjsBpRk=
140142
github.com/grafana/grafana-com-public-clients/go/gcom v0.0.0-20240322153219-42c6a1d2bcab/go.mod h1:6sYY1qgwYfSDNQhKQA0tar8Oc38cIGfyqwejhxoOsPs=
141143
github.com/grafana/grafana-openapi-client-go v0.0.0-20240523010106-657d101fcbd9 h1:lOumw0RmkvKsTRMm6e5x2x6EbtyTeIKhy8ZJaK1KW9w=

0 commit comments

Comments
 (0)