From 83fb83f5f19868f1ddc02d99fd7d7592289b8edb Mon Sep 17 00:00:00 2001 From: Kyle Brandt Date: Tue, 21 Feb 2017 12:28:25 -0500 Subject: [PATCH 1/2] cmd/bosun: fix seriesFunc tags function --- cmd/bosun/expr/funcs.go | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/cmd/bosun/expr/funcs.go b/cmd/bosun/expr/funcs.go index 7d2187ec76..c5b0f7d75c 100644 --- a/cmd/bosun/expr/funcs.go +++ b/cmd/bosun/expr/funcs.go @@ -44,6 +44,23 @@ func tagRemove(args []parse.Node) (parse.Tags, error) { return tags, nil } +func seriesFuncTags(args []parse.Node) (parse.Tags, error) { + t := make(parse.Tags) + text := args[0].(*parse.StringNode).Text + if text == "" { + return t, nil + } + ts, err := opentsdb.ParseTags(text) + if err != nil { + return nil, err + } + + for k := range ts { + t[k] = struct{}{} + } + return t, nil +} + func tagTranspose(args []parse.Node) (parse.Tags, error) { tags := make(parse.Tags) sp := strings.Split(args[1].(*parse.StringNode).Text, ",") @@ -309,7 +326,7 @@ var builtins = map[string]parse.Func{ VArgsPos: 1, VArgsOmit: true, Return: models.TypeSeriesSet, - Tags: tagFirst, + Tags: seriesFuncTags, F: SeriesFunc, }, "sort": { From 9bad218b1a55f6552a02c9a5ccc5405ab7f1f44b Mon Sep 17 00:00:00 2001 From: Kyle Brandt Date: Tue, 21 Feb 2017 12:29:23 -0500 Subject: [PATCH 2/2] cmd/bosun: allow empty tagset to be dependency --- cmd/bosun/conf/rule/rule.go | 2 +- cmd/bosun/sched/check.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/bosun/conf/rule/rule.go b/cmd/bosun/conf/rule/rule.go index 341b9c3931..3f09534f0e 100644 --- a/cmd/bosun/conf/rule/rule.go +++ b/cmd/bosun/conf/rule/rule.go @@ -630,7 +630,7 @@ func (c *Conf) loadAlert(s *parse.SectionNode) { if err != nil { c.error(err) } - if len(depTags.Intersection(tags)) < 1 { + if len(depTags) != 0 && len(depTags.Intersection(tags)) < 1 { c.errorf("Depends and crit/warn must share at least one tag.") } } diff --git a/cmd/bosun/sched/check.go b/cmd/bosun/sched/check.go index 82a1e98d76..9b3dfe6dfb 100644 --- a/cmd/bosun/sched/check.go +++ b/cmd/bosun/sched/check.go @@ -614,7 +614,7 @@ func markDependenciesUnevaluated(events map[models.AlertKey]*models.Event, deps continue } for _, dep := range deps { - if dep.Group.Overlaps(ak.Group()) { + if len(dep.Group) == 0 || dep.Group.Overlaps(ak.Group()) { ev.Unevaluated = true unevalCount++ }