From 68b0b8f4ba3614623d27f0f83881727c88fdf279 Mon Sep 17 00:00:00 2001 From: junotx Date: Thu, 1 Apr 2021 14:44:47 +0800 Subject: [PATCH] fix case-insensitive keyword query for alerting Signed-off-by: junotx --- pkg/api/alerting/v2alpha1/types.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/pkg/api/alerting/v2alpha1/types.go b/pkg/api/alerting/v2alpha1/types.go index c04194108..e2856ceb5 100644 --- a/pkg/api/alerting/v2alpha1/types.go +++ b/pkg/api/alerting/v2alpha1/types.go @@ -192,7 +192,7 @@ func (q *AlertingRuleQueryParams) Filter(rules []*GettableAlertingRule) []*Getta } func (q *AlertingRuleQueryParams) matches(rule *GettableAlertingRule) bool { - if q.NameContainFilter != "" && !strings.Contains(rule.Name, q.NameContainFilter) { + if q.NameContainFilter != "" && !containsI(rule.Name, q.NameContainFilter) { return false } if q.State != "" && q.State != rule.State { @@ -210,7 +210,7 @@ func (q *AlertingRuleQueryParams) matches(rule *GettableAlertingRule) bool { } } for k, v := range q.LabelContainFilters { - if fv, ok := rule.Labels[k]; !ok || !strings.Contains(fv, v) { + if fv, ok := rule.Labels[k]; !ok || !containsI(fv, v) { return false } } @@ -340,7 +340,7 @@ func (q *AlertQueryParams) matches(alert *Alert) bool { } } for k, v := range q.LabelContainFilters { - if fv, ok := alert.Labels[k]; !ok || !strings.Contains(fv, v) { + if fv, ok := alert.Labels[k]; !ok || !containsI(fv, v) { return false } } @@ -526,3 +526,10 @@ func NewBulkItemErrorServerResponse(ruleName string, err error) *BulkItemRespons Error: err, } } + +// containsI reports whether substr is case-insensitive within s. +func containsI(s, substr string) bool { + return strings.Contains( + strings.ToLower(s), + strings.ToLower(substr)) +}