mirror of
https://github.com/prymitive/karma
synced 2026-05-21 04:33:07 +00:00
refactor(api): expect filter query args as an array instead of a single string
Using a single string separated by ',' means that we cannot use ',' in labels. Use arrays instead to fix that
This commit is contained in:
@@ -1,18 +1,15 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/prymitive/unsee/internal/alertmanager"
|
||||
"github.com/prymitive/unsee/internal/filters"
|
||||
"github.com/prymitive/unsee/internal/models"
|
||||
)
|
||||
|
||||
func getFiltersFromQuery(filterString string) ([]filters.FilterT, bool) {
|
||||
func getFiltersFromQuery(filterStrings []string) ([]filters.FilterT, bool) {
|
||||
validFilters := false
|
||||
matchFilters := []filters.FilterT{}
|
||||
qList := strings.Split(filterString, ",")
|
||||
for _, filterExpression := range qList {
|
||||
for _, filterExpression := range filterStrings {
|
||||
f := filters.NewFilter(filterExpression)
|
||||
if f.GetIsValid() {
|
||||
validFilters = true
|
||||
|
||||
2
views.go
2
views.go
@@ -63,7 +63,7 @@ func alerts(c *gin.Context) {
|
||||
|
||||
// get filters
|
||||
apiFilters := []models.Filter{}
|
||||
matchFilters, validFilters := getFiltersFromQuery(c.Query("q"))
|
||||
matchFilters, validFilters := getFiltersFromQuery(c.QueryArray("q"))
|
||||
|
||||
// set pointers for data store objects, need a lock until end of view is reached
|
||||
alerts := map[string]models.AlertGroup{}
|
||||
|
||||
@@ -45,7 +45,7 @@ func ginTestEngine() *gin.Engine {
|
||||
func TestIndex(t *testing.T) {
|
||||
mockConfig()
|
||||
r := ginTestEngine()
|
||||
req, _ := http.NewRequest("GET", "/?q=", nil)
|
||||
req, _ := http.NewRequest("GET", "/", nil)
|
||||
resp := httptest.NewRecorder()
|
||||
r.ServeHTTP(resp, req)
|
||||
if resp.Code != http.StatusOK {
|
||||
@@ -115,7 +115,7 @@ func TestAlerts(t *testing.T) {
|
||||
t.Logf("Testing alerts using mock files from Alertmanager %s", version)
|
||||
mockAlerts(version)
|
||||
r := ginTestEngine()
|
||||
req, _ := http.NewRequest("GET", "/alerts.json?q=@receiver=by-cluster-service,alertname=HTTP_Probe_Failed,instance=web1", nil)
|
||||
req, _ := http.NewRequest("GET", "/alerts.json?q=@receiver=by-cluster-service&q=alertname=HTTP_Probe_Failed&q=instance=web1", nil)
|
||||
resp := httptest.NewRecorder()
|
||||
r.ServeHTTP(resp, req)
|
||||
if resp.Code != http.StatusOK {
|
||||
@@ -182,7 +182,7 @@ func TestValidateAllAlerts(t *testing.T) {
|
||||
t.Logf("Validating alerts.json response using mock files from Alertmanager %s", version)
|
||||
mockAlerts(version)
|
||||
r := ginTestEngine()
|
||||
req, _ := http.NewRequest("GET", "/alerts.json?q=alertname=HTTP_Probe_Failed,instance=web1", nil)
|
||||
req, _ := http.NewRequest("GET", "/alerts.json?q=alertname=HTTP_Probe_Failed&q=instance=web1", nil)
|
||||
resp := httptest.NewRecorder()
|
||||
r.ServeHTTP(resp, req)
|
||||
if resp.Code != http.StatusOK {
|
||||
|
||||
Reference in New Issue
Block a user