Prometheus: Add support for cloud partners Prometheus data sources (#103482)
* wip * Add prom flavor support for data source variables and export/import dashboards (#103321) * add dashboard and data source var selection * use match plugin id instead * use updated matchpluginid * formatting * cleanup * regex anchor * update error msg * Alerting: Clean up prometheus-flavored types and functions (#103703) * clean up types and utility functions for dealing with prometheus-flavored data sources * Refactor alerting datasource types to use constants as source of truth * Alerting: Clean up prometheus-flavored types and functions on the bac… (#103716) Alerting: Clean up prometheus-flavored types and functions on the backend * add matchPluginId tests * Update matchPluginId func to bidirectional (#103746) * update matchpluginid func to bidirectional * lint * formatting * use actual isSupportedExternalRulesSourceType in test * add tests in datasource_srv * betterer * remove type assertion * remove unnecessary case * use satisifies to not have to convert tuple to an array of string * add prometheus_flavor test --------- Co-authored-by: Andrew Hackmann <5140848+bossinc@users.noreply.github.com> Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com> Co-authored-by: Alexander Akhmetov <me@alx.cx>
This commit is contained in:
co-authored by
Andrew Hackmann
Gilles De Mey
Alexander Akhmetov
parent
22a9e1b5ff
commit
fd6fd91115
@@ -16,20 +16,22 @@ var logger = log.New("datasource")
|
||||
|
||||
// requiredURL contains the set of data sources that require a URL.
|
||||
var requiredURL = map[string]bool{
|
||||
datasources.DS_GRAPHITE: true,
|
||||
datasources.DS_INFLUXDB: true,
|
||||
datasources.DS_INFLUXDB_08: true,
|
||||
datasources.DS_ES: true,
|
||||
datasources.DS_PROMETHEUS: true,
|
||||
datasources.DS_ALERTMANAGER: true,
|
||||
datasources.DS_JAEGER: true,
|
||||
datasources.DS_LOKI: true,
|
||||
datasources.DS_OPENTSDB: true,
|
||||
datasources.DS_TEMPO: true,
|
||||
datasources.DS_ZIPKIN: true,
|
||||
datasources.DS_MYSQL: true,
|
||||
datasources.DS_POSTGRES: true,
|
||||
datasources.DS_MSSQL: true,
|
||||
datasources.DS_GRAPHITE: true,
|
||||
datasources.DS_INFLUXDB: true,
|
||||
datasources.DS_INFLUXDB_08: true,
|
||||
datasources.DS_ES: true,
|
||||
datasources.DS_PROMETHEUS: true,
|
||||
datasources.DS_AMAZON_PROMETHEUS: true,
|
||||
datasources.DS_AZURE_PROMETHEUS: true,
|
||||
datasources.DS_ALERTMANAGER: true,
|
||||
datasources.DS_JAEGER: true,
|
||||
datasources.DS_LOKI: true,
|
||||
datasources.DS_OPENTSDB: true,
|
||||
datasources.DS_TEMPO: true,
|
||||
datasources.DS_ZIPKIN: true,
|
||||
datasources.DS_MYSQL: true,
|
||||
datasources.DS_POSTGRES: true,
|
||||
datasources.DS_MSSQL: true,
|
||||
}
|
||||
|
||||
// URLValidationError represents an error from validating a data source URL.
|
||||
|
||||
@@ -551,7 +551,7 @@ func (hs *HTTPServer) getFSDataSources(c *contextmodel.ReqContext, availablePlug
|
||||
dsDTO.Database = ds.Database
|
||||
}
|
||||
|
||||
if ds.Type == datasources.DS_PROMETHEUS {
|
||||
if ds.Type == datasources.DS_PROMETHEUS || ds.Type == datasources.DS_AMAZON_PROMETHEUS || ds.Type == datasources.DS_AZURE_PROMETHEUS {
|
||||
// add unproxied server URL for link to Prometheus web UI
|
||||
ds.JsonData.Set("directUrl", ds.URL)
|
||||
}
|
||||
|
||||
@@ -313,7 +313,7 @@ func (proxy *DataSourceProxy) validateRequest() error {
|
||||
}
|
||||
|
||||
// Trailing validation below this point for routes that were not matched
|
||||
if proxy.ds.Type == datasources.DS_PROMETHEUS {
|
||||
if proxy.ds.Type == datasources.DS_PROMETHEUS || proxy.ds.Type == datasources.DS_AMAZON_PROMETHEUS || proxy.ds.Type == datasources.DS_AZURE_PROMETHEUS {
|
||||
if proxy.ctx.Req.Method == "DELETE" {
|
||||
return errors.New("non allow-listed DELETEs not allowed on proxied Prometheus datasource")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user