Skip to content

Commit

Permalink
Merge pull request #1536 from grafana/feat/alert-rule-notification-re…
Browse files Browse the repository at this point in the history
…ceiver

feat: add notification settings to alert rule group
  • Loading branch information
theSuess authored May 16, 2024
2 parents 85600bf + e149415 commit d11f814
Show file tree
Hide file tree
Showing 10 changed files with 241 additions and 38 deletions.
11 changes: 11 additions & 0 deletions api/v1beta1/grafanaalertrulegroup_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ type AlertRule struct {

IsPaused bool `json:"isPaused,omitempty"`

NotificationSettings *NotificationSettings `json:"notificationSettings,omitempty"`

Labels map[string]string `json:"labels,omitempty"`

// +kubebuilder:validation:Enum=Alerting;NoData;OK;KeepLast
Expand All @@ -89,6 +91,15 @@ type AlertRule struct {
UID string `json:"uid"`
}

type NotificationSettings struct {
GroupBy []string `json:"group_by,omitempty"`
GroupInterval string `json:"group_interval,omitempty"`
GroupWait string `json:"group_wait,omitempty"`
Receiver string `json:"receiver"`
MuteTimeIntervals []string `json:"mute_time_intervals,omitempty"`
RepeatInterval string `json:"repeat_interval,omitempty"`
}

type AlertQuery struct {
// Grafana data source unique identifier; it should be '__expr__' for a Server Side Expression operation.
DatasourceUID string `json:"datasourceUid,omitempty"`
Expand Down
30 changes: 30 additions & 0 deletions api/v1beta1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,27 @@ spec:
- OK
- KeepLast
type: string
notificationSettings:
properties:
group_by:
items:
type: string
type: array
group_interval:
type: string
group_wait:
type: string
mute_time_intervals:
items:
type: string
type: array
receiver:
type: string
repeat_interval:
type: string
required:
- receiver
type: object
title:
example: Always firing
maxLength: 190
Expand Down
21 changes: 21 additions & 0 deletions config/grafana.integreatly.org_grafanaalertrulegroups.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,27 @@ spec:
- OK
- KeepLast
type: string
notificationSettings:
properties:
group_by:
items:
type: string
type: array
group_interval:
type: string
group_wait:
type: string
mute_time_intervals:
items:
type: string
type: array
receiver:
type: string
repeat_interval:
type: string
required:
- receiver
type: object
title:
example: Always firing
maxLength: 190
Expand Down
9 changes: 9 additions & 0 deletions controllers/grafanaalertrulegroup_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,15 @@ func (r *GrafanaAlertRuleGroupReconciler) reconcileWithInstance(ctx context.Cont
Title: &rule.Title,
UID: rule.UID,
}
if rule.NotificationSettings != nil {
apiRule.NotificationSettings = &models.AlertRuleNotificationSettings{
Receiver: &rule.NotificationSettings.Receiver,
GroupBy: rule.NotificationSettings.GroupBy,
GroupWait: rule.NotificationSettings.GroupWait,
GroupInterval: rule.NotificationSettings.GroupInterval,
RepeatInterval: rule.NotificationSettings.RepeatInterval,
}
}
for idx, q := range rule.Data {
apiRule.Data[idx] = &models.AlertQuery{
DatasourceUID: q.DatasourceUID,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,27 @@ spec:
- OK
- KeepLast
type: string
notificationSettings:
properties:
group_by:
items:
type: string
type: array
group_interval:
type: string
group_wait:
type: string
mute_time_intervals:
items:
type: string
type: array
receiver:
type: string
repeat_interval:
type: string
required:
- receiver
type: object
title:
example: Always firing
maxLength: 190
Expand Down
21 changes: 21 additions & 0 deletions deploy/kustomize/base/crds.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,27 @@ spec:
- OK
- KeepLast
type: string
notificationSettings:
properties:
group_by:
items:
type: string
type: array
group_interval:
type: string
group_wait:
type: string
mute_time_intervals:
items:
type: string
type: array
receiver:
type: string
repeat_interval:
type: string
required:
- receiver
type: object
title:
example: Always firing
maxLength: 190
Expand Down
69 changes: 69 additions & 0 deletions docs/docs/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -333,6 +333,13 @@ AlertRule defines a specific rule to be evaluated. It is based on the upstream m
<br/>
</td>
<td>false</td>
</tr><tr>
<td><b><a href="#grafanaalertrulegroupspecrulesindexnotificationsettings">notificationSettings</a></b></td>
<td>object</td>
<td>
<br/>
</td>
<td>false</td>
</tr></tbody>
</table>

Expand Down Expand Up @@ -431,6 +438,68 @@ relative time range
</table>


### GrafanaAlertRuleGroup.spec.rules[index].notificationSettings
<sup><sup>[↩ Parent](#grafanaalertrulegroupspecrulesindex)</sup></sup>





<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Required</th>
</tr>
</thead>
<tbody><tr>
<td><b>receiver</b></td>
<td>string</td>
<td>
<br/>
</td>
<td>true</td>
</tr><tr>
<td><b>group_by</b></td>
<td>[]string</td>
<td>
<br/>
</td>
<td>false</td>
</tr><tr>
<td><b>group_interval</b></td>
<td>string</td>
<td>
<br/>
</td>
<td>false</td>
</tr><tr>
<td><b>group_wait</b></td>
<td>string</td>
<td>
<br/>
</td>
<td>false</td>
</tr><tr>
<td><b>mute_time_intervals</b></td>
<td>[]string</td>
<td>
<br/>
</td>
<td>false</td>
</tr><tr>
<td><b>repeat_interval</b></td>
<td>string</td>
<td>
<br/>
</td>
<td>false</td>
</tr></tbody>
</table>


### GrafanaAlertRuleGroup.status
<sup><sup>[↩ Parent](#grafanaalertrulegroup)</sup></sup>

Expand Down
24 changes: 12 additions & 12 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ require (
github.com/go-logr/logr v1.4.1
github.com/go-openapi/strfmt v0.23.0
github.com/google/go-jsonnet v0.20.0
github.com/grafana/grafana-openapi-client-go v0.0.0-20240215164046-eb0e60d27cb7
github.com/grafana/grafana-openapi-client-go v0.0.0-20240430202104-3ad0f7e4ee52
github.com/onsi/ginkgo v1.16.5
github.com/onsi/gomega v1.33.1
github.com/openshift/api v3.9.0+incompatible
Expand All @@ -26,20 +26,20 @@ require (
require (
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-openapi/analysis v0.22.2 // indirect
github.com/go-openapi/analysis v0.23.0 // indirect
github.com/go-openapi/errors v0.22.0 // indirect
github.com/go-openapi/loads v0.21.5 // indirect
github.com/go-openapi/runtime v0.27.1 // indirect
github.com/go-openapi/spec v0.20.14 // indirect
github.com/go-openapi/validate v0.23.0 // indirect
github.com/go-openapi/loads v0.22.0 // indirect
github.com/go-openapi/runtime v0.28.0 // indirect
github.com/go-openapi/spec v0.21.0 // indirect
github.com/go-openapi/validate v0.24.0 // indirect
github.com/google/gnostic-models v0.6.8 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/oklog/ulid v1.3.1 // indirect
github.com/opentracing/opentracing-go v1.2.0 // indirect
go.mongodb.org/mongo-driver v1.14.0 // indirect
go.opentelemetry.io/otel v1.19.0 // indirect
go.opentelemetry.io/otel/metric v1.19.0 // indirect
go.opentelemetry.io/otel/trace v1.19.0 // indirect
go.opentelemetry.io/otel v1.24.0 // indirect
go.opentelemetry.io/otel/metric v1.24.0 // indirect
go.opentelemetry.io/otel/trace v1.24.0 // indirect
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
golang.org/x/sync v0.6.0 // indirect
)
Expand All @@ -52,9 +52,9 @@ require (
github.com/evanphx/json-patch/v5 v5.9.0 // indirect
github.com/fsnotify/fsnotify v1.7.0 // indirect; indirectn
github.com/go-logr/zapr v1.3.0 // indirect
github.com/go-openapi/jsonpointer v0.20.2 // indirect
github.com/go-openapi/jsonreference v0.20.4 // indirect
github.com/go-openapi/swag v0.22.9 // indirect
github.com/go-openapi/jsonpointer v0.21.0 // indirect
github.com/go-openapi/jsonreference v0.21.0 // indirect
github.com/go-openapi/swag v0.23.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/protobuf v1.5.4 // indirect
Expand Down
Loading

0 comments on commit d11f814

Please sign in to comment.