Submit
Path:
~
/
/
usr
/
share
/
grafana
/
public
/
app
/
plugins
/
datasource
/
azuremonitor
/
azure_monitor
/
File Content:
url_builder.ts
import { TemplateSrv } from '@grafana/runtime'; import { AzureMonitorResource, GetMetricNamespacesQuery, GetMetricNamesQuery } from '../types'; export default class UrlBuilder { static buildResourceUri(templateSrv: TemplateSrv, resource: AzureMonitorResource, multipleResources?: boolean) { const urlArray = []; const { subscription, resourceGroup, metricNamespace, resourceName } = resource; if (subscription) { urlArray.push('/subscriptions', subscription); if (resourceGroup && !multipleResources) { urlArray.push('resourceGroups', resourceGroup); if (metricNamespace && resourceName) { const metricNamespaceProcessed = templateSrv.replace(metricNamespace); const metricNamespaceArray = metricNamespace.split('/'); const resourceNameProcessed = templateSrv.replace(resourceName); const resourceNameArray = resourceName.split('/'); const provider = metricNamespaceArray.shift(); if (provider) { urlArray.push('providers', provider); } if ( metricNamespaceProcessed.toLowerCase().startsWith('microsoft.storage/storageaccounts/') && !resourceNameProcessed.endsWith('default') ) { resourceNameArray.push('default'); } if (resourceNameArray.length > metricNamespaceArray.length) { const parentResource = resourceNameArray.shift(); if (parentResource) { urlArray.push(parentResource); } } for (const i in metricNamespaceArray) { urlArray.push(metricNamespaceArray[i]); urlArray.push(resourceNameArray[i]); } } } } return urlArray.join('/'); } static buildAzureMonitorGetMetricNamespacesUrl( baseUrl: string, apiVersion: string, query: GetMetricNamespacesQuery, globalRegion: boolean, templateSrv: TemplateSrv ) { let resourceUri: string; if ('resourceUri' in query) { resourceUri = query.resourceUri; } else { const { subscription, resourceGroup, metricNamespace, resourceName } = query; resourceUri = UrlBuilder.buildResourceUri(templateSrv, { subscription, resourceGroup, metricNamespace, resourceName, }); } return `${baseUrl}${resourceUri}/providers/microsoft.insights/metricNamespaces?api-version=${apiVersion}${ globalRegion ? '®ion=global' : '' }`; } static buildAzureMonitorGetMetricNamesUrl( baseUrl: string, apiVersion: string, query: GetMetricNamesQuery, templateSrv: TemplateSrv, multipleResources?: boolean, region?: string ) { let resourceUri: string; const { customNamespace, metricNamespace } = query; if ('resourceUri' in query) { resourceUri = query.resourceUri; } else { const { subscription, resourceGroup, metricNamespace, resourceName } = query; resourceUri = UrlBuilder.buildResourceUri( templateSrv, { subscription, resourceGroup, metricNamespace, resourceName, }, multipleResources ); } let url = `${baseUrl}${resourceUri}/providers/microsoft.insights/metricdefinitions?api-version=${apiVersion}`; if (customNamespace) { url += `&metricnamespace=${encodeURIComponent(customNamespace)}`; } if (multipleResources && !customNamespace && metricNamespace) { url += `&metricnamespace=${encodeURIComponent(metricNamespace)}`; } if (region && multipleResources) { url += `®ion=${region}`; } return url; } }
Submit
FILE
FOLDER
INFO
Name
Size
Permission
Action
azure_monitor_datasource.test.ts
41579 bytes
0644
azure_monitor_datasource.ts
14938 bytes
0644
response_parser.ts
4990 bytes
0644
url_builder.test.ts
16077 bytes
0644
url_builder.ts
3677 bytes
0644
N4ST4R_ID | Naxtarrr