forked from grafana/grafana
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcompat_silences.go
69 lines (59 loc) · 2.01 KB
/
compat_silences.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package api
import (
"fmt"
"github.com/grafana/grafana/pkg/services/ngalert/api/tooling/definitions"
"github.com/grafana/grafana/pkg/services/ngalert/models"
)
// Silence-specific compat functions to convert between API and model types.
func SilenceToGettableGrafanaSilence(s *models.SilenceWithMetadata) definitions.GettableGrafanaSilence {
gettable := definitions.GettableGrafanaSilence{
GettableSilence: (*definitions.GettableSilence)(s.Silence),
}
if s.Metadata.Permissions != nil {
gettable.Permissions = make(map[definitions.SilencePermission]bool, len(*s.Metadata.Permissions))
for _, permission := range models.SilencePermissions() {
p, err := SilencePermissionToAPI(permission)
if err != nil {
// Skip unknown permissions in response.
continue
}
gettable.Permissions[p] = s.Metadata.Permissions.Has(permission)
}
}
if s.Metadata.RuleMetadata != nil {
gettable.Metadata = &definitions.SilenceMetadata{
RuleUID: s.Metadata.RuleMetadata.RuleUID,
RuleTitle: s.Metadata.RuleMetadata.RuleTitle,
FolderUID: s.Metadata.RuleMetadata.FolderUID,
}
}
return gettable
}
func SilencesToGettableGrafanaSilences(silences []*models.SilenceWithMetadata) definitions.GettableGrafanaSilences {
res := make(definitions.GettableGrafanaSilences, 0, len(silences))
for _, sil := range silences {
apiSil := SilenceToGettableGrafanaSilence(sil)
res = append(res, &apiSil)
}
return res
}
func PostableSilenceToSilence(s definitions.PostableSilence) models.Silence {
return models.Silence{
ID: &s.ID,
Status: nil,
UpdatedAt: nil,
Silence: s.Silence,
}
}
func SilencePermissionToAPI(p models.SilencePermission) (definitions.SilencePermission, error) {
switch p {
case models.SilencePermissionRead:
return definitions.SilencePermissionRead, nil
case models.SilencePermissionCreate:
return definitions.SilencePermissionCreate, nil
case models.SilencePermissionWrite:
return definitions.SilencePermissionWrite, nil
default:
return "", fmt.Errorf("unknown permission: %s", p)
}
}