Skip to content

Commit

Permalink
pkg/rules/rulespb.AlertState: marshal JSON as lowercase (thanos-io#2834)
Browse files Browse the repository at this point in the history
Currently, alert state is rendered as upper case.
In Prometheus it is lower case.
This fixes it.

Signed-off-by: Sergiusz Urbaniak <[email protected]>
  • Loading branch information
s-urbaniak authored and paulfantom committed Jul 9, 2020
1 parent 9c227bc commit c972643
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 8 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,12 @@ We use *breaking* word for marking changes that are not backward compatible (rel

## Unreleased

### Fixed

- [#2834](https://github.com/thanos-io/thanos/pull/2834) Query: Fix rendered JSON state value for rules and alerts should be in lowercase

### Changed

## [v0.14.0-rc.1](https://github.com/thanos-io/thanos/releases/tag/v0.14.0-rc.1) - 2020.07.07

### Fixed
Expand Down
8 changes: 4 additions & 4 deletions pkg/query/api/v1_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1318,7 +1318,7 @@ func TestRulesHandler(t *testing.T) {
Type: "recording",
},
testpromcompatibility.AlertingRule{
State: all[2].GetAlert().State.String(),
State: strings.ToLower(all[2].GetAlert().State.String()),
Name: all[2].GetAlert().Name,
Query: all[2].GetAlert().Query,
Labels: storepb.LabelsToPromLabels(all[2].GetAlert().Labels.Labels),
Expand All @@ -1332,15 +1332,15 @@ func TestRulesHandler(t *testing.T) {
{
Labels: storepb.LabelsToPromLabels(all[2].GetAlert().Alerts[0].Labels.Labels),
Annotations: storepb.LabelsToPromLabels(all[2].GetAlert().Alerts[0].Annotations.Labels),
State: all[2].GetAlert().Alerts[0].State.String(),
State: strings.ToLower(all[2].GetAlert().Alerts[0].State.String()),
ActiveAt: all[2].GetAlert().Alerts[0].ActiveAt,
Value: all[2].GetAlert().Alerts[0].Value,
PartialResponseStrategy: all[2].GetAlert().Alerts[0].PartialResponseStrategy.String(),
},
{
Labels: storepb.LabelsToPromLabels(all[2].GetAlert().Alerts[1].Labels.Labels),
Annotations: storepb.LabelsToPromLabels(all[2].GetAlert().Alerts[1].Annotations.Labels),
State: all[2].GetAlert().Alerts[1].State.String(),
State: strings.ToLower(all[2].GetAlert().Alerts[1].State.String()),
ActiveAt: all[2].GetAlert().Alerts[1].ActiveAt,
Value: all[2].GetAlert().Alerts[1].Value,
PartialResponseStrategy: all[2].GetAlert().Alerts[1].PartialResponseStrategy.String(),
Expand All @@ -1349,7 +1349,7 @@ func TestRulesHandler(t *testing.T) {
Type: "alerting",
},
testpromcompatibility.AlertingRule{
State: all[3].GetAlert().State.String(),
State: strings.ToLower(all[3].GetAlert().State.String()),
Name: all[3].GetAlert().Name,
Query: all[3].GetAlert().Query,
Labels: storepb.LabelsToPromLabels(all[3].GetAlert().Labels.Labels),
Expand Down
2 changes: 1 addition & 1 deletion pkg/rules/rulespb/custom.go
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,7 @@ func (x *AlertState) UnmarshalJSON(entry []byte) error {
}

func (x *AlertState) MarshalJSON() ([]byte, error) {
return []byte(strconv.Quote(x.String())), nil
return []byte(strconv.Quote(strings.ToLower(x.String()))), nil
}

// Compare compares alert state x and y and returns:
Expand Down
6 changes: 3 additions & 3 deletions pkg/rules/rulespb/custom_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -207,23 +207,23 @@ func TestJSONUnmarshalMarshal(t *testing.T) {
Annotations: labels.Labels{
{Name: "annotation1", Value: "2"},
},
State: "INACTIVE",
State: "inactive",
ActiveAt: nil,
Value: "1",
PartialResponseStrategy: "WARN",
},
{
Labels: nil,
Annotations: nil,
State: "FIRING",
State: "firing",
ActiveAt: &twoHoursAgo,
Value: "2143",
PartialResponseStrategy: "ABORT",
},
},
LastError: "1",
Duration: 60,
State: "PENDING",
State: "pending",
LastEvaluation: now.Add(-1 * time.Minute),
EvaluationTime: 1.1,
},
Expand Down

0 comments on commit c972643

Please sign in to comment.