[release-11.3.8] Alerting: Provisioning API returns 403 on quota exceeded for rule group PUT (#106483)
Alerting: Provisioning API returns 403 on quota exceeded for rule group PUT (#106409)
(cherry picked from commit 1df888c517)
This commit is contained in:
@@ -513,6 +513,9 @@ func (srv *ProvisioningSrv) RoutePutAlertRuleGroup(c *contextmodel.ReqContext, a
|
||||
if errors.Is(err, store.ErrOptimisticLock) {
|
||||
return ErrResp(http.StatusConflict, err, "")
|
||||
}
|
||||
if errors.Is(err, alerting_models.ErrQuotaReached) {
|
||||
return ErrResp(http.StatusForbidden, err, "")
|
||||
}
|
||||
if err != nil {
|
||||
return response.ErrOrFallback(http.StatusInternalServerError, "", err)
|
||||
}
|
||||
|
||||
@@ -573,6 +573,27 @@ func TestProvisioningApi(t *testing.T) {
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("have reached the rule quota, PUT returns 403", func(t *testing.T) {
|
||||
env := createTestEnv(t, testConfig)
|
||||
quotas := provisioning.MockQuotaChecker{}
|
||||
quotas.EXPECT().LimitExceeded()
|
||||
env.quotas = "as
|
||||
sut := createProvisioningSrvSutFromEnv(t, &env)
|
||||
group := definitions.AlertRuleGroup{
|
||||
Title: "test rule group",
|
||||
Interval: 60,
|
||||
Rules: []definitions.ProvisionedAlertRule{
|
||||
createTestAlertRule("test-alert-rule", 1),
|
||||
},
|
||||
}
|
||||
group.Rules[0].UID = "" // The rule is only created if UID is empty.
|
||||
rc := createTestRequestCtx()
|
||||
|
||||
response := sut.RoutePutAlertRuleGroup(&rc, group, "folder-uid", group.Title)
|
||||
|
||||
require.Equal(t, 403, response.Status())
|
||||
})
|
||||
|
||||
t.Run("exports", func(t *testing.T) {
|
||||
t.Run("alert rule group", func(t *testing.T) {
|
||||
t.Run("are present, GET returns 200", func(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user