mirror of
https://github.com/grafana/grafana.git
synced 2025-01-09 23:53:25 -06:00
ebe5f3646f
* wip: new metrics query editor * prepend subscriptions to url path * remove duplicated setQueryValue file * add tests for new metrics query editor * wip start extracting resource field into a shared component * fix query editor test * fix up backend tests * move azure monitor specific getters to azure_monitor_datasource * use existing useAsyncState hook * extract useAsyncState into separate file * add datahooks tests * extract resource field component * cleanup * clarify variable names * remove logs query specific resource field component * add url_builder test * add azure_monitor_datasources tests * address comments * add types * pass resourceUri to resource field component * add test to check we reset the query fields when changing resources
62 lines
1.6 KiB
Go
62 lines
1.6 KiB
Go
package metrics
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
// urlBuilder builds the URL for calling the Azure Monitor API
|
|
type urlBuilder struct {
|
|
ResourceURI string
|
|
|
|
// Following fields will be deprecated in grafana 9 and will not included in new queries.
|
|
// For backwards compat, we recreate the ResourceURI using these fields
|
|
DefaultSubscription string
|
|
Subscription string
|
|
ResourceGroup string
|
|
MetricDefinition string
|
|
ResourceName string
|
|
}
|
|
|
|
func (params *urlBuilder) buildMetricsURLFromLegacyQuery() string {
|
|
subscription := params.Subscription
|
|
|
|
if params.Subscription == "" {
|
|
subscription = params.DefaultSubscription
|
|
}
|
|
|
|
metricDefinitionArray := strings.Split(params.MetricDefinition, "/")
|
|
resourceNameArray := strings.Split(params.ResourceName, "/")
|
|
provider := metricDefinitionArray[0]
|
|
metricDefinitionArray = metricDefinitionArray[1:]
|
|
|
|
urlArray := []string{
|
|
"/subscriptions",
|
|
subscription,
|
|
"resourceGroups",
|
|
params.ResourceGroup,
|
|
"providers",
|
|
provider,
|
|
}
|
|
|
|
for i, metricDefinition := range metricDefinitionArray {
|
|
urlArray = append(urlArray, metricDefinition, resourceNameArray[i])
|
|
}
|
|
|
|
resourceURI := strings.Join(urlArray, "/")
|
|
return resourceURI
|
|
}
|
|
|
|
// BuildMetricsURL checks the metric definition property to see which form of the url
|
|
// should be returned
|
|
func (params *urlBuilder) BuildMetricsURL() string {
|
|
resourceURI := params.ResourceURI
|
|
|
|
// Prior to Grafana 9, we had a legacy query object rather than a resourceURI, so we manually create the resource URI
|
|
if resourceURI == "" {
|
|
resourceURI = params.buildMetricsURLFromLegacyQuery()
|
|
}
|
|
|
|
return fmt.Sprintf("%s/providers/microsoft.insights/metrics", resourceURI)
|
|
}
|