/usr/share/grafana/public/app/plugins/datasource/azuremonitor
import { migrateQuery, migrateStringQueriesToObjectQueries } from './grafanaTemplateVariableFns'; import createMockDatasource from './mocks/datasource'; import { AzureMonitorQuery, AzureQueryType } from './types/query'; describe('migrateStringQueriesToObjectQueries', () => { const expectedMigrations: Array<{ input: string; output: AzureMonitorQuery }> = [ { input: 'Subscriptions()', output: { refId: 'A', queryType: AzureQueryType.GrafanaTemplateVariableFn, grafanaTemplateVariableFn: { kind: 'SubscriptionsQuery', rawQuery: 'Subscriptions()' }, subscription: 'defaultSubscriptionId', }, }, { input: 'ResourceGroups()', output: { refId: 'A', queryType: AzureQueryType.GrafanaTemplateVariableFn, grafanaTemplateVariableFn: { kind: 'ResourceGroupsQuery', rawQuery: 'ResourceGroups()', subscription: 'defaultSubscriptionId', }, subscription: 'defaultSubscriptionId', }, }, { input: 'ResourceGroups(subId)', output: { refId: 'A', queryType: AzureQueryType.GrafanaTemplateVariableFn, grafanaTemplateVariableFn: { kind: 'ResourceGroupsQuery', rawQuery: 'ResourceGroups(subId)', subscription: 'subId', }, subscription: 'defaultSubscriptionId', }, }, { input: 'Namespaces(rg)', output: { refId: 'A', queryType: AzureQueryType.GrafanaTemplateVariableFn, grafanaTemplateVariableFn: { kind: 'MetricNamespaceQuery', rawQuery: 'Namespaces(rg)', subscription: 'defaultSubscriptionId', resourceGroup: 'rg', }, subscription: 'defaultSubscriptionId', }, }, { input: 'Namespaces(subId, rg)', output: { refId: 'A', queryType: AzureQueryType.GrafanaTemplateVariableFn, grafanaTemplateVariableFn: { kind: 'MetricNamespaceQuery', rawQuery: 'Namespaces(subId, rg)', subscription: 'subId', resourceGroup: 'rg', }, subscription: 'defaultSubscriptionId', }, }, { input: 'ResourceNames(rg, md)', output: { refId: 'A', queryType: AzureQueryType.GrafanaTemplateVariableFn, grafanaTemplateVariableFn: { kind: 'ResourceNamesQuery', rawQuery: 'ResourceNames(rg, md)', subscription: 'defaultSubscriptionId', resourceGroup: 'rg', metricNamespace: 'md', }, subscription: 'defaultSubscriptionId', }, }, { input: 'ResourceNames(subId, rg, md)', output: { refId: 'A', queryType: AzureQueryType.GrafanaTemplateVariableFn, grafanaTemplateVariableFn: { kind: 'ResourceNamesQuery', rawQuery: 'ResourceNames(subId, rg, md)', subscription: 'subId', resourceGroup: 'rg', metricNamespace: 'md', }, subscription: 'defaultSubscriptionId', }, }, { input: 'MetricNamespace(rg, md, rn)', output: { refId: 'A', queryType: AzureQueryType.GrafanaTemplateVariableFn, grafanaTemplateVariableFn: { kind: 'MetricNamespaceQuery', rawQuery: 'MetricNamespace(rg, md, rn)', subscription: 'defaultSubscriptionId', resourceGroup: 'rg', metricNamespace: 'md', resourceName: 'rn', }, subscription: 'defaultSubscriptionId', }, }, { input: 'MetricNamespace(subId, rg, md, rn)', output: { refId: 'A', queryType: AzureQueryType.GrafanaTemplateVariableFn, grafanaTemplateVariableFn: { kind: 'MetricNamespaceQuery', rawQuery: 'MetricNamespace(subId, rg, md, rn)', subscription: 'subId', resourceGroup: 'rg', metricNamespace: 'md', resourceName: 'rn', }, subscription: 'defaultSubscriptionId', }, }, { input: 'MetricNames(rg, md, rn, mn)', output: { refId: 'A', queryType: AzureQueryType.GrafanaTemplateVariableFn, grafanaTemplateVariableFn: { kind: 'MetricNamesQuery', rawQuery: 'MetricNames(rg, md, rn, mn)', subscription: 'defaultSubscriptionId', resourceGroup: 'rg', metricNamespace: 'md', resourceName: 'rn', }, subscription: 'defaultSubscriptionId', }, }, { input: 'MetricNames(subId, rg, md, rn, mn)', output: { refId: 'A', queryType: AzureQueryType.GrafanaTemplateVariableFn, grafanaTemplateVariableFn: { kind: 'MetricNamesQuery', rawQuery: 'MetricNames(subId, rg, md, rn, mn)', subscription: 'subId', resourceGroup: 'rg', metricNamespace: 'md', resourceName: 'rn', }, subscription: 'defaultSubscriptionId', }, }, { input: 'AppInsightsMetricNames()', output: { refId: 'A', queryType: AzureQueryType.GrafanaTemplateVariableFn, grafanaTemplateVariableFn: { kind: 'AppInsightsMetricNameQuery', rawQuery: 'AppInsightsMetricNames()', }, subscription: 'defaultSubscriptionId', }, }, { input: 'AppInsightsGroupBys(mn)', output: { refId: 'A', queryType: AzureQueryType.GrafanaTemplateVariableFn, grafanaTemplateVariableFn: { kind: 'AppInsightsGroupByQuery', rawQuery: 'AppInsightsGroupBys(mn)', metricName: 'mn', }, subscription: 'defaultSubscriptionId', }, }, { input: 'workspaces()', output: { refId: 'A', queryType: AzureQueryType.GrafanaTemplateVariableFn, grafanaTemplateVariableFn: { kind: 'WorkspacesQuery', rawQuery: 'workspaces()', subscription: 'defaultSubscriptionId', }, subscription: 'defaultSubscriptionId', }, }, { input: 'workspaces(subId)', output: { refId: 'A', queryType: AzureQueryType.GrafanaTemplateVariableFn, grafanaTemplateVariableFn: { kind: 'WorkspacesQuery', rawQuery: 'workspaces(subId)', subscription: 'subId', }, subscription: 'defaultSubscriptionId', }, }, { input: 'some kind of kql query', output: { refId: 'A', queryType: AzureQueryType.LogAnalytics, azureLogAnalytics: { query: 'some kind of kql query', resources: [], }, subscription: 'defaultSubscriptionId', }, }, ]; it('successfully converts all old string queries into formatted query objects', async () => { return expectedMigrations.map(async ({ input, output }) => { const datasource = createMockDatasource({ azureMonitorDatasource: { defaultSubscriptionId: 'defaultSubscriptionId', }, }); const actual = await migrateStringQueriesToObjectQueries(input, { datasource }); expect(actual).toEqual(output); }); }); }); describe('migrateStringQueriesToObjectQueries', () => { const expectedMigrations: Array<{ input: AzureMonitorQuery; output: AzureMonitorQuery }> = [ { input: { refId: 'A', queryType: AzureQueryType.GrafanaTemplateVariableFn, grafanaTemplateVariableFn: { kind: 'SubscriptionsQuery', rawQuery: 'Subscriptions()' }, subscription: 'defaultSubscriptionId', }, output: { refId: 'A', queryType: AzureQueryType.SubscriptionsQuery, }, }, { input: { refId: 'A', queryType: AzureQueryType.GrafanaTemplateVariableFn, grafanaTemplateVariableFn: { kind: 'ResourceGroupsQuery', rawQuery: 'ResourceGroups()', subscription: 'defaultSubscriptionId', }, subscription: 'defaultSubscriptionId', }, output: { refId: 'A', queryType: AzureQueryType.ResourceGroupsQuery, subscription: 'defaultSubscriptionId', }, }, { input: { refId: 'A', queryType: AzureQueryType.GrafanaTemplateVariableFn, grafanaTemplateVariableFn: { kind: 'ResourceGroupsQuery', rawQuery: 'ResourceGroups(subId)', subscription: 'subId', }, subscription: 'defaultSubscriptionId', }, output: { refId: 'A', queryType: AzureQueryType.ResourceGroupsQuery, subscription: 'subId', }, }, { input: { refId: 'A', queryType: AzureQueryType.GrafanaTemplateVariableFn, grafanaTemplateVariableFn: { kind: 'MetricNamespaceQuery', rawQuery: 'Namespaces(rg)', subscription: 'defaultSubscriptionId', resourceGroup: 'rg', }, subscription: 'defaultSubscriptionId', }, output: { refId: 'A', queryType: AzureQueryType.NamespacesQuery, subscription: 'defaultSubscriptionId', resourceGroup: 'rg', }, }, { input: { refId: 'A', queryType: AzureQueryType.GrafanaTemplateVariableFn, grafanaTemplateVariableFn: { kind: 'MetricNamespaceQuery', rawQuery: 'Namespaces(subId, rg)', subscription: 'subId', resourceGroup: 'rg', }, subscription: 'defaultSubscriptionId', }, output: { refId: 'A', queryType: AzureQueryType.NamespacesQuery, subscription: 'subId', resourceGroup: 'rg', }, }, { input: { refId: 'A', queryType: AzureQueryType.GrafanaTemplateVariableFn, grafanaTemplateVariableFn: { kind: 'ResourceNamesQuery', rawQuery: 'ResourceNames(rg, md)', subscription: 'defaultSubscriptionId', resourceGroup: 'rg', metricNamespace: 'md', }, subscription: 'defaultSubscriptionId', }, output: { refId: 'A', queryType: AzureQueryType.ResourceNamesQuery, subscription: 'defaultSubscriptionId', resourceGroup: 'rg', namespace: 'md', }, }, { input: { refId: 'A', queryType: AzureQueryType.GrafanaTemplateVariableFn, grafanaTemplateVariableFn: { kind: 'ResourceNamesQuery', rawQuery: 'ResourceNames(subId, rg, md)', subscription: 'subId', resourceGroup: 'rg', metricNamespace: 'md', }, subscription: 'defaultSubscriptionId', }, output: { refId: 'A', queryType: AzureQueryType.ResourceNamesQuery, subscription: 'subId', resourceGroup: 'rg', namespace: 'md', }, }, { input: { refId: 'A', queryType: AzureQueryType.GrafanaTemplateVariableFn, grafanaTemplateVariableFn: { kind: 'MetricNamespaceQuery', rawQuery: 'MetricNamespace(rg, md, rn)', subscription: 'defaultSubscriptionId', resourceGroup: 'rg', metricNamespace: 'md', resourceName: 'rn', }, subscription: 'defaultSubscriptionId', }, output: { refId: 'A', queryType: AzureQueryType.NamespacesQuery, subscription: 'defaultSubscriptionId', resourceGroup: 'rg', namespace: 'md', resource: 'rn', }, }, { input: { refId: 'A', queryType: AzureQueryType.GrafanaTemplateVariableFn, grafanaTemplateVariableFn: { kind: 'MetricNamespaceQuery', rawQuery: 'MetricNamespace(subId, rg, md, rn)', subscription: 'subId', resourceGroup: 'rg', metricNamespace: 'md', resourceName: 'rn', }, subscription: 'defaultSubscriptionId', }, output: { refId: 'A', queryType: AzureQueryType.NamespacesQuery, subscription: 'subId', resourceGroup: 'rg', namespace: 'md', resource: 'rn', }, }, { input: { refId: 'A', queryType: AzureQueryType.GrafanaTemplateVariableFn, grafanaTemplateVariableFn: { kind: 'MetricNamesQuery', rawQuery: 'MetricNames(rg, md, rn, mn)', subscription: 'defaultSubscriptionId', resourceGroup: 'rg', metricNamespace: 'md', resourceName: 'rn', }, subscription: 'defaultSubscriptionId', }, output: { refId: 'A', queryType: AzureQueryType.MetricNamesQuery, subscription: 'defaultSubscriptionId', resourceGroup: 'rg', namespace: 'md', resource: 'rn', }, }, { input: { refId: 'A', queryType: AzureQueryType.GrafanaTemplateVariableFn, grafanaTemplateVariableFn: { kind: 'MetricNamesQuery', rawQuery: 'MetricNames(subId, rg, md, rn, mn)', subscription: 'subId', resourceGroup: 'rg', metricNamespace: 'md', resourceName: 'rn', }, subscription: 'defaultSubscriptionId', }, output: { refId: 'A', queryType: AzureQueryType.MetricNamesQuery, subscription: 'subId', resourceGroup: 'rg', namespace: 'md', resource: 'rn', }, }, { input: { refId: 'A', queryType: AzureQueryType.GrafanaTemplateVariableFn, grafanaTemplateVariableFn: { kind: 'WorkspacesQuery', rawQuery: 'workspaces()', subscription: 'defaultSubscriptionId', }, subscription: 'defaultSubscriptionId', }, output: { refId: 'A', queryType: AzureQueryType.WorkspacesQuery, subscription: 'defaultSubscriptionId', }, }, { input: { refId: 'A', queryType: AzureQueryType.GrafanaTemplateVariableFn, grafanaTemplateVariableFn: { kind: 'WorkspacesQuery', rawQuery: 'workspaces(subId)', subscription: 'subId', }, subscription: 'defaultSubscriptionId', }, output: { refId: 'A', queryType: AzureQueryType.WorkspacesQuery, subscription: 'subId', }, }, ]; it('successfully converts all old variable functions into formatted predefined queries', async () => { return expectedMigrations.map(async ({ input, output }) => { const datasource = createMockDatasource({ azureMonitorDatasource: { defaultSubscriptionId: 'defaultSubscriptionId', }, }); const actual = await migrateQuery(input, { datasource }); expect(actual).toMatchObject(output); }); }); });
.
Edit
..
Edit
CHANGELOG.md
Edit
README.md
Edit
azureMetadata
Edit
azure_log_analytics
Edit
azure_monitor
Edit
azure_resource_graph
Edit
components
Edit
credentials.ts
Edit
dashboards
Edit
dataquery.cue
Edit
dataquery.gen.ts
Edit
datasource.test.ts
Edit
datasource.ts
Edit
dist
Edit
e2e
Edit
grafanaTemplateVariableFns.ts
Edit
grafanaTemplateVariables.test.ts
Edit
i18next.config.ts
Edit
img
Edit
jest-setup.js
Edit
jest.config.js
Edit
locales
Edit
mocks
Edit
module.test.ts
Edit
module.ts
Edit
package.json
Edit
plugin.json
Edit
project.json
Edit
query_help.md
Edit
resourcePicker
Edit
time_grain_converter.test.ts
Edit
time_grain_converter.ts
Edit
tracking.ts
Edit
tsconfig.json
Edit
types
Edit
utils
Edit
variables.test.ts
Edit
variables.ts
Edit
webpack.config.ts
Edit