From 62b7d85f7080465f3fc34fc94beb093124abbecf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Mierzwa?= Date: Thu, 6 Feb 2020 15:08:17 +0000 Subject: [PATCH] fix(tests): remove v0.61 mapper That version had problems, remove it --- internal/alertmanager/mapper.go | 2 - internal/mapper/v061/alerts.go | 144 -------------------------------- 2 files changed, 146 deletions(-) delete mode 100644 internal/mapper/v061/alerts.go diff --git a/internal/alertmanager/mapper.go b/internal/alertmanager/mapper.go index e0ebadc69..820571547 100644 --- a/internal/alertmanager/mapper.go +++ b/internal/alertmanager/mapper.go @@ -6,7 +6,6 @@ import ( v017 "github.com/prymitive/karma/internal/mapper/v017" v04 "github.com/prymitive/karma/internal/mapper/v04" v05 "github.com/prymitive/karma/internal/mapper/v05" - v061 "github.com/prymitive/karma/internal/mapper/v061" v062 "github.com/prymitive/karma/internal/mapper/v062" ) @@ -14,7 +13,6 @@ import ( func init() { mapper.RegisterAlertMapper(v04.AlertMapper{}) mapper.RegisterAlertMapper(v05.AlertMapper{}) - mapper.RegisterAlertMapper(v061.AlertMapper{}) mapper.RegisterAlertMapper(v062.AlertMapper{}) mapper.RegisterSilenceMapper(v04.SilenceMapper{}) mapper.RegisterSilenceMapper(v05.SilenceMapper{}) diff --git a/internal/mapper/v061/alerts.go b/internal/mapper/v061/alerts.go deleted file mode 100644 index 62a3592b3..000000000 --- a/internal/mapper/v061/alerts.go +++ /dev/null @@ -1,144 +0,0 @@ -// Package v061 package implements support for interacting with -// Alertmanager 0.6.1 -// Collected data will be mapped to karma internal schema defined the -// karma/models package -// This file defines Alertmanager alerts mapping -package v061 - -import ( - "encoding/json" - "errors" - "io" - "sort" - "time" - - "github.com/Masterminds/semver/v3" - "github.com/prymitive/karma/internal/mapper" - "github.com/prymitive/karma/internal/models" - "github.com/prymitive/karma/internal/uri" -) - -type alert struct { - Annotations map[string]string `json:"annotations"` - Labels map[string]string `json:"labels"` - StartsAt time.Time `json:"startsAt"` - GeneratorURL string `json:"generatorURL"` - Status string `json:"Status"` - SilencedBy []string `json:"silencedBy"` - InhibitedBy []string `json:"inhibitedBy"` -} - -type alertsGroups struct { - Labels map[string]string `json:"labels"` - Blocks []struct { - Alerts []alert `json:"alerts"` - RouteOps struct { - Receiver string `json:"receiver"` - } `json:"routeOpts"` - } `json:"blocks"` -} - -type alertsGroupsAPISchema struct { - Status string `json:"status"` - Data []alertsGroups `json:"data"` - Error string `json:"error"` -} - -type alertsGroupReceiver struct { - Name string - Groups []models.AlertGroup -} - -// AlertMapper implements Alertmanager API schema -type AlertMapper struct { - mapper.AlertMapper -} - -// AbsoluteURL for alerts API endpoint this mapper supports -func (m AlertMapper) AbsoluteURL(baseURI string) (string, error) { - return uri.JoinURL(baseURI, "api/v1/alerts/groups") -} - -// QueryArgs for HTTP requests send to the Alertmanager API endpoint -func (m AlertMapper) QueryArgs() string { - return "" -} - -// IsSupported returns true if given version string is supported -func (m AlertMapper) IsSupported(version string) bool { - versionRange, err := semver.NewConstraint("=0.6.1") - if err != nil { - panic(err) - } - return versionRange.Check(semver.MustParse(version)) -} - -// IsOpenAPI returns true is remote Alertmanager uses OpenAPI -func (m AlertMapper) IsOpenAPI() bool { - return false -} - -// Decode Alertmanager API response body and return karma model instances -func (m AlertMapper) Decode(source io.ReadCloser) ([]models.AlertGroup, error) { - groups := []models.AlertGroup{} - receivers := map[string]alertsGroupReceiver{} - resp := alertsGroupsAPISchema{} - - defer source.Close() - err := json.NewDecoder(source).Decode(&resp) - if err != nil { - return groups, err - } - - if resp.Status != mapper.AlertmanagerStatusString { - return groups, errors.New(resp.Error) - } - - for _, d := range resp.Data { - for _, b := range d.Blocks { - rcv, found := receivers[b.RouteOps.Receiver] - if !found { - rcv = alertsGroupReceiver{ - Name: b.RouteOps.Receiver, - } - receivers[b.RouteOps.Receiver] = rcv - } - alertList := models.AlertList{} - for _, a := range b.Alerts { - inhibitedBy := []string{} - if a.InhibitedBy != nil { - inhibitedBy = a.InhibitedBy - } - silencedBy := []string{} - if a.SilencedBy != nil { - silencedBy = a.SilencedBy - } - a := models.Alert{ - Receiver: rcv.Name, - Annotations: models.AnnotationsFromMap(a.Annotations), - Labels: a.Labels, - StartsAt: a.StartsAt, - GeneratorURL: a.GeneratorURL, - State: a.Status, - InhibitedBy: inhibitedBy, - SilencedBy: silencedBy, - } - sort.Strings(a.InhibitedBy) - sort.Strings(a.SilencedBy) - a.UpdateFingerprints() - alertList = append(alertList, a) - } - ug := models.AlertGroup{ - Receiver: rcv.Name, - Labels: d.Labels, - Alerts: alertList, - } - rcv.Groups = append(rcv.Groups, ug) - receivers[rcv.Name] = rcv - } - } - for _, rcv := range receivers { - groups = append(groups, rcv.Groups...) - } - return groups, nil -}