Skip to content

Commit 5f49101

Browse files
Remove functions from utils.go
Signed-off-by: George Robinson <george.robinson@grafana.com>
1 parent 1efe79b commit 5f49101

File tree

5 files changed

+52
-51
lines changed

5 files changed

+52
-51
lines changed

cli/alert_add.go

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ package cli
1515

1616
import (
1717
"context"
18+
"errors"
1819
"fmt"
1920
"strconv"
2021
"time"
@@ -24,6 +25,8 @@ import (
2425

2526
"github.com/prometheus/alertmanager/api/v2/client/alert"
2627
"github.com/prometheus/alertmanager/api/v2/models"
28+
"github.com/prometheus/alertmanager/matchers/compat"
29+
"github.com/prometheus/alertmanager/pkg/labels"
2730
)
2831

2932
type alertAddCmd struct {
@@ -74,29 +77,45 @@ func (a *alertAddCmd) addAlert(ctx context.Context, _ *kingpin.ParseContext) err
7477
if len(a.labels) > 0 {
7578
// Allow the alertname label to be defined implicitly as the first argument rather
7679
// than explicitly as a key=value pair.
77-
if _, err := parseLabels([]string{a.labels[0]}); err != nil {
80+
if _, err := compat.Matcher(a.labels[0]); err != nil {
7881
a.labels[0] = fmt.Sprintf("alertname=%s", strconv.Quote(a.labels[0]))
7982
}
8083
}
8184

82-
labels, err := parseLabels(a.labels)
83-
if err != nil {
84-
return err
85+
ls := make(models.LabelSet, len(a.labels))
86+
for _, l := range a.labels {
87+
matcher, err := compat.Matcher(l)
88+
if err != nil {
89+
return err
90+
}
91+
if matcher.Type != labels.MatchEqual {
92+
return errors.New("labels must be specified as key=value pairs")
93+
}
94+
ls[matcher.Name] = matcher.Value
8595
}
8696

87-
annotations, err := parseLabels(a.annotations)
88-
if err != nil {
89-
return err
97+
annotations := make(models.LabelSet, len(a.annotations))
98+
for _, a := range a.annotations {
99+
matcher, err := compat.Matcher(a)
100+
if err != nil {
101+
return err
102+
}
103+
if matcher.Type != labels.MatchEqual {
104+
return errors.New("annotations must be specified as key=value pairs")
105+
}
106+
annotations[matcher.Name] = matcher.Value
90107
}
91108

92109
var startsAt, endsAt time.Time
93110
if a.start != "" {
111+
var err error
94112
startsAt, err = time.Parse(time.RFC3339, a.start)
95113
if err != nil {
96114
return err
97115
}
98116
}
99117
if a.end != "" {
118+
var err error
100119
endsAt, err = time.Parse(time.RFC3339, a.end)
101120
if err != nil {
102121
return err
@@ -106,7 +125,7 @@ func (a *alertAddCmd) addAlert(ctx context.Context, _ *kingpin.ParseContext) err
106125
pa := &models.PostableAlert{
107126
Alert: models.Alert{
108127
GeneratorURL: strfmt.URI(a.generatorURL),
109-
Labels: labels,
128+
Labels: ls,
110129
},
111130
Annotations: annotations,
112131
StartsAt: strfmt.DateTime(startsAt),
@@ -117,6 +136,6 @@ func (a *alertAddCmd) addAlert(ctx context.Context, _ *kingpin.ParseContext) err
117136

118137
amclient := NewAlertmanagerClient(alertmanagerURL)
119138

120-
_, err = amclient.Alert.PostAlerts(alertParams)
139+
_, err := amclient.Alert.PostAlerts(alertParams)
121140
return err
122141
}

cli/silence_add.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ import (
2727

2828
"github.com/prometheus/alertmanager/api/v2/client/silence"
2929
"github.com/prometheus/alertmanager/api/v2/models"
30+
"github.com/prometheus/alertmanager/matchers/compat"
31+
"github.com/prometheus/alertmanager/pkg/labels"
3032
)
3133

3234
func username() string {
@@ -93,17 +95,20 @@ func (c *silenceAddCmd) add(ctx context.Context, _ *kingpin.ParseContext) error
9395
// If the parser fails then we likely don't have a (=|=~|!=|!~) so lets
9496
// assume that the user wants alertname=<arg> and prepend `alertname=`
9597
// to the front.
96-
_, err := parseMatchers([]string{c.matchers[0]})
98+
_, err := compat.Matcher(c.matchers[0])
9799
if err != nil {
98100
c.matchers[0] = fmt.Sprintf("alertname=%s", strconv.Quote(c.matchers[0]))
99101
}
100102
}
101103

102-
matchers, err := parseMatchers(c.matchers)
103-
if err != nil {
104-
return err
104+
matchers := make([]labels.Matcher, 0, len(c.matchers))
105+
for _, s := range c.matchers {
106+
m, err := compat.Matcher(s)
107+
if err != nil {
108+
return err
109+
}
110+
matchers = append(matchers, *m)
105111
}
106-
107112
if len(matchers) < 1 {
108113
return fmt.Errorf("no matchers specified")
109114
}

cli/silence_query.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
"github.com/prometheus/alertmanager/api/v2/client/silence"
2626
"github.com/prometheus/alertmanager/api/v2/models"
2727
"github.com/prometheus/alertmanager/cli/format"
28+
"github.com/prometheus/alertmanager/matchers/compat"
2829
)
2930

3031
type silenceQueryCmd struct {
@@ -98,7 +99,7 @@ func (c *silenceQueryCmd) query(ctx context.Context, _ *kingpin.ParseContext) er
9899
// If the parser fails then we likely don't have a (=|=~|!=|!~) so lets
99100
// assume that the user wants alertname=<arg> and prepend `alertname=`
100101
// to the front.
101-
_, err := parseMatchers([]string{c.matchers[0]})
102+
_, err := compat.Matcher(c.matchers[0])
102103
if err != nil {
103104
c.matchers[0] = fmt.Sprintf("alertname=%s", strconv.Quote(c.matchers[0]))
104105
}

cli/test_routing.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ import (
2424

2525
"github.com/prometheus/alertmanager/api/v2/models"
2626
"github.com/prometheus/alertmanager/dispatch"
27+
"github.com/prometheus/alertmanager/matchers/compat"
28+
"github.com/prometheus/alertmanager/pkg/labels"
2729
)
2830

2931
const routingTestHelp = `Test alert routing
@@ -80,9 +82,16 @@ func (c *routingShow) routingTestAction(ctx context.Context, _ *kingpin.ParseCon
8082
mainRoute := dispatch.NewRoute(cfg.Route, nil)
8183

8284
// Parse labels to LabelSet.
83-
ls, err := parseLabels(c.labels)
84-
if err != nil {
85-
kingpin.Fatalf("Failed to parse labels: %v\n", err)
85+
ls := make(models.LabelSet, len(c.labels))
86+
for _, l := range c.labels {
87+
matcher, err := compat.Matcher(l)
88+
if err != nil {
89+
kingpin.Fatalf("Failed to parse labels: %v\n", err)
90+
}
91+
if matcher.Type != labels.MatchEqual {
92+
kingpin.Fatalf("%s\n", "Labels must be specified as key=value pairs")
93+
}
94+
ls[matcher.Name] = matcher.Value
8695
}
8796

8897
if c.debugTree {

cli/utils.go

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -26,23 +26,9 @@ import (
2626
"github.com/prometheus/alertmanager/api/v2/client/general"
2727
"github.com/prometheus/alertmanager/api/v2/models"
2828
"github.com/prometheus/alertmanager/config"
29-
"github.com/prometheus/alertmanager/matchers/compat"
3029
"github.com/prometheus/alertmanager/pkg/labels"
3130
)
3231

33-
// parseMatchers parses a list of matchers (cli arguments).
34-
func parseMatchers(inputMatchers []string) ([]labels.Matcher, error) {
35-
matchers := make([]labels.Matcher, 0, len(inputMatchers))
36-
for _, s := range inputMatchers {
37-
matcher, err := compat.Matcher(s)
38-
if err != nil {
39-
return []labels.Matcher{}, err
40-
}
41-
matchers = append(matchers, *matcher)
42-
}
43-
return matchers, nil
44-
}
45-
4632
// getRemoteAlertmanagerConfigStatus returns status responsecontaining configuration from remote Alertmanager
4733
func getRemoteAlertmanagerConfigStatus(ctx context.Context, alertmanagerURL *url.URL) (*models.AlertmanagerStatus, error) {
4834
amclient := NewAlertmanagerClient(alertmanagerURL)
@@ -92,25 +78,6 @@ func convertClientToCommonLabelSet(cls models.LabelSet) model.LabelSet {
9278
return mls
9379
}
9480

95-
// parseLabels parses a list of labels (cli arguments).
96-
func parseLabels(inputLabels []string) (models.LabelSet, error) {
97-
labelSet := make(models.LabelSet, len(inputLabels))
98-
99-
for _, l := range inputLabels {
100-
matcher, err := compat.Matcher(l)
101-
if err != nil {
102-
return models.LabelSet{}, err
103-
}
104-
if matcher.Type != labels.MatchEqual {
105-
return models.LabelSet{}, errors.New("labels must be specified as key=value pairs")
106-
}
107-
108-
labelSet[matcher.Name] = matcher.Value
109-
}
110-
111-
return labelSet, nil
112-
}
113-
11481
// TypeMatchers only valid for when you are going to add a silence
11582
func TypeMatchers(matchers []labels.Matcher) models.Matchers {
11683
typeMatchers := make(models.Matchers, len(matchers))

0 commit comments

Comments
 (0)