Skip to content
This repository was archived by the owner on Jan 15, 2024. It is now read-only.

Commit 75b5368

Browse files
committed
Wrappers for message templates
1 parent 631a2ac commit 75b5368

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

alerting_message_template.go

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package gapi
2+
3+
import (
4+
"bytes"
5+
"encoding/json"
6+
"fmt"
7+
)
8+
9+
// AlertingMessageTemplate is a re-usable template for Grafana Alerting messages.
10+
type AlertingMessageTemplate struct {
11+
Name string `json:"name"`
12+
Template string `json:"template"`
13+
}
14+
15+
// MessageTemplates fetches all message templates.
16+
func (c *Client) MessageTemplates() ([]AlertingMessageTemplate, error) {
17+
ts := make([]AlertingMessageTemplate, 0)
18+
err := c.request("GET", "/api/v1/provisioning/templates", nil, nil, &ts)
19+
if err != nil {
20+
return nil, err
21+
}
22+
return ts, nil
23+
}
24+
25+
// MessageTemplate fetches a single message template, identified by its name.
26+
func (c *Client) MessageTemplate(name string) (*AlertingMessageTemplate, error) {
27+
t := AlertingMessageTemplate{}
28+
uri := fmt.Sprintf("/api/v1/provisioning/templates/%s", name)
29+
err := c.request("GET", uri, nil, nil, &t)
30+
if err != nil {
31+
return nil, err
32+
}
33+
return &t, err
34+
}
35+
36+
// SetMessageTemplate creates or updates a message template.
37+
func (c *Client) SetMessageTemplate(t *AlertingMessageTemplate) error {
38+
req := struct {
39+
Template string `json:"template"`
40+
}{Template: t.Template}
41+
body, err := json.Marshal(req)
42+
if err != nil {
43+
return err
44+
}
45+
46+
uri := fmt.Sprintf("/api/v1/provisioning/templates/%s", t.Name)
47+
return c.request("PUT", uri, nil, bytes.NewBuffer(body), nil)
48+
}
49+
50+
// DeleteMessageTemplate deletes a message template.
51+
func (c *Client) DeleteMessageTemplate(name string) error {
52+
uri := fmt.Sprintf("/api/v1/provisioning/templates/%s", name)
53+
return c.request("DELETE", uri, nil, nil, nil)
54+
}

0 commit comments

Comments
 (0)