grafana/pkg/services/ngalert/api/tooling
Alex Moreno 45facbba11
Alerting: Remove url based external alertmanagers config (#57918)
* Remove URL-based alertmanagers from endpoint config

* WIP

* Add migration and alertmanagers from admin_configuration

* Empty comment removed

* set BasicAuth true when user is present in url

* Remove Alertmanagers from GET /admin_config payload

* Remove URL-based alertmanager configuration from UI

* Fix new uid generation in external alertmanagers migration

* Fix tests for URL-based external alertmanagers

* Fix API tests

* Add more tests, move migration code to separate file, and remove possible am duplicate urls

* Fix edge cases in migration

* Fix imports

* Remove useless fields and fix created_at/updated_at retrieval

Co-authored-by: George Robinson <george.robinson@grafana.com>
Co-authored-by: Konrad Lalik <konrad.lalik@grafana.com>
2022-11-10 16:34:13 +01:00
..
cmd/clean-swagger Handle ioutil deprecations (#53526) 2022-08-10 15:37:51 +02:00
definitions Alerting: Remove url based external alertmanagers config (#57918) 2022-11-10 16:34:13 +01:00
swagger-codegen/templates Alerting: Refactor API types generation with different names. (#51785) 2022-07-18 03:08:08 -04:00
.gitignore Alerting: Add support for documenting which alerting APIs are stable (#49018) 2022-05-23 14:08:27 -05:00
api.json Alerting: Remove url based external alertmanagers config (#57918) 2022-11-10 16:34:13 +01:00
index.html Swagger: Add integrity attributes (#48396) 2022-05-02 09:49:49 +02:00
Makefile Rename Acl to ACL (#52342) 2022-07-18 15:14:58 +02:00
post.json Alerting: Remove url based external alertmanagers config (#57918) 2022-11-10 16:34:13 +01:00
README.md Alerting: Add support for documenting which alerting APIs are stable (#49018) 2022-05-23 14:08:27 -05:00
spec.json Alerting: Remove url based external alertmanagers config (#57918) 2022-11-10 16:34:13 +01:00

What

This aims to define the unified alerting API as code. It generates OpenAPI definitions from go structs. It also generates server/route stubs based on our documentation.

Running

make - regenerate everything - documentation and server stubs. make serve - regenerate the Swagger document, and host rendered docs on port 80. view api

Requires

Why

The current state of Swagger extraction from golang is relatively limited. It's easier to generate server stubs from an existing Swagger doc, as there are limitations with producing a Swagger doc from a hand-written API stub. The current extractor instead relies on comments describing the routes, but the comments and actual implementation may drift, which we don't want to allow.

Instead, we use a hybrid approach - we define the types in Golang, with comments describing the routes, in a standalone package with minimal dependencies. From this, we produce a Swagger doc, and then turn the Swagger doc back into a full-blown server stub.

Stability

We have some endpoints that we document publically as being stable, and others that we consider unstable. The stable endpoints are documented in api.json, where all endpoints are available in post.json.

To stabilize an endpoint, add the stable tag to its route comment:

// swagger:route GET /api/provisioning/contact-points provisioning stable RouteGetContactpoints