diff --git a/pkg/tsdb/azuremonitor/azure-resource-graph-datasource.go b/pkg/tsdb/azuremonitor/azure-resource-graph-datasource.go index 6025be8d6cf..1ab25b0d85d 100644 --- a/pkg/tsdb/azuremonitor/azure-resource-graph-datasource.go +++ b/pkg/tsdb/azuremonitor/azure-resource-graph-datasource.go @@ -209,33 +209,37 @@ func (e *AzureResourceGraphDatasource) createRequest(ctx context.Context, dsInfo if plugin == nil { return nil, errors.New("unable to find datasource plugin Azure Monitor") } - cloudName := dsInfo.JsonData.Get("cloudName").MustString("azuremonitor") - argRoute, proxypass, err := e.getPluginRoute(plugin, cloudName) + argRoute, routeName, err := e.getPluginRoute(plugin) if err != nil { return nil, err } - pluginproxy.ApplyRoute(ctx, req, proxypass, argRoute, dsInfo, e.cfg) + + pluginproxy.ApplyRoute(ctx, req, routeName, argRoute, dsInfo, e.cfg) return req, nil } -func (e *AzureResourceGraphDatasource) getPluginRoute(plugin *plugins.DataSourcePlugin, cloudName string) ( - *plugins.AppPluginRoute, string, error) { - pluginRouteName, err := getResourceGraphApiRoute(cloudName) +func (e *AzureResourceGraphDatasource) getPluginRoute(plugin *plugins.DataSourcePlugin) (*plugins.AppPluginRoute, string, error) { + cloud, err := getAzureCloud(e.cfg, e.dsInfo.JsonData) if err != nil { return nil, "", err } - var argRoute *plugins.AppPluginRoute + routeName, err := getResourceGraphApiRoute(cloud) + if err != nil { + return nil, "", err + } + + var pluginRoute *plugins.AppPluginRoute for _, route := range plugin.Routes { - if route.Path == pluginRouteName { - argRoute = route + if route.Path == routeName { + pluginRoute = route break } } - return argRoute, pluginRouteName, nil + return pluginRoute, routeName, nil } func (e *AzureResourceGraphDatasource) unmarshalResponse(res *http.Response) (AzureResourceGraphResponse, error) { diff --git a/pkg/tsdb/azuremonitor/routes.go b/pkg/tsdb/azuremonitor/routes.go index bbce2290993..029c44fdd9d 100644 --- a/pkg/tsdb/azuremonitor/routes.go +++ b/pkg/tsdb/azuremonitor/routes.go @@ -52,6 +52,8 @@ func getResourceGraphApiRoute(azureCloud string) (string, error) { return "chinaazureresourcegraph", nil case azureMonitorUSGovernment: return "govazureresourcegraph", nil + case azureMonitorGermany: + return "germanyazureresourcegraph", nil default: err := fmt.Errorf("the cloud '%s' not supported", azureCloud) return "", err diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/plugin.json b/public/app/plugins/datasource/grafana-azure-monitor-datasource/plugin.json index b9770ebe943..ea566db6c94 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/plugin.json +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/plugin.json @@ -105,11 +105,11 @@ "tokenAuth": { "scopes": ["https://management.azure.com/.default"], "params": { - "azure_auth_type": "{{.JsonData.azureAuthType}}", + "azure_auth_type": "{{.JsonData.azureAuthType | orEmpty}}", "azure_cloud": "AzureCloud", - "tenant_id": "{{.JsonData.tenantId}}", - "client_id": "{{.JsonData.clientId}}", - "client_secret": "{{.SecureJsonData.clientSecret}}" + "tenant_id": "{{.JsonData.tenantId | orEmpty}}", + "client_id": "{{.JsonData.clientId | orEmpty}}", + "client_secret": "{{.SecureJsonData.clientSecret | orEmpty}}" } }, "headers": [{ "name": "x-ms-app", "content": "Grafana" }] @@ -122,11 +122,11 @@ "tokenAuth": { "scopes": ["https://management.chinacloudapi.cn/.default"], "params": { - "azure_auth_type": "{{.JsonData.azureAuthType}}", + "azure_auth_type": "{{.JsonData.azureAuthType | orEmpty}}", "azure_cloud": "AzureChinaCloud", - "tenant_id": "{{.JsonData.tenantId}}", - "client_id": "{{.JsonData.clientId}}", - "client_secret": "{{.SecureJsonData.clientSecret}}" + "tenant_id": "{{.JsonData.tenantId | orEmpty}}", + "client_id": "{{.JsonData.clientId | orEmpty}}", + "client_secret": "{{.SecureJsonData.clientSecret | orEmpty}}" } }, "headers": [{ "name": "x-ms-app", "content": "Grafana" }] @@ -139,11 +139,11 @@ "tokenAuth": { "scopes": ["https://management.usgovcloudapi.net/.default"], "params": { - "azure_auth_type": "{{.JsonData.azureAuthType}}", + "azure_auth_type": "{{.JsonData.azureAuthType | orEmpty}}", "azure_cloud": "AzureUSGovernment", - "tenant_id": "{{.JsonData.tenantId}}", - "client_id": "{{.JsonData.clientId}}", - "client_secret": "{{.SecureJsonData.clientSecret}}" + "tenant_id": "{{.JsonData.tenantId | orEmpty}}", + "client_id": "{{.JsonData.clientId | orEmpty}}", + "client_secret": "{{.SecureJsonData.clientSecret | orEmpty}}" } }, "headers": [{ "name": "x-ms-app", "content": "Grafana" }] @@ -156,11 +156,11 @@ "tokenAuth": { "scopes": ["https://management.microsoftazure.de/.default"], "params": { - "azure_auth_type": "{{.JsonData.azureAuthType}}", + "azure_auth_type": "{{.JsonData.azureAuthType | orEmpty}}", "azure_cloud": "AzureGermanCloud", - "tenant_id": "{{.JsonData.tenantId}}", - "client_id": "{{.JsonData.clientId}}", - "client_secret": "{{.SecureJsonData.clientSecret}}" + "tenant_id": "{{.JsonData.tenantId | orEmpty}}", + "client_id": "{{.JsonData.clientId | orEmpty}}", + "client_secret": "{{.SecureJsonData.clientSecret | orEmpty}}" } }, "headers": [{ "name": "x-ms-app", "content": "Grafana" }]