Alerting: Add contact point provisioning file export (#71692)

* Add contact point provisioning file export apis

* Regenerate api

* docs

* frontend

* add mock to tests

* Fix missing row-level export button on viewer role w/ prov. read

* Address review comments

---------

Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
This commit is contained in:
Matthew Jacobson
2023-07-20 14:35:56 -04:00
committed by GitHub
co-authored by Gilles De Mey
parent a7c639f16e
commit 13121d3234
25 changed files with 1154 additions and 193 deletions
@@ -30,6 +30,7 @@ type ProvisioningApi interface {
RouteGetAlertRules(*contextmodel.ReqContext) response.Response
RouteGetAlertRulesExport(*contextmodel.ReqContext) response.Response
RouteGetContactpoints(*contextmodel.ReqContext) response.Response
RouteGetContactpointsExport(*contextmodel.ReqContext) response.Response
RouteGetMuteTiming(*contextmodel.ReqContext) response.Response
RouteGetMuteTimings(*contextmodel.ReqContext) response.Response
RouteGetPolicyTree(*contextmodel.ReqContext) response.Response
@@ -98,6 +99,9 @@ func (f *ProvisioningApiHandler) RouteGetAlertRulesExport(ctx *contextmodel.ReqC
func (f *ProvisioningApiHandler) RouteGetContactpoints(ctx *contextmodel.ReqContext) response.Response {
return f.handleRouteGetContactpoints(ctx)
}
func (f *ProvisioningApiHandler) RouteGetContactpointsExport(ctx *contextmodel.ReqContext) response.Response {
return f.handleRouteGetContactpointsExport(ctx)
}
func (f *ProvisioningApiHandler) RouteGetMuteTiming(ctx *contextmodel.ReqContext) response.Response {
// Parse Path Parameters
nameParam := web.Params(ctx.Req)[":name"]
@@ -316,6 +320,16 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApi, m *metrics
m,
),
)
group.Get(
toMacaronPath("/api/v1/provisioning/contact-points/export"),
api.authorize(http.MethodGet, "/api/v1/provisioning/contact-points/export"),
metrics.Instrument(
http.MethodGet,
"/api/v1/provisioning/contact-points/export",
api.Hooks.Wrap(srv.RouteGetContactpointsExport),
m,
),
)
group.Get(
toMacaronPath("/api/v1/provisioning/mute-timings/{name}"),
api.authorize(http.MethodGet, "/api/v1/provisioning/mute-timings/{name}"),