From c15d34e273975f33a5559fdf1a1ead3d81faacbb Mon Sep 17 00:00:00 2001 From: "Grot (@grafanabot)" <43478413+grafanabot@users.noreply.github.com> Date: Fri, 6 May 2022 17:55:10 -0400 Subject: [PATCH] Put identifier in path (#48831) (#48832) (cherry picked from commit 99eaa0fc206a5829fee973c02e92793d8e0a3c2d) Co-authored-by: Alexander Weaver --- pkg/services/ngalert/api/api_provisioning.go | 2 + pkg/services/ngalert/api/authorization.go | 2 +- .../ngalert/api/forked_provisioning.go | 2 +- .../api/generated_base_api_provisioning.go | 14 ++--- .../definitions/provisioning_contactpoints.go | 4 +- pkg/services/ngalert/api/tooling/post.json | 48 +++++++-------- pkg/services/ngalert/api/tooling/spec.json | 60 +++++++++---------- 7 files changed, 67 insertions(+), 65 deletions(-) diff --git a/pkg/services/ngalert/api/api_provisioning.go b/pkg/services/ngalert/api/api_provisioning.go index 2242c76e525..89226730f0d 100644 --- a/pkg/services/ngalert/api/api_provisioning.go +++ b/pkg/services/ngalert/api/api_provisioning.go @@ -86,6 +86,8 @@ func (srv *ProvisioningSrv) RoutePostContactPoint(c *models.ReqContext, cp apimo } func (srv *ProvisioningSrv) RoutePutContactPoint(c *models.ReqContext, cp apimodels.EmbeddedContactPoint) response.Response { + id := web.Params(c.Req)[":ID"] + cp.UID = id err := srv.contactPointService.UpdateContactPoint(c.Req.Context(), c.OrgId, cp, alerting_models.ProvenanceAPI) if err != nil { return ErrResp(http.StatusInternalServerError, err, "") diff --git a/pkg/services/ngalert/api/authorization.go b/pkg/services/ngalert/api/authorization.go index ef34f7a6d05..b140632b335 100644 --- a/pkg/services/ngalert/api/authorization.go +++ b/pkg/services/ngalert/api/authorization.go @@ -189,7 +189,7 @@ func (api *API) authorize(method, path string) web.Handler { case http.MethodPut + "/api/provisioning/policies", http.MethodPost + "/api/provisioning/contact-points", - http.MethodPut + "/api/provisioning/contact-points", + http.MethodPut + "/api/provisioning/contact-points/{ID}", http.MethodDelete + "/api/provisioning/contact-points/{ID}", http.MethodPut + "/api/provisioning/templates/{name}", http.MethodDelete + "/api/provisioning/templates/{name}": diff --git a/pkg/services/ngalert/api/forked_provisioning.go b/pkg/services/ngalert/api/forked_provisioning.go index fb764005613..9d42a3c9779 100644 --- a/pkg/services/ngalert/api/forked_provisioning.go +++ b/pkg/services/ngalert/api/forked_provisioning.go @@ -35,7 +35,7 @@ func (f *ForkedProvisioningApi) forkRoutePostContactpoints(ctx *models.ReqContex return f.svc.RoutePostContactPoint(ctx, cp) } -func (f *ForkedProvisioningApi) forkRoutePutContactpoints(ctx *models.ReqContext, cp apimodels.EmbeddedContactPoint) response.Response { +func (f *ForkedProvisioningApi) forkRoutePutContactpoint(ctx *models.ReqContext, cp apimodels.EmbeddedContactPoint) response.Response { return f.svc.RoutePutContactPoint(ctx, cp) } diff --git a/pkg/services/ngalert/api/generated_base_api_provisioning.go b/pkg/services/ngalert/api/generated_base_api_provisioning.go index 49f62ce24f8..6732a7d4047 100644 --- a/pkg/services/ngalert/api/generated_base_api_provisioning.go +++ b/pkg/services/ngalert/api/generated_base_api_provisioning.go @@ -27,7 +27,7 @@ type ProvisioningApiForkingService interface { RouteGetTemplate(*models.ReqContext) response.Response RouteGetTemplates(*models.ReqContext) response.Response RoutePostContactpoints(*models.ReqContext) response.Response - RoutePutContactpoints(*models.ReqContext) response.Response + RoutePutContactpoint(*models.ReqContext) response.Response RoutePutPolicyTree(*models.ReqContext) response.Response RoutePutTemplate(*models.ReqContext) response.Response } @@ -64,12 +64,12 @@ func (f *ForkedProvisioningApi) RoutePostContactpoints(ctx *models.ReqContext) r return f.forkRoutePostContactpoints(ctx, conf) } -func (f *ForkedProvisioningApi) RoutePutContactpoints(ctx *models.ReqContext) response.Response { +func (f *ForkedProvisioningApi) RoutePutContactpoint(ctx *models.ReqContext) response.Response { conf := apimodels.EmbeddedContactPoint{} if err := web.Bind(ctx.Req, &conf); err != nil { return response.Error(http.StatusBadRequest, "bad request data", err) } - return f.forkRoutePutContactpoints(ctx, conf) + return f.forkRoutePutContactpoint(ctx, conf) } func (f *ForkedProvisioningApi) RoutePutPolicyTree(ctx *models.ReqContext) response.Response { @@ -161,12 +161,12 @@ func (api *API) RegisterProvisioningApiEndpoints(srv ProvisioningApiForkingServi ), ) group.Put( - toMacaronPath("/api/provisioning/contact-points"), - api.authorize(http.MethodPut, "/api/provisioning/contact-points"), + toMacaronPath("/api/provisioning/contact-points/{ID}"), + api.authorize(http.MethodPut, "/api/provisioning/contact-points/{ID}"), metrics.Instrument( http.MethodPut, - "/api/provisioning/contact-points", - srv.RoutePutContactpoints, + "/api/provisioning/contact-points/{ID}", + srv.RoutePutContactpoint, m, ), ) diff --git a/pkg/services/ngalert/api/tooling/definitions/provisioning_contactpoints.go b/pkg/services/ngalert/api/tooling/definitions/provisioning_contactpoints.go index ddbcc007f2c..52f331b7b50 100644 --- a/pkg/services/ngalert/api/tooling/definitions/provisioning_contactpoints.go +++ b/pkg/services/ngalert/api/tooling/definitions/provisioning_contactpoints.go @@ -26,7 +26,7 @@ import ( // 202: Accepted // 400: ValidationError -// swagger:route PUT /api/provisioning/contact-points provisioning RoutePutContactpoints +// swagger:route PUT /api/provisioning/contact-points/{ID} provisioning RoutePutContactpoint // // Update an existing contact point. // @@ -48,7 +48,7 @@ import ( // 202: Accepted // 400: ValidationError -// swagger:parameters RoutePostContactpoints RoutePutContactpoints +// swagger:parameters RoutePostContactpoints RoutePutContactpoint type ContactPointPayload struct { // in:body Body EmbeddedContactPoint diff --git a/pkg/services/ngalert/api/tooling/post.json b/pkg/services/ngalert/api/tooling/post.json index 6b8ad452296..77396536adb 100644 --- a/pkg/services/ngalert/api/tooling/post.json +++ b/pkg/services/ngalert/api/tooling/post.json @@ -4821,12 +4821,35 @@ "tags": [ "provisioning" ] + } + }, + "/api/provisioning/contact-points/{ID}": { + "delete": { + "consumes": [ + "application/json" + ], + "operationId": "RouteDeleteContactpoints", + "responses": { + "202": { + "$ref": "#/responses/Accepted" + }, + "400": { + "description": "ValidationError", + "schema": { + "$ref": "#/definitions/ValidationError" + } + } + }, + "summary": "Delete a contact point.", + "tags": [ + "provisioning" + ] }, "put": { "consumes": [ "application/json" ], - "operationId": "RoutePutContactpoints", + "operationId": "RoutePutContactpoint", "parameters": [ { "in": "body", @@ -4853,29 +4876,6 @@ ] } }, - "/api/provisioning/contact-points/{ID}": { - "delete": { - "consumes": [ - "application/json" - ], - "operationId": "RouteDeleteContactpoints", - "responses": { - "202": { - "$ref": "#/responses/Accepted" - }, - "400": { - "description": "ValidationError", - "schema": { - "$ref": "#/definitions/ValidationError" - } - } - }, - "summary": "Delete a contact point.", - "tags": [ - "provisioning" - ] - } - }, "/api/provisioning/policies": { "get": { "operationId": "RouteGetPolicyTree", diff --git a/pkg/services/ngalert/api/tooling/spec.json b/pkg/services/ngalert/api/tooling/spec.json index 402f5c83686..e358f4b16bd 100644 --- a/pkg/services/ngalert/api/tooling/spec.json +++ b/pkg/services/ngalert/api/tooling/spec.json @@ -1158,36 +1158,6 @@ } } }, - "put": { - "consumes": [ - "application/json" - ], - "tags": [ - "provisioning" - ], - "summary": "Update an existing contact point.", - "operationId": "RoutePutContactpoints", - "parameters": [ - { - "name": "Body", - "in": "body", - "schema": { - "$ref": "#/definitions/EmbeddedContactPoint" - } - } - ], - "responses": { - "202": { - "$ref": "#/responses/Accepted" - }, - "400": { - "description": "ValidationError", - "schema": { - "$ref": "#/definitions/ValidationError" - } - } - } - }, "post": { "consumes": [ "application/json" @@ -1220,6 +1190,36 @@ } }, "/api/provisioning/contact-points/{ID}": { + "put": { + "consumes": [ + "application/json" + ], + "tags": [ + "provisioning" + ], + "summary": "Update an existing contact point.", + "operationId": "RoutePutContactpoint", + "parameters": [ + { + "name": "Body", + "in": "body", + "schema": { + "$ref": "#/definitions/EmbeddedContactPoint" + } + } + ], + "responses": { + "202": { + "$ref": "#/responses/Accepted" + }, + "400": { + "description": "ValidationError", + "schema": { + "$ref": "#/definitions/ValidationError" + } + } + } + }, "delete": { "consumes": [ "application/json"