[release-11.5.6] Alerting: Provisioning API returns 403 on quota exceeded for rule group PUT (#106486)

Alerting: Provisioning API returns 403 on quota exceeded for rule group PUT (#106409)

(cherry picked from commit 1df888c517)
pull/106514/head
Vadim Stepanov 2 weeks ago committed by GitHub
parent 500dd6db76
commit dd4a33adff
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 3
      pkg/services/ngalert/api/api_provisioning.go
  2. 20
      pkg/services/ngalert/api/api_provisioning_test.go

@ -519,6 +519,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)
}

@ -657,6 +657,26 @@ 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 = &quotas
sut := createProvisioningSrvSutFromEnv(t, &env)
group := definitions.AlertRuleGroup{
Title: "test rule group",
Interval: 60,
Rules: []definitions.ProvisionedAlertRule{
createTestAlertRule("test-alert-rule", 1),
},
}
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) {

Loading…
Cancel
Save