Alerting: add route owner middleware (#73869)

alerting: add route owner middleware

Signed-off-by: bergquist <carl.bergquist@gmail.com>
This commit is contained in:
Carl Bergquist
2023-08-29 12:43:33 +02:00
committed by GitHub
parent fe1563882a
commit 10a82e30ba
8 changed files with 89 additions and 0 deletions
@@ -12,6 +12,7 @@ import (
"github.com/grafana/grafana/pkg/api/response"
"github.com/grafana/grafana/pkg/api/routing"
"github.com/grafana/grafana/pkg/middleware"
"github.com/grafana/grafana/pkg/middleware/requestmeta"
contextmodel "github.com/grafana/grafana/pkg/services/contexthandler/model"
apimodels "github.com/grafana/grafana/pkg/services/ngalert/api/tooling/definitions"
"github.com/grafana/grafana/pkg/services/ngalert/metrics"
@@ -216,6 +217,7 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
api.RouteRegister.Group("", func(group routing.RouteRegister) {
group.Delete(
toMacaronPath("/api/v1/provisioning/alert-rules/{UID}"),
requestmeta.SetOwner(requestmeta.TeamAlerting),
api.authorize(http.MethodDelete, "/api/v1/provisioning/alert-rules/{UID}"),
metrics.Instrument(
http.MethodDelete,
@@ -226,6 +228,7 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
)
group.Delete(
toMacaronPath("/api/v1/provisioning/contact-points/{UID}"),
requestmeta.SetOwner(requestmeta.TeamAlerting),
api.authorize(http.MethodDelete, "/api/v1/provisioning/contact-points/{UID}"),
metrics.Instrument(
http.MethodDelete,
@@ -236,6 +239,7 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
)
group.Delete(
toMacaronPath("/api/v1/provisioning/mute-timings/{name}"),
requestmeta.SetOwner(requestmeta.TeamAlerting),
api.authorize(http.MethodDelete, "/api/v1/provisioning/mute-timings/{name}"),
metrics.Instrument(
http.MethodDelete,
@@ -246,6 +250,7 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
)
group.Delete(
toMacaronPath("/api/v1/provisioning/templates/{name}"),
requestmeta.SetOwner(requestmeta.TeamAlerting),
api.authorize(http.MethodDelete, "/api/v1/provisioning/templates/{name}"),
metrics.Instrument(
http.MethodDelete,
@@ -256,6 +261,7 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
)
group.Get(
toMacaronPath("/api/v1/provisioning/alert-rules/{UID}"),
requestmeta.SetOwner(requestmeta.TeamAlerting),
api.authorize(http.MethodGet, "/api/v1/provisioning/alert-rules/{UID}"),
metrics.Instrument(
http.MethodGet,
@@ -266,6 +272,7 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
)
group.Get(
toMacaronPath("/api/v1/provisioning/alert-rules/{UID}/export"),
requestmeta.SetOwner(requestmeta.TeamAlerting),
api.authorize(http.MethodGet, "/api/v1/provisioning/alert-rules/{UID}/export"),
metrics.Instrument(
http.MethodGet,
@@ -276,6 +283,7 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
)
group.Get(
toMacaronPath("/api/v1/provisioning/folder/{FolderUID}/rule-groups/{Group}"),
requestmeta.SetOwner(requestmeta.TeamAlerting),
api.authorize(http.MethodGet, "/api/v1/provisioning/folder/{FolderUID}/rule-groups/{Group}"),
metrics.Instrument(
http.MethodGet,
@@ -286,6 +294,7 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
)
group.Get(
toMacaronPath("/api/v1/provisioning/folder/{FolderUID}/rule-groups/{Group}/export"),
requestmeta.SetOwner(requestmeta.TeamAlerting),
api.authorize(http.MethodGet, "/api/v1/provisioning/folder/{FolderUID}/rule-groups/{Group}/export"),
metrics.Instrument(
http.MethodGet,
@@ -296,6 +305,7 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
)
group.Get(
toMacaronPath("/api/v1/provisioning/alert-rules"),
requestmeta.SetOwner(requestmeta.TeamAlerting),
api.authorize(http.MethodGet, "/api/v1/provisioning/alert-rules"),
metrics.Instrument(
http.MethodGet,
@@ -306,6 +316,7 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
)
group.Get(
toMacaronPath("/api/v1/provisioning/alert-rules/export"),
requestmeta.SetOwner(requestmeta.TeamAlerting),
api.authorize(http.MethodGet, "/api/v1/provisioning/alert-rules/export"),
metrics.Instrument(
http.MethodGet,
@@ -316,6 +327,7 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
)
group.Get(
toMacaronPath("/api/v1/provisioning/contact-points"),
requestmeta.SetOwner(requestmeta.TeamAlerting),
api.authorize(http.MethodGet, "/api/v1/provisioning/contact-points"),
metrics.Instrument(
http.MethodGet,
@@ -326,6 +338,7 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
)
group.Get(
toMacaronPath("/api/v1/provisioning/contact-points/export"),
requestmeta.SetOwner(requestmeta.TeamAlerting),
api.authorize(http.MethodGet, "/api/v1/provisioning/contact-points/export"),
metrics.Instrument(
http.MethodGet,
@@ -336,6 +349,7 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
)
group.Get(
toMacaronPath("/api/v1/provisioning/mute-timings/{name}"),
requestmeta.SetOwner(requestmeta.TeamAlerting),
api.authorize(http.MethodGet, "/api/v1/provisioning/mute-timings/{name}"),
metrics.Instrument(
http.MethodGet,
@@ -346,6 +360,7 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
)
group.Get(
toMacaronPath("/api/v1/provisioning/mute-timings"),
requestmeta.SetOwner(requestmeta.TeamAlerting),
api.authorize(http.MethodGet, "/api/v1/provisioning/mute-timings"),
metrics.Instrument(
http.MethodGet,
@@ -356,6 +371,7 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
)
group.Get(
toMacaronPath("/api/v1/provisioning/policies"),
requestmeta.SetOwner(requestmeta.TeamAlerting),
api.authorize(http.MethodGet, "/api/v1/provisioning/policies"),
metrics.Instrument(
http.MethodGet,
@@ -366,6 +382,7 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
)
group.Get(
toMacaronPath("/api/v1/provisioning/policies/export"),
requestmeta.SetOwner(requestmeta.TeamAlerting),
api.authorize(http.MethodGet, "/api/v1/provisioning/policies/export"),
metrics.Instrument(
http.MethodGet,
@@ -376,6 +393,7 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
)
group.Get(
toMacaronPath("/api/v1/provisioning/templates/{name}"),
requestmeta.SetOwner(requestmeta.TeamAlerting),
api.authorize(http.MethodGet, "/api/v1/provisioning/templates/{name}"),
metrics.Instrument(
http.MethodGet,
@@ -386,6 +404,7 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
)
group.Get(
toMacaronPath("/api/v1/provisioning/templates"),
requestmeta.SetOwner(requestmeta.TeamAlerting),
api.authorize(http.MethodGet, "/api/v1/provisioning/templates"),
metrics.Instrument(
http.MethodGet,
@@ -396,6 +415,7 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
)
group.Post(
toMacaronPath("/api/v1/provisioning/alert-rules"),
requestmeta.SetOwner(requestmeta.TeamAlerting),
api.authorize(http.MethodPost, "/api/v1/provisioning/alert-rules"),
metrics.Instrument(
http.MethodPost,
@@ -406,6 +426,7 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
)
group.Post(
toMacaronPath("/api/v1/provisioning/contact-points"),
requestmeta.SetOwner(requestmeta.TeamAlerting),
api.authorize(http.MethodPost, "/api/v1/provisioning/contact-points"),
metrics.Instrument(
http.MethodPost,
@@ -416,6 +437,7 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
)
group.Post(
toMacaronPath("/api/v1/provisioning/mute-timings"),
requestmeta.SetOwner(requestmeta.TeamAlerting),
api.authorize(http.MethodPost, "/api/v1/provisioning/mute-timings"),
metrics.Instrument(
http.MethodPost,
@@ -426,6 +448,7 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
)
group.Put(
toMacaronPath("/api/v1/provisioning/alert-rules/{UID}"),
requestmeta.SetOwner(requestmeta.TeamAlerting),
api.authorize(http.MethodPut, "/api/v1/provisioning/alert-rules/{UID}"),
metrics.Instrument(
http.MethodPut,
@@ -436,6 +459,7 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
)
group.Put(
toMacaronPath("/api/v1/provisioning/folder/{FolderUID}/rule-groups/{Group}"),
requestmeta.SetOwner(requestmeta.TeamAlerting),
api.authorize(http.MethodPut, "/api/v1/provisioning/folder/{FolderUID}/rule-groups/{Group}"),
metrics.Instrument(
http.MethodPut,
@@ -446,6 +470,7 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
)
group.Put(
toMacaronPath("/api/v1/provisioning/contact-points/{UID}"),
requestmeta.SetOwner(requestmeta.TeamAlerting),
api.authorize(http.MethodPut, "/api/v1/provisioning/contact-points/{UID}"),
metrics.Instrument(
http.MethodPut,
@@ -456,6 +481,7 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
)
group.Put(
toMacaronPath("/api/v1/provisioning/mute-timings/{name}"),
requestmeta.SetOwner(requestmeta.TeamAlerting),
api.authorize(http.MethodPut, "/api/v1/provisioning/mute-timings/{name}"),
metrics.Instrument(
http.MethodPut,
@@ -466,6 +492,7 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
)
group.Put(
toMacaronPath("/api/v1/provisioning/policies"),
requestmeta.SetOwner(requestmeta.TeamAlerting),
api.authorize(http.MethodPut, "/api/v1/provisioning/policies"),
metrics.Instrument(
http.MethodPut,
@@ -476,6 +503,7 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
)
group.Put(
toMacaronPath("/api/v1/provisioning/templates/{name}"),
requestmeta.SetOwner(requestmeta.TeamAlerting),
api.authorize(http.MethodPut, "/api/v1/provisioning/templates/{name}"),
metrics.Instrument(
http.MethodPut,
@@ -486,6 +514,7 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
)
group.Delete(
toMacaronPath("/api/v1/provisioning/policies"),
requestmeta.SetOwner(requestmeta.TeamAlerting),
api.authorize(http.MethodDelete, "/api/v1/provisioning/policies"),
metrics.Instrument(
http.MethodDelete,