Alerting: Add UID of rules to response that were affected by update group request (#75985)

* update storage's method InstertRules to return ids of added rules as slice to keep the same order as rules in the argument
* schematize response of update rule group endpoint, add created, updated, deleted fields that contain UID of affected rules.
* update integration tests to use the new fields
This commit is contained in:
Yuri Tseretyan
2023-10-06 18:11:24 -04:00
committed by GitHub
parent 6086a0916b
commit 2497db4bd6
16 changed files with 274 additions and 79 deletions

View File

@ -524,7 +524,7 @@ func TestIntegrationAlertAndGroupsQuery(t *testing.T) {
},
}
status, _ := apiClient.PostRulesGroup(t, "default", &rules)
_, status, _ := apiClient.PostRulesGroupWithStatus(t, "default", &rules)
assert.Equal(t, http.StatusAccepted, status)
}
@ -664,7 +664,7 @@ func TestIntegrationRulerAccess(t *testing.T) {
},
},
}
status, body := tc.client.PostRulesGroup(t, "default", &rules)
_, status, body := tc.client.PostRulesGroupWithStatus(t, "default", &rules)
assert.Equal(t, tc.expStatus, status)
res := &Response{}
err = json.Unmarshal([]byte(body), &res)
@ -1097,7 +1097,7 @@ func TestIntegrationAlertRuleCRUD(t *testing.T) {
tc.rule,
},
}
status, body := apiClient.PostRulesGroup(t, "default", &rules)
_, status, body := apiClient.PostRulesGroupWithStatus(t, "default", &rules)
res := &Response{}
err = json.Unmarshal([]byte(body), &res)
require.NoError(t, err)
@ -1170,9 +1170,12 @@ func TestIntegrationAlertRuleCRUD(t *testing.T) {
},
},
}
status, body := apiClient.PostRulesGroup(t, "default", &rules)
resp, status, _ := apiClient.PostRulesGroupWithStatus(t, "default", &rules)
assert.Equal(t, http.StatusAccepted, status)
require.JSONEq(t, `{"message":"rule group updated successfully"}`, body)
require.Equal(t, "rule group updated successfully", resp.Message)
assert.Len(t, resp.Created, 2)
assert.Empty(t, resp.Updated)
assert.Empty(t, resp.Deleted)
}
// With the rules created, let's make sure that rule definition is stored correctly.
@ -1339,7 +1342,7 @@ func TestIntegrationAlertRuleCRUD(t *testing.T) {
Interval: interval,
}
status, body := apiClient.PostRulesGroup(t, "default", &rules)
_, status, body := apiClient.PostRulesGroupWithStatus(t, "default", &rules)
assert.Equal(t, http.StatusNotFound, status)
var res map[string]any
assert.NoError(t, json.Unmarshal([]byte(body), &res))
@ -1445,7 +1448,7 @@ func TestIntegrationAlertRuleCRUD(t *testing.T) {
},
Interval: interval,
}
status, body := apiClient.PostRulesGroup(t, "default", &rules)
_, status, body := apiClient.PostRulesGroupWithStatus(t, "default", &rules)
assert.Equal(t, http.StatusBadRequest, status)
var res map[string]any
require.NoError(t, json.Unmarshal([]byte(body), &res))
@ -1519,9 +1522,10 @@ func TestIntegrationAlertRuleCRUD(t *testing.T) {
},
Interval: interval,
}
status, body := apiClient.PostRulesGroup(t, "default", &rules)
respModel, status, _ := apiClient.PostRulesGroupWithStatus(t, "default", &rules)
assert.Equal(t, http.StatusAccepted, status)
require.JSONEq(t, `{"message":"rule group updated successfully"}`, body)
require.Equal(t, respModel.Updated, []string{ruleUID})
require.Len(t, respModel.Deleted, 1)
// let's make sure that rule definitions are updated correctly.
u := fmt.Sprintf("http://grafana:password@%s/api/ruler/grafana/api/v1/rules/default", grafanaListedAddr)
@ -1637,9 +1641,9 @@ func TestIntegrationAlertRuleCRUD(t *testing.T) {
},
Interval: interval,
}
status, body := apiClient.PostRulesGroup(t, "default", &rules)
respModel, status, _ := apiClient.PostRulesGroupWithStatus(t, "default", &rules)
assert.Equal(t, http.StatusAccepted, status)
require.JSONEq(t, `{"message":"rule group updated successfully"}`, body)
require.Equal(t, respModel.Updated, []string{ruleUID})
// let's make sure that rule definitions are updated correctly.
u := fmt.Sprintf("http://grafana:password@%s/api/ruler/grafana/api/v1/rules/default", grafanaListedAddr)
@ -1723,9 +1727,12 @@ func TestIntegrationAlertRuleCRUD(t *testing.T) {
},
Interval: interval,
}
status, body := apiClient.PostRulesGroup(t, "default", &rules)
respModel, status, _ := apiClient.PostRulesGroupWithStatus(t, "default", &rules)
assert.Equal(t, http.StatusAccepted, status)
require.JSONEq(t, `{"message":"no changes detected in the rule group"}`, body)
require.Equal(t, "no changes detected in the rule group", respModel.Message)
assert.Empty(t, respModel.Created)
assert.Empty(t, respModel.Updated)
assert.Empty(t, respModel.Deleted)
// let's make sure that rule definitions are updated correctly.
u := fmt.Sprintf("http://grafana:password@%s/api/ruler/grafana/api/v1/rules/default", grafanaListedAddr)
@ -1993,7 +2000,7 @@ func TestIntegrationQuota(t *testing.T) {
},
},
}
status, body := apiClient.PostRulesGroup(t, "default", &rules)
_, status, body := apiClient.PostRulesGroupWithStatus(t, "default", &rules)
assert.Equal(t, http.StatusForbidden, status)
var res map[string]any
require.NoError(t, json.Unmarshal([]byte(body), &res))
@ -2030,9 +2037,9 @@ func TestIntegrationQuota(t *testing.T) {
},
}
status, body := apiClient.PostRulesGroup(t, "default", &rules)
respModel, status, _ := apiClient.PostRulesGroupWithStatus(t, "default", &rules)
assert.Equal(t, http.StatusAccepted, status)
require.JSONEq(t, `{"message":"rule group updated successfully"}`, body)
require.Len(t, respModel.Updated, 1)
// let's make sure that rule definitions are updated correctly.
u := fmt.Sprintf("http://grafana:password@%s/api/ruler/grafana/api/v1/rules/default", grafanaListedAddr)