Alerting: Fix API specification (#42282)

* Alerting: Fix API specification
This commit is contained in:
Sofia Papagiannaki 2021-11-30 21:55:54 +02:00 committed by GitHub
parent 1d4b2593ec
commit 9c7b52fd36
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 459 additions and 62 deletions

View File

@ -46,7 +46,7 @@ type Alertmanager interface {
GetAlertGroups(active, silenced, inhibited bool, filter []string, receiver string) (apimodels.AlertGroups, error)
// Testing
TestReceivers(ctx context.Context, c apimodels.TestReceiversConfigParams) (*notifier.TestReceiversResult, error)
TestReceivers(ctx context.Context, c apimodels.TestReceiversConfigBodyParams) (*notifier.TestReceiversResult, error)
}
// API handlers.

View File

@ -376,7 +376,7 @@ func (srv AlertmanagerSrv) RoutePostAMAlerts(_ *models.ReqContext, _ apimodels.P
return NotImplementedResp
}
func (srv AlertmanagerSrv) RoutePostTestReceivers(c *models.ReqContext, body apimodels.TestReceiversConfigParams) response.Response {
func (srv AlertmanagerSrv) RoutePostTestReceivers(c *models.ReqContext, body apimodels.TestReceiversConfigBodyParams) response.Response {
if !c.HasUserRole(models.ROLE_EDITOR) {
return accessForbiddenResp()
}

View File

@ -147,7 +147,7 @@ func (am *ForkedAMSvc) RoutePostAMAlerts(ctx *models.ReqContext, body apimodels.
return s.RoutePostAMAlerts(ctx, body)
}
func (am *ForkedAMSvc) RoutePostTestReceivers(ctx *models.ReqContext, body apimodels.TestReceiversConfigParams) response.Response {
func (am *ForkedAMSvc) RoutePostTestReceivers(ctx *models.ReqContext, body apimodels.TestReceiversConfigBodyParams) response.Response {
s, err := am.getService(ctx)
if err != nil {
return ErrResp(400, err, "")

View File

@ -31,7 +31,7 @@ type AlertmanagerApiService interface {
RouteGetSilences(*models.ReqContext) response.Response
RoutePostAMAlerts(*models.ReqContext, apimodels.PostableAlerts) response.Response
RoutePostAlertingConfig(*models.ReqContext, apimodels.PostableUserConfig) response.Response
RoutePostTestReceivers(*models.ReqContext, apimodels.TestReceiversConfigParams) response.Response
RoutePostTestReceivers(*models.ReqContext, apimodels.TestReceiversConfigBodyParams) response.Response
}
func (api *API) RegisterAlertmanagerApiEndpoints(srv AlertmanagerApiService, m *metrics.API) {
@ -140,7 +140,7 @@ func (api *API) RegisterAlertmanagerApiEndpoints(srv AlertmanagerApiService, m *
)
group.Post(
toMacaronPath("/api/alertmanager/{Recipient}/config/api/v1/receivers/test"),
binding.Bind(apimodels.TestReceiversConfigParams{}),
binding.Bind(apimodels.TestReceiversConfigBodyParams{}),
metrics.Instrument(
http.MethodPost,
"/api/alertmanager/{Recipient}/config/api/v1/receivers/test",

View File

@ -241,6 +241,6 @@ func (am *LotexAM) RoutePostAMAlerts(ctx *models.ReqContext, alerts apimodels.Po
)
}
func (am *LotexAM) RoutePostTestReceivers(ctx *models.ReqContext, config apimodels.TestReceiversConfigParams) response.Response {
func (am *LotexAM) RoutePostTestReceivers(ctx *models.ReqContext, config apimodels.TestReceiversConfigBodyParams) response.Response {
return NotImplementedResp
}

View File

@ -138,12 +138,15 @@ type MultiStatus struct{}
// swagger:parameters RoutePostTestReceivers
type TestReceiversConfigParams struct {
// in:body
Alert *TestReceiversConfigAlertParams `yaml:"alert,omitempty" json:"alert,omitempty"`
// in:body
Receivers []*PostableApiReceiver `yaml:"receivers,omitempty" json:"receivers,omitempty"`
Body TestReceiversConfigBodyParams
}
func (c *TestReceiversConfigParams) ProcessConfig(encrypt EncryptFn) error {
type TestReceiversConfigBodyParams struct {
Alert *TestReceiversConfigAlertParams `yaml:"alert,omitempty" json:"alert,omitempty"`
Receivers []*PostableApiReceiver `yaml:"receivers,omitempty" json:"receivers,omitempty"`
}
func (c *TestReceiversConfigBodyParams) ProcessConfig(encrypt EncryptFn) error {
return processReceiverConfigs(c.Receivers, encrypt)
}

View File

@ -1,6 +1,8 @@
// Grafana Alerting API.
//
// Package definitions includes the types required for generating or consuming an OpenAPI
// spec for the Unified Alerting API.
// Documentation of the API.
// spec for the Grafana Alerting API.
//
//
// Schemes: http, https
// BasePath: /api/v1

View File

@ -319,6 +319,13 @@
"type": "array",
"x-go-name": "InhibitRules"
},
"mute_time_intervals": {
"items": {
"$ref": "#/definitions/MuteTimeInterval"
},
"type": "array",
"x-go-name": "MuteTimeIntervals"
},
"route": {
"$ref": "#/definitions/Route"
},
@ -340,6 +347,21 @@
"type": "string",
"x-go-package": "github.com/go-openapi/strfmt"
},
"DayOfMonthRange": {
"properties": {
"Begin": {
"format": "int64",
"type": "integer"
},
"End": {
"format": "int64",
"type": "integer"
}
},
"title": "A DayOfMonthRange is an inclusive range that may have negative Beginning/End values that represent distance from the End of the month Beginning at -1.",
"type": "object",
"x-go-package": "github.com/prometheus/alertmanager/timeinterval"
},
"DiscoveryBase": {
"properties": {
"error": {
@ -536,6 +558,13 @@
"type": "array",
"x-go-name": "InhibitRules"
},
"mute_time_intervals": {
"items": {
"$ref": "#/definitions/MuteTimeInterval"
},
"type": "array",
"x-go-name": "MuteTimeIntervals"
},
"receivers": {
"description": "Override with our superset receiver type",
"items": {
@ -886,6 +915,10 @@
"opsgenie_api_key": {
"$ref": "#/definitions/Secret"
},
"opsgenie_api_key_file": {
"type": "string",
"x-go-name": "OpsGenieAPIKeyFile"
},
"opsgenie_api_url": {
"$ref": "#/definitions/URL"
},
@ -999,6 +1032,21 @@
"type": "object",
"x-go-package": "github.com/prometheus/alertmanager/config"
},
"InclusiveRange": {
"properties": {
"Begin": {
"format": "int64",
"type": "integer"
},
"End": {
"format": "int64",
"type": "integer"
}
},
"title": "InclusiveRange is used to hold the Beginning and End values of many time interval components.",
"type": "object",
"x-go-package": "github.com/prometheus/alertmanager/timeinterval"
},
"InhibitRule": {
"description": "InhibitRule defines an inhibition rule that mutes alerts that match the\ntarget labels if an alert matching the source labels exists.\nBoth alerts have to have a set of labels being equal.",
"properties": {
@ -1123,10 +1171,43 @@
},
"type": "array"
},
"MonthRange": {
"properties": {
"Begin": {
"format": "int64",
"type": "integer"
},
"End": {
"format": "int64",
"type": "integer"
}
},
"title": "A MonthRange is an inclusive range between [1, 12] where 1 = January.",
"type": "object",
"x-go-package": "github.com/prometheus/alertmanager/timeinterval"
},
"MultiStatus": {
"type": "object",
"x-go-package": "github.com/grafana/grafana/pkg/services/ngalert/api/tooling/definitions"
},
"MuteTimeInterval": {
"properties": {
"name": {
"type": "string",
"x-go-name": "Name"
},
"time_intervals": {
"items": {
"$ref": "#/definitions/TimeInterval"
},
"type": "array",
"x-go-name": "TimeIntervals"
}
},
"title": "MuteTimeInterval represents a named set of time intervals for which a route should be muted.",
"type": "object",
"x-go-package": "github.com/prometheus/alertmanager/config"
},
"NamespaceConfigResponse": {
"additionalProperties": {
"items": {
@ -1150,6 +1231,9 @@
},
"OAuth2": {
"properties": {
"TLSConfig": {
"$ref": "#/definitions/TLSConfig"
},
"client_id": {
"type": "string",
"x-go-name": "ClientID"
@ -1190,9 +1274,17 @@
},
"OpsGenieConfig": {
"properties": {
"actions": {
"type": "string",
"x-go-name": "Actions"
},
"api_key": {
"$ref": "#/definitions/Secret"
},
"api_key_file": {
"type": "string",
"x-go-name": "APIKeyFile"
},
"api_url": {
"$ref": "#/definitions/URL"
},
@ -1207,6 +1299,10 @@
"type": "object",
"x-go-name": "Details"
},
"entity": {
"type": "string",
"x-go-name": "Entity"
},
"http_config": {
"$ref": "#/definitions/HTTPClientConfig"
},
@ -1411,6 +1507,13 @@
"type": "array",
"x-go-name": "InhibitRules"
},
"mute_time_intervals": {
"items": {
"$ref": "#/definitions/MuteTimeInterval"
},
"type": "array",
"x-go-name": "MuteTimeIntervals"
},
"receivers": {
"description": "Override with our superset receiver type",
"items": {
@ -2428,6 +2531,22 @@
"type": "object",
"x-go-package": "github.com/grafana/grafana/pkg/services/ngalert/api/tooling/definitions"
},
"TestReceiversConfigBodyParams": {
"properties": {
"alert": {
"$ref": "#/definitions/TestReceiversConfigAlertParams"
},
"receivers": {
"items": {
"$ref": "#/definitions/PostableApiReceiver"
},
"type": "array",
"x-go-name": "Receivers"
}
},
"type": "object",
"x-go-package": "github.com/grafana/grafana/pkg/services/ngalert/api/tooling/definitions"
},
"TestReceiversResult": {
"properties": {
"alert": {
@ -2475,6 +2594,64 @@
"type": "object",
"x-go-package": "github.com/grafana/grafana/pkg/services/ngalert/api/tooling/definitions"
},
"TimeInterval": {
"description": "TimeInterval describes intervals of time. ContainsTime will tell you if a golang time is contained\nwithin the interval.",
"properties": {
"days_of_month": {
"items": {
"$ref": "#/definitions/DayOfMonthRange"
},
"type": "array",
"x-go-name": "DaysOfMonth"
},
"months": {
"items": {
"$ref": "#/definitions/MonthRange"
},
"type": "array",
"x-go-name": "Months"
},
"times": {
"items": {
"$ref": "#/definitions/TimeRange"
},
"type": "array",
"x-go-name": "Times"
},
"weekdays": {
"items": {
"$ref": "#/definitions/WeekdayRange"
},
"type": "array",
"x-go-name": "Weekdays"
},
"years": {
"items": {
"$ref": "#/definitions/YearRange"
},
"type": "array",
"x-go-name": "Years"
}
},
"type": "object",
"x-go-package": "github.com/prometheus/alertmanager/timeinterval"
},
"TimeRange": {
"description": "For example, 4:00PM to End of the day would Begin at 1020 and End at 1440.",
"properties": {
"EndMinute": {
"format": "int64",
"type": "integer"
},
"StartMinute": {
"format": "int64",
"type": "integer"
}
},
"title": "TimeRange represents a range of minutes within a 1440 minute day, exclusive of the End minute. A day consists of 1440 minutes.",
"type": "object",
"x-go-package": "github.com/prometheus/alertmanager/timeinterval"
},
"URL": {
"properties": {
"ForceQuery": {
@ -2656,6 +2833,36 @@
"type": "object",
"x-go-package": "github.com/prometheus/alertmanager/config"
},
"WeekdayRange": {
"properties": {
"Begin": {
"format": "int64",
"type": "integer"
},
"End": {
"format": "int64",
"type": "integer"
}
},
"title": "A WeekdayRange is an inclusive range between [0, 6] where 0 = Sunday.",
"type": "object",
"x-go-package": "github.com/prometheus/alertmanager/timeinterval"
},
"YearRange": {
"properties": {
"Begin": {
"format": "int64",
"type": "integer"
},
"End": {
"format": "int64",
"type": "integer"
}
},
"title": "A YearRange is a positive inclusive range.",
"type": "object",
"x-go-package": "github.com/prometheus/alertmanager/timeinterval"
},
"alert": {
"description": "Alert alert",
"properties": {
@ -2677,7 +2884,6 @@
"x-go-package": "github.com/prometheus/alertmanager/api/v2/models"
},
"alertGroup": {
"description": "AlertGroup alert group",
"properties": {
"alerts": {
"description": "alerts",
@ -2699,15 +2905,16 @@
"labels",
"receiver"
],
"type": "object"
"type": "object",
"x-go-name": "AlertGroup",
"x-go-package": "github.com/prometheus/alertmanager/api/v2/models"
},
"alertGroups": {
"description": "AlertGroups alert groups",
"items": {
"$ref": "#/definitions/alertGroup"
},
"type": "array",
"x-go-name": "AlertGroups",
"x-go-package": "github.com/prometheus/alertmanager/api/v2/models"
"type": "array"
},
"alertStatus": {
"description": "AlertStatus alert status",
@ -2952,12 +3159,11 @@
"x-go-package": "github.com/prometheus/alertmanager/api/v2/models"
},
"gettableSilences": {
"description": "GettableSilences gettable silences",
"items": {
"$ref": "#/definitions/gettableSilence"
},
"type": "array",
"x-go-name": "GettableSilences",
"x-go-package": "github.com/prometheus/alertmanager/api/v2/models"
"type": "array"
},
"labelSet": {
"additionalProperties": {
@ -3086,6 +3292,7 @@
"x-go-package": "github.com/prometheus/alertmanager/api/v2/models"
},
"postableSilence": {
"description": "PostableSilence postable silence",
"properties": {
"comment": {
"description": "comment",
@ -3125,9 +3332,7 @@
"matchers",
"startsAt"
],
"type": "object",
"x-go-name": "PostableSilence",
"x-go-package": "github.com/prometheus/alertmanager/api/v2/models"
"type": "object"
},
"receiver": {
"properties": {
@ -3251,8 +3456,8 @@
}
},
"info": {
"description": "Package definitions includes the types required for generating or consuming an OpenAPI\nspec for the Unified Alerting API.\nDocumentation of the API.",
"title": "Unified Alerting API",
"description": "Package definitions includes the types required for generating or consuming an OpenAPI\nspec for the Grafana 8 Alerts API.",
"title": "Grafana 8 Alerts API.",
"version": "1.1.0"
},
"paths": {
@ -3731,22 +3936,10 @@
"parameters": [
{
"in": "body",
"name": "alert",
"name": "Body",
"schema": {
"$ref": "#/definitions/TestReceiversConfigAlertParams"
},
"x-go-name": "Alert"
},
{
"in": "body",
"name": "receivers",
"schema": {
"items": {
"$ref": "#/definitions/PostableApiReceiver"
},
"type": "array"
},
"x-go-name": "Receivers"
"$ref": "#/definitions/TestReceiversConfigBodyParams"
}
},
{
"description": "Recipient should be \"grafana\" for requests to be handled by grafana\nand the numeric datasource id for requests to be forwarded to a datasource",

View File

@ -11,7 +11,8 @@
],
"swagger": "2.0",
"info": {
"description": "Package definitions includes the types required for generating or consuming an OpenAPI\nspec for the Unified Alerting API.\nDocumentation of the API.",
"description": "Package definitions includes the types required for generating or consuming an OpenAPI\nspec for the Grafana Alerting API.",
"title": "Grafana Alerting API.",
"version": "1.1.0"
},
"basePath": "/api/v1",
@ -494,22 +495,10 @@
"operationId": "RoutePostTestReceivers",
"parameters": [
{
"x-go-name": "Alert",
"name": "alert",
"name": "Body",
"in": "body",
"schema": {
"$ref": "#/definitions/TestReceiversConfigAlertParams"
}
},
{
"x-go-name": "Receivers",
"name": "receivers",
"in": "body",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/PostableApiReceiver"
}
"$ref": "#/definitions/TestReceiversConfigBodyParams"
}
},
{
@ -1351,6 +1340,13 @@
},
"x-go-name": "InhibitRules"
},
"mute_time_intervals": {
"type": "array",
"items": {
"$ref": "#/definitions/MuteTimeInterval"
},
"x-go-name": "MuteTimeIntervals"
},
"route": {
"$ref": "#/definitions/Route"
},
@ -1370,6 +1366,21 @@
"format": "date-time",
"x-go-package": "github.com/go-openapi/strfmt"
},
"DayOfMonthRange": {
"type": "object",
"title": "A DayOfMonthRange is an inclusive range that may have negative Beginning/End values that represent distance from the End of the month Beginning at -1.",
"properties": {
"Begin": {
"type": "integer",
"format": "int64"
},
"End": {
"type": "integer",
"format": "int64"
}
},
"x-go-package": "github.com/prometheus/alertmanager/timeinterval"
},
"DiscoveryBase": {
"type": "object",
"required": [
@ -1570,6 +1581,13 @@
},
"x-go-name": "InhibitRules"
},
"mute_time_intervals": {
"type": "array",
"items": {
"$ref": "#/definitions/MuteTimeInterval"
},
"x-go-name": "MuteTimeIntervals"
},
"receivers": {
"description": "Override with our superset receiver type",
"type": "array",
@ -1774,6 +1792,7 @@
"enum": [
"Alerting"
],
"x-go-enum-desc": "Alerting AlertingErrState",
"x-go-name": "ExecErrState"
},
"id": {
@ -1802,6 +1821,7 @@
"NoData",
"OK"
],
"x-go-enum-desc": "Alerting Alerting\nNoData NoData\nOK OK",
"x-go-name": "NoDataState"
},
"orgId": {
@ -1920,6 +1940,10 @@
"opsgenie_api_key": {
"$ref": "#/definitions/Secret"
},
"opsgenie_api_key_file": {
"type": "string",
"x-go-name": "OpsGenieAPIKeyFile"
},
"opsgenie_api_url": {
"$ref": "#/definitions/URL"
},
@ -2032,6 +2056,21 @@
},
"x-go-package": "github.com/prometheus/alertmanager/config"
},
"InclusiveRange": {
"type": "object",
"title": "InclusiveRange is used to hold the Beginning and End values of many time interval components.",
"properties": {
"Begin": {
"type": "integer",
"format": "int64"
},
"End": {
"type": "integer",
"format": "int64"
}
},
"x-go-package": "github.com/prometheus/alertmanager/timeinterval"
},
"InhibitRule": {
"description": "InhibitRule defines an inhibition rule that mutes alerts that match the\ntarget labels if an alert matching the source labels exists.\nBoth alerts have to have a set of labels being equal.",
"type": "object",
@ -2157,10 +2196,43 @@
},
"$ref": "#/definitions/Matchers"
},
"MonthRange": {
"type": "object",
"title": "A MonthRange is an inclusive range between [1, 12] where 1 = January.",
"properties": {
"Begin": {
"type": "integer",
"format": "int64"
},
"End": {
"type": "integer",
"format": "int64"
}
},
"x-go-package": "github.com/prometheus/alertmanager/timeinterval"
},
"MultiStatus": {
"type": "object",
"x-go-package": "github.com/grafana/grafana/pkg/services/ngalert/api/tooling/definitions"
},
"MuteTimeInterval": {
"type": "object",
"title": "MuteTimeInterval represents a named set of time intervals for which a route should be muted.",
"properties": {
"name": {
"type": "string",
"x-go-name": "Name"
},
"time_intervals": {
"type": "array",
"items": {
"$ref": "#/definitions/TimeInterval"
},
"x-go-name": "TimeIntervals"
}
},
"x-go-package": "github.com/prometheus/alertmanager/config"
},
"NamespaceConfigResponse": {
"type": "object",
"additionalProperties": {
@ -2186,6 +2258,9 @@
"type": "object",
"title": "OAuth2 is the oauth2 client configuration.",
"properties": {
"TLSConfig": {
"$ref": "#/definitions/TLSConfig"
},
"client_id": {
"type": "string",
"x-go-name": "ClientID"
@ -2226,9 +2301,17 @@
"type": "object",
"title": "OpsGenieConfig configures notifications via OpsGenie.",
"properties": {
"actions": {
"type": "string",
"x-go-name": "Actions"
},
"api_key": {
"$ref": "#/definitions/Secret"
},
"api_key_file": {
"type": "string",
"x-go-name": "APIKeyFile"
},
"api_url": {
"$ref": "#/definitions/URL"
},
@ -2243,6 +2326,10 @@
},
"x-go-name": "Details"
},
"entity": {
"type": "string",
"x-go-name": "Entity"
},
"http_config": {
"$ref": "#/definitions/HTTPClientConfig"
},
@ -2446,6 +2533,13 @@
},
"x-go-name": "InhibitRules"
},
"mute_time_intervals": {
"type": "array",
"items": {
"$ref": "#/definitions/MuteTimeInterval"
},
"x-go-name": "MuteTimeIntervals"
},
"receivers": {
"description": "Override with our superset receiver type",
"type": "array",
@ -2650,6 +2744,7 @@
"enum": [
"Alerting"
],
"x-go-enum-desc": "Alerting AlertingErrState",
"x-go-name": "ExecErrState"
},
"no_data_state": {
@ -2659,6 +2754,7 @@
"NoData",
"OK"
],
"x-go-enum-desc": "Alerting Alerting\nNoData NoData\nOK OK",
"x-go-name": "NoDataState"
},
"title": {
@ -3462,6 +3558,22 @@
},
"x-go-package": "github.com/grafana/grafana/pkg/services/ngalert/api/tooling/definitions"
},
"TestReceiversConfigBodyParams": {
"type": "object",
"properties": {
"alert": {
"$ref": "#/definitions/TestReceiversConfigAlertParams"
},
"receivers": {
"type": "array",
"items": {
"$ref": "#/definitions/PostableApiReceiver"
},
"x-go-name": "Receivers"
}
},
"x-go-package": "github.com/grafana/grafana/pkg/services/ngalert/api/tooling/definitions"
},
"TestReceiversResult": {
"type": "object",
"properties": {
@ -3509,6 +3621,64 @@
},
"x-go-package": "github.com/grafana/grafana/pkg/services/ngalert/api/tooling/definitions"
},
"TimeInterval": {
"description": "TimeInterval describes intervals of time. ContainsTime will tell you if a golang time is contained\nwithin the interval.",
"type": "object",
"properties": {
"days_of_month": {
"type": "array",
"items": {
"$ref": "#/definitions/DayOfMonthRange"
},
"x-go-name": "DaysOfMonth"
},
"months": {
"type": "array",
"items": {
"$ref": "#/definitions/MonthRange"
},
"x-go-name": "Months"
},
"times": {
"type": "array",
"items": {
"$ref": "#/definitions/TimeRange"
},
"x-go-name": "Times"
},
"weekdays": {
"type": "array",
"items": {
"$ref": "#/definitions/WeekdayRange"
},
"x-go-name": "Weekdays"
},
"years": {
"type": "array",
"items": {
"$ref": "#/definitions/YearRange"
},
"x-go-name": "Years"
}
},
"x-go-package": "github.com/prometheus/alertmanager/timeinterval"
},
"TimeRange": {
"description": "For example, 4:00PM to End of the day would Begin at 1020 and End at 1440.",
"type": "object",
"title": "TimeRange represents a range of minutes within a 1440 minute day, exclusive of the End minute. A day consists of 1440 minutes.",
"properties": {
"EndMinute": {
"type": "integer",
"format": "int64"
},
"StartMinute": {
"type": "integer",
"format": "int64"
}
},
"x-go-package": "github.com/prometheus/alertmanager/timeinterval"
},
"URL": {
"type": "object",
"title": "URL is a custom URL type that allows validation at configuration load time.",
@ -3690,6 +3860,36 @@
},
"x-go-package": "github.com/prometheus/alertmanager/config"
},
"WeekdayRange": {
"type": "object",
"title": "A WeekdayRange is an inclusive range between [0, 6] where 0 = Sunday.",
"properties": {
"Begin": {
"type": "integer",
"format": "int64"
},
"End": {
"type": "integer",
"format": "int64"
}
},
"x-go-package": "github.com/prometheus/alertmanager/timeinterval"
},
"YearRange": {
"type": "object",
"title": "A YearRange is a positive inclusive range.",
"properties": {
"Begin": {
"type": "integer",
"format": "int64"
},
"End": {
"type": "integer",
"format": "int64"
}
},
"x-go-package": "github.com/prometheus/alertmanager/timeinterval"
},
"alert": {
"description": "Alert alert",
"type": "object",
@ -3711,7 +3911,6 @@
"x-go-package": "github.com/prometheus/alertmanager/api/v2/models"
},
"alertGroup": {
"description": "AlertGroup alert group",
"type": "object",
"required": [
"alerts",
@ -3734,6 +3933,8 @@
"$ref": "#/definitions/receiver"
}
},
"x-go-name": "AlertGroup",
"x-go-package": "github.com/prometheus/alertmanager/api/v2/models",
"$ref": "#/definitions/alertGroup"
},
"alertGroups": {
@ -4126,6 +4327,7 @@
"x-go-package": "github.com/prometheus/alertmanager/api/v2/models"
},
"postableSilence": {
"description": "PostableSilence postable silence",
"type": "object",
"required": [
"comment",
@ -4166,11 +4368,10 @@
"x-go-name": "StartsAt"
}
},
"x-go-name": "PostableSilence",
"x-go-package": "github.com/prometheus/alertmanager/api/v2/models",
"$ref": "#/definitions/postableSilence"
},
"receiver": {
"description": "Receiver receiver",
"type": "object",
"required": [
"name"
@ -4182,8 +4383,6 @@
"x-go-name": "Name"
}
},
"x-go-name": "Receiver",
"x-go-package": "github.com/prometheus/alertmanager/api/v2/models",
"$ref": "#/definitions/receiver"
},
"silence": {

View File

@ -59,7 +59,7 @@ func (e ReceiverTimeoutError) Error() string {
return fmt.Sprintf("the receiver timed out: %s", e.Err)
}
func (am *Alertmanager) TestReceivers(ctx context.Context, c apimodels.TestReceiversConfigParams) (*TestReceiversResult, error) {
func (am *Alertmanager) TestReceivers(ctx context.Context, c apimodels.TestReceiversConfigBodyParams) (*TestReceiversResult, error) {
// now represents the start time of the test
now := time.Now()
testAlert := newTestAlert(c, now, now)
@ -197,7 +197,7 @@ func (am *Alertmanager) TestReceivers(ctx context.Context, c apimodels.TestRecei
return newTestReceiversResult(testAlert, append(invalid, results...), now), nil
}
func newTestAlert(c apimodels.TestReceiversConfigParams, startsAt, updatedAt time.Time) types.Alert {
func newTestAlert(c apimodels.TestReceiversConfigBodyParams, startsAt, updatedAt time.Time) types.Alert {
var (
defaultAnnotations = model.LabelSet{
"summary": "Notification test",