From a4c2237d16162b1680ca99d5e27012a3b708cdc2 Mon Sep 17 00:00:00 2001 From: Andres Martinez Gotor Date: Mon, 16 Jan 2023 11:26:56 +0100 Subject: [PATCH] AzureMonitor: Add region to the resource info (#61504) --- .../MetricsQueryEditor/MetricsQueryEditor.tsx | 1 + .../components/ResourcePicker/NestedRow.tsx | 2 +- .../components/ResourcePicker/ResourcePicker.tsx | 2 +- .../components/ResourcePicker/types.ts | 1 + .../components/ResourcePicker/utils.test.ts | 2 ++ .../components/ResourcePicker/utils.ts | 11 ++++++++--- .../resourcePicker/resourcePickerData.test.ts | 3 ++- .../resourcePicker/resourcePickerData.ts | 3 ++- .../grafana-azure-monitor-datasource/types/query.ts | 2 ++ 9 files changed, 20 insertions(+), 7 deletions(-) diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MetricsQueryEditor/MetricsQueryEditor.tsx b/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MetricsQueryEditor/MetricsQueryEditor.tsx index 39b39a76555..1d1c8c89f4d 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MetricsQueryEditor/MetricsQueryEditor.tsx +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MetricsQueryEditor/MetricsQueryEditor.tsx @@ -42,6 +42,7 @@ const MetricsQueryEditor: React.FC = ({ resourceGroup: query.azureMonitor?.resources?.[0]?.resourceGroup, metricNamespace: query.azureMonitor?.metricNamespace, resourceName: query.azureMonitor?.resources?.[0]?.resourceName, + region: query.azureMonitor?.region, }; return ( diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ResourcePicker/NestedRow.tsx b/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ResourcePicker/NestedRow.tsx index 15d11998a84..eea2a9cfbb3 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ResourcePicker/NestedRow.tsx +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ResourcePicker/NestedRow.tsx @@ -76,7 +76,7 @@ const NestedRow: React.FC = ({ {row.typeLabel} - {row.location ?? '-'} + {row.locationDisplayName ?? '-'} {isOpen && diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ResourcePicker/ResourcePicker.tsx b/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ResourcePicker/ResourcePicker.tsx index 4b9b1fe4f19..5a45f394632 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ResourcePicker/ResourcePicker.tsx +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ResourcePicker/ResourcePicker.tsx @@ -113,7 +113,7 @@ const ResourcePicker = ({ const handleSelectionChanged = useCallback( (row: ResourceRow, isSelected: boolean) => { isSelected - ? setInternalSelected(resourceIsString ? row.uri : parseResourceDetails(row.uri)) + ? setInternalSelected(resourceIsString ? row.uri : parseResourceDetails(row.uri, row.location)) : setInternalSelected(resourceIsString ? '' : {}); }, [resourceIsString] diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ResourcePicker/types.ts b/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ResourcePicker/types.ts index 7183f427bf9..d6022dd8eaa 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ResourcePicker/types.ts +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ResourcePicker/types.ts @@ -12,6 +12,7 @@ export interface ResourceRow { name: string; type: ResourceRowType; typeLabel: string; + locationDisplayName?: string; location?: string; children?: ResourceRowGroup; } diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ResourcePicker/utils.test.ts b/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ResourcePicker/utils.test.ts index c0101c4b63b..dbe224d5900 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ResourcePicker/utils.test.ts +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ResourcePicker/utils.test.ts @@ -177,6 +177,7 @@ describe('AzureMonitor ResourcePicker utils', () => { resourceGroup: 'rg', metricNamespace: 'Microsoft.Storage/storageAccounts', resourceName: 'testacct', + region: 'westus', }) ).toMatchObject({ subscription: 'sub', @@ -184,6 +185,7 @@ describe('AzureMonitor ResourcePicker utils', () => { aggregation: undefined, metricName: undefined, metricNamespace: 'microsoft.storage/storageaccounts', + region: 'westus', resources: [ { resourceGroup: 'rg', diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ResourcePicker/utils.ts b/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ResourcePicker/utils.ts index 16ae043f0d1..37900a6d151 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ResourcePicker/utils.ts +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/ResourcePicker/utils.ts @@ -34,7 +34,7 @@ function parseNamespaceAndName(metricNamespaceAndName?: string) { return { metricNamespace: namespaceArray.join('/'), resourceName: resourceNameArray.join('/') }; } -export function parseResourceURI(resourceURI: string) { +export function parseResourceURI(resourceURI: string): AzureMetricResource { const matches = RESOURCE_URI_REGEX.exec(resourceURI); const groups: RegexGroups = matches?.groups ?? {}; const { subscription, resourceGroup, metricNamespaceAndResource } = groups; @@ -43,9 +43,13 @@ export function parseResourceURI(resourceURI: string) { return { subscription, resourceGroup, metricNamespace, resourceName }; } -export function parseResourceDetails(resource: string | AzureMetricResource) { +export function parseResourceDetails(resource: string | AzureMetricResource, location?: string) { if (typeof resource === 'string') { - return parseResourceURI(resource); + const res = parseResourceURI(resource); + if (location) { + res.region = location; + } + return res; } return resource; } @@ -146,6 +150,7 @@ export function setResource(query: AzureMonitorQuery, resource?: string | AzureM azureMonitor: { ...query.azureMonitor, metricNamespace: resource?.metricNamespace?.toLocaleLowerCase(), + region: resource?.region, resources: [{ resourceGroup: resource?.resourceGroup, resourceName: resource?.resourceName }], metricName: undefined, aggregation: undefined, diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/resourcePicker/resourcePickerData.test.ts b/public/app/plugins/datasource/grafana-azure-monitor-datasource/resourcePicker/resourcePickerData.test.ts index 5e379f8fd93..c5295fee21b 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/resourcePicker/resourcePickerData.test.ts +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/resourcePicker/resourcePickerData.test.ts @@ -241,7 +241,8 @@ describe('AzureMonitor resourcePickerData', () => { id: 'web-server', name: 'web-server', type: 'Resource', - location: 'North Europe', + location: 'northeurope', + locationDisplayName: 'North Europe', resourceGroupName: 'dev', typeLabel: 'Microsoft.Compute/virtualMachines', uri: '/subscriptions/def-456/resourceGroups/dev/providers/Microsoft.Compute/virtualMachines/web-server', diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/resourcePicker/resourcePickerData.ts b/public/app/plugins/datasource/grafana-azure-monitor-datasource/resourcePicker/resourcePickerData.ts index 0dd259b7143..db23d7f4d40 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/resourcePicker/resourcePickerData.ts +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/resourcePicker/resourcePickerData.ts @@ -247,7 +247,8 @@ export default class ResourcePickerData extends DataSourceWithBackend