diff --git a/CHANGELOG.md b/CHANGELOG.md index ec9a9293b23..7a75ad758c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,7 @@ ## Fixes * **Gzip**: Fixes bug gravatar images when gzip was enabled [#5952](https://github.com/grafana/grafana/issues/5952) +* **Alert list**: Now shows alert state changes even after adding manual annotations on dashboard [#9951](https://github.com/grafana/grafana/issues/9951) # 4.6.2 (2017-11-16) diff --git a/pkg/api/annotations.go b/pkg/api/annotations.go index 32a0a3035d3..0bf95557abc 100644 --- a/pkg/api/annotations.go +++ b/pkg/api/annotations.go @@ -22,6 +22,7 @@ func GetAnnotations(c *middleware.Context) Response { PanelId: c.QueryInt64("panelId"), Limit: c.QueryInt64("limit"), Tags: c.QueryStrings("tags"), + Type: c.Query("type"), } repo := annotations.GetRepository() diff --git a/pkg/services/annotations/annotations.go b/pkg/services/annotations/annotations.go index 2fdc824f172..02f927a76ba 100644 --- a/pkg/services/annotations/annotations.go +++ b/pkg/services/annotations/annotations.go @@ -17,6 +17,7 @@ type ItemQuery struct { DashboardId int64 `json:"dashboardId"` PanelId int64 `json:"panelId"` Tags []string `json:"tags"` + Type string `json:"type"` Limit int64 `json:"limit"` } diff --git a/pkg/services/sqlstore/annotation.go b/pkg/services/sqlstore/annotation.go index d97db10f630..effffb8bab4 100644 --- a/pkg/services/sqlstore/annotation.go +++ b/pkg/services/sqlstore/annotation.go @@ -158,6 +158,10 @@ func (r *SqlAnnotationRepo) Find(query *annotations.ItemQuery) ([]*annotations.I params = append(params, query.From, query.To) } + if query.Type == "alert" { + sql.WriteString(` AND annotation.alert_id > 0`) + } + if len(query.Tags) > 0 { keyValueFilters := []string{} diff --git a/pkg/services/sqlstore/annotation_test.go b/pkg/services/sqlstore/annotation_test.go index e1902b63fa8..2afd4479b66 100644 --- a/pkg/services/sqlstore/annotation_test.go +++ b/pkg/services/sqlstore/annotation_test.go @@ -42,6 +42,7 @@ func TestAnnotations(t *testing.T) { UserId: 1, DashboardId: 1, Text: "hello", + Type: "alert", Epoch: 10, Tags: []string{"outage", "error", "type:outage", "server:server-1"}, } @@ -91,6 +92,19 @@ func TestAnnotations(t *testing.T) { So(items, ShouldHaveLength, 0) }) + Convey("Should not find one when type filter does not match", func() { + items, err := repo.Find(&annotations.ItemQuery{ + OrgId: 1, + DashboardId: 1, + From: 1, + To: 15, + Type: "alert", + }) + + So(err, ShouldBeNil) + So(items, ShouldHaveLength, 0) + }) + Convey("Should find one when all tag filters does match", func() { items, err := repo.Find(&annotations.ItemQuery{ OrgId: 1,