From 6ad405e256df2861e7afdf51b38121ceef648c54 Mon Sep 17 00:00:00 2001 From: Santiago Date: Mon, 17 Oct 2022 16:58:55 -0300 Subject: [PATCH] fix swagger spec for receivers API response (#57124) --- pkg/services/ngalert/api/api.go | 2 +- pkg/services/ngalert/api/tooling/api.json | 13 +++++++++++-- .../api/tooling/definitions/alertmanager.go | 11 +++++++---- pkg/services/ngalert/api/tooling/post.json | 17 +++++++++++++++-- pkg/services/ngalert/api/tooling/spec.json | 17 +++++++++++++++-- pkg/services/ngalert/notifier/receivers.go | 4 ++-- .../alerting/api_notification_channel_test.go | 4 ++-- 7 files changed, 53 insertions(+), 15 deletions(-) diff --git a/pkg/services/ngalert/api/api.go b/pkg/services/ngalert/api/api.go index b69aae655a2..03106861354 100644 --- a/pkg/services/ngalert/api/api.go +++ b/pkg/services/ngalert/api/api.go @@ -50,7 +50,7 @@ type Alertmanager interface { GetAlertGroups(active, silenced, inhibited bool, filter []string, receiver string) (apimodels.AlertGroups, error) // Receivers - GetReceivers(ctx context.Context) apimodels.Receivers + GetReceivers(ctx context.Context) []apimodels.Receiver TestReceivers(ctx context.Context, c apimodels.TestReceiversConfigBodyParams) (*notifier.TestReceiversResult, error) } diff --git a/pkg/services/ngalert/api/tooling/api.json b/pkg/services/ngalert/api/tooling/api.json index 3a12944a41f..8118db6f34c 100644 --- a/pkg/services/ngalert/api/tooling/api.json +++ b/pkg/services/ngalert/api/tooling/api.json @@ -3405,7 +3405,6 @@ "type": "object" }, "gettableAlert": { - "description": "GettableAlert gettable alert", "properties": { "annotations": { "$ref": "#/definitions/labelSet" @@ -3467,7 +3466,6 @@ "type": "array" }, "gettableSilence": { - "description": "GettableSilence gettable silence", "properties": { "comment": { "description": "comment", @@ -4474,6 +4472,17 @@ "produces": [ "application/json" ], + "responses": { + "receiversResponse": { + "description": "", + "schema": { + "items": { + "$ref": "#/definitions/receiver" + }, + "type": "array" + } + } + }, "schemes": [ "http", "https" diff --git a/pkg/services/ngalert/api/tooling/definitions/alertmanager.go b/pkg/services/ngalert/api/tooling/definitions/alertmanager.go index 9a8e8b7a122..d7463591c98 100644 --- a/pkg/services/ngalert/api/tooling/definitions/alertmanager.go +++ b/pkg/services/ngalert/api/tooling/definitions/alertmanager.go @@ -144,10 +144,10 @@ import ( // swagger:route GET /api/alertmanager/grafana/config/api/v1/receivers alertmanager RouteGetGrafanaReceivers // -// Get a list of all receivers. +// Get a list of all receivers // // Responses: -// 200: receivers +// 200: receiversResponse // swagger:route POST /api/alertmanager/grafana/config/api/v1/receivers/test alertmanager RoutePostTestGrafanaReceivers // @@ -416,8 +416,11 @@ type AlertGroup = amv2.AlertGroup // swagger:model receiver type Receiver = amv2.Receiver -// swagger:model receivers -type Receivers = []amv2.Receiver +// swagger:response receiversResponse +type ReceiversResponse struct { + // in:body + Body []amv2.Receiver +} // swagger:model integration type Integration = amv2.Integration diff --git a/pkg/services/ngalert/api/tooling/post.json b/pkg/services/ngalert/api/tooling/post.json index 194544a4eba..0afdc9e3f52 100644 --- a/pkg/services/ngalert/api/tooling/post.json +++ b/pkg/services/ngalert/api/tooling/post.json @@ -3278,6 +3278,7 @@ "type": "object" }, "alertGroup": { + "description": "AlertGroup alert group", "properties": { "alerts": { "description": "alerts", @@ -3667,6 +3668,7 @@ "type": "array" }, "postableSilence": { + "description": "PostableSilence postable silence", "properties": { "comment": { "description": "comment", @@ -4200,13 +4202,13 @@ }, "/api/alertmanager/grafana/config/api/v1/receivers": { "get": { + "description": "Get a list of all receivers", "operationId": "RouteGetGrafanaReceivers", "responses": { "200": { - "$ref": "#/responses/receivers" + "$ref": "#/responses/receiversResponse" } }, - "summary": "Get a list of all receivers.", "tags": [ "alertmanager" ] @@ -6325,6 +6327,17 @@ "produces": [ "application/json" ], + "responses": { + "receiversResponse": { + "description": "", + "schema": { + "items": { + "$ref": "#/definitions/receiver" + }, + "type": "array" + } + } + }, "schemes": [ "http", "https" diff --git a/pkg/services/ngalert/api/tooling/spec.json b/pkg/services/ngalert/api/tooling/spec.json index 7420809f9b6..aff5e10bca4 100644 --- a/pkg/services/ngalert/api/tooling/spec.json +++ b/pkg/services/ngalert/api/tooling/spec.json @@ -394,14 +394,14 @@ }, "/api/alertmanager/grafana/config/api/v1/receivers": { "get": { + "description": "Get a list of all receivers", "tags": [ "alertmanager" ], - "summary": "Get a list of all receivers.", "operationId": "RouteGetGrafanaReceivers", "responses": { "200": { - "$ref": "#/responses/receivers" + "$ref": "#/responses/receiversResponse" } } } @@ -5817,6 +5817,7 @@ } }, "alertGroup": { + "description": "AlertGroup alert group", "type": "object", "required": [ "alerts", @@ -6213,6 +6214,7 @@ } }, "postableSilence": { + "description": "PostableSilence postable silence", "type": "object", "required": [ "comment", @@ -6365,6 +6367,17 @@ } } }, + "responses": { + "receiversResponse": { + "description": "", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/receiver" + } + } + } + }, "securityDefinitions": { "basic": { "type": "basic" diff --git a/pkg/services/ngalert/notifier/receivers.go b/pkg/services/ngalert/notifier/receivers.go index 0e705cf0ff3..1b9200e0e0c 100644 --- a/pkg/services/ngalert/notifier/receivers.go +++ b/pkg/services/ngalert/notifier/receivers.go @@ -199,11 +199,11 @@ func (am *Alertmanager) TestReceivers(ctx context.Context, c apimodels.TestRecei return newTestReceiversResult(testAlert, append(invalid, results...), now), nil } -func (am *Alertmanager) GetReceivers(ctx context.Context) apimodels.Receivers { +func (am *Alertmanager) GetReceivers(ctx context.Context) []apimodels.Receiver { am.reloadConfigMtx.RLock() defer am.reloadConfigMtx.RUnlock() - var apiReceivers apimodels.Receivers + var apiReceivers []apimodels.Receiver for _, rcv := range am.receivers { // Build integrations slice for each receiver. var integrations []*models.Integration diff --git a/pkg/tests/api/alerting/api_notification_channel_test.go b/pkg/tests/api/alerting/api_notification_channel_test.go index b06d781c5e4..4a434e54f2d 100644 --- a/pkg/tests/api/alerting/api_notification_channel_test.go +++ b/pkg/tests/api/alerting/api_notification_channel_test.go @@ -776,7 +776,7 @@ func TestNotificationChannels(t *testing.T) { resp = getRequest(t, receiversURL, http.StatusOK) // nolint b = getBody(t, resp.Body) - var receivers apimodels.Receivers + var receivers []apimodels.Receiver err := json.Unmarshal([]byte(b), &receivers) require.NoError(t, err) for _, rcv := range receivers { @@ -824,7 +824,7 @@ func TestNotificationChannels(t *testing.T) { resp := getRequest(t, receiversURL, http.StatusOK) // nolint b := getBody(t, resp.Body) - var receivers apimodels.Receivers + var receivers []apimodels.Receiver err := json.Unmarshal([]byte(b), &receivers) require.NoError(t, err) for _, rcv := range receivers {