From 4b927a3f9280e6e8a19c54afa993497968eaa30d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Mierzwa?= Date: Thu, 14 May 2020 15:37:36 +0100 Subject: [PATCH] feat(api): expose all receivers in the API response --- cmd/karma/api_test.go | 5 +++++ cmd/karma/views.go | 13 +++++++++++++ internal/models/api.go | 1 + 3 files changed, 19 insertions(+) diff --git a/cmd/karma/api_test.go b/cmd/karma/api_test.go index fe67aafa9..8493da951 100644 --- a/cmd/karma/api_test.go +++ b/cmd/karma/api_test.go @@ -1082,6 +1082,11 @@ func TestVerifyAllGroups(t *testing.T) { if !reflect.DeepEqual(ur.Filters, filtersExpected) { t.Errorf("[%s] Filters mismatch, expected %v but got %v", version, filtersExpected, ur.Filters) } + + expectedReceivers := []string{"by-cluster-service", "by-name"} + if diff := cmp.Diff(expectedReceivers, ur.Receivers); diff != "" { + t.Errorf("Incorrect receivers list (-want +got):\n%s", diff) + } } } diff --git a/cmd/karma/views.go b/cmd/karma/views.go index 6236dd56e..5761f77d5 100644 --- a/cmd/karma/views.go +++ b/cmd/karma/views.go @@ -223,12 +223,17 @@ func alerts(c *gin.Context) { } } + allReceivers := map[string]bool{} + var matches int for _, ag := range dedupedAlerts { perGridAlertGroup := map[string]*models.AlertGroup{} for _, alert := range ag.Alerts { alert := alert // scopelint pin + + allReceivers[alert.Receiver] = true + results := []bool{} if validFilters { for _, filter := range matchFilters { @@ -370,11 +375,19 @@ func alerts(c *gin.Context) { v, _ := c.GetQuery("gridSortReverse") gridSortReverse := v == "1" + receivers := []string{} + for k := range allReceivers { + k := k + receivers = append(receivers, k) + } + sort.Strings(receivers) + resp.Grids = sortGrids(c, gridLabel, grids, gridSortReverse) resp.Silences = silences resp.Colors = colors resp.Counters = countersToLabelStats(counters) resp.Filters = populateAPIFilters(matchFilters) + resp.Receivers = receivers data, err := json.Marshal(resp) if err != nil { diff --git a/internal/models/api.go b/internal/models/api.go index cf6122170..a8eca25ce 100644 --- a/internal/models/api.go +++ b/internal/models/api.go @@ -321,6 +321,7 @@ type AlertsResponse struct { Counters LabelNameStatsList `json:"counters"` Settings Settings `json:"settings"` Authentication AuthenticationInfo `json:"authentication"` + Receivers []string `json:"receivers"` } // Autocomplete is the structure of autocomplete object for filter hints