diff --git a/public/app/plugins/datasource/cloudwatch/components/QueryEditor/MetricsQueryEditor/SQLBuilderEditor/SQLBuilderSelectRow.tsx b/public/app/plugins/datasource/cloudwatch/components/QueryEditor/MetricsQueryEditor/SQLBuilderEditor/SQLBuilderSelectRow.tsx index 859031eec9a9..d350e18bf668 100644 --- a/public/app/plugins/datasource/cloudwatch/components/QueryEditor/MetricsQueryEditor/SQLBuilderEditor/SQLBuilderSelectRow.tsx +++ b/public/app/plugins/datasource/cloudwatch/components/QueryEditor/MetricsQueryEditor/SQLBuilderEditor/SQLBuilderSelectRow.tsx @@ -2,13 +2,15 @@ import { useEffect, useMemo } from 'react'; import { SelectableValue, toOption } from '@grafana/data'; import { EditorField, EditorFieldGroup, EditorSwitch } from '@grafana/experimental'; +import { config } from '@grafana/runtime'; import { Select } from '@grafana/ui'; import { CloudWatchDatasource } from '../../../../datasource'; -import { useDimensionKeys, useMetrics, useNamespaces } from '../../../../hooks'; +import { useAccountOptions, useDimensionKeys, useMetrics, useNamespaces } from '../../../../hooks'; import { STATISTICS } from '../../../../language/cloudwatch-sql/language'; import { CloudWatchMetricsQuery } from '../../../../types'; import { appendTemplateVariables } from '../../../../utils/utils'; +import { Account } from '../../../shared/Account'; import { getMetricNameFromExpression, @@ -48,13 +50,24 @@ const SQLBuilderSelectRow = ({ datasource, query, onQueryChange }: SQLBuilderSel const withSchemaEnabled = isUsingWithSchema(sql.from); const namespaceOptions = useNamespaces(datasource); - const metricOptions = useMetrics(datasource, { region: query.region, namespace }); + const metricOptions = useMetrics(datasource, { + region: query.region, + namespace, + ...(config.featureToggles.cloudWatchCrossAccountQuerying && + config.featureToggles.cloudwatchMetricInsightsCrossAccount + ? { accountId: query.accountId } + : {}), + }); const existingFilters = useMemo(() => stringArrayToDimensions(schemaLabels ?? []), [schemaLabels]); const unusedDimensionKeys = useDimensionKeys(datasource, { region: query.region, namespace, metricName, dimensionFilters: existingFilters, + ...(config.featureToggles.cloudWatchCrossAccountQuerying && + config.featureToggles.cloudwatchMetricInsightsCrossAccount + ? { accountId: query.accountId } + : {}), }); const dimensionKeys = useMemo( () => (schemaLabels?.length ? [...unusedDimensionKeys, ...schemaLabels.map(toOption)] : unusedDimensionKeys), @@ -76,9 +89,23 @@ const SQLBuilderSelectRow = ({ datasource, query, onQueryChange }: SQLBuilderSel return { ...query, sql }; }; + const accountState = useAccountOptions(datasource.resources, query.region); return ( <> + {config.featureToggles.cloudWatchCrossAccountQuerying && + config.featureToggles.cloudwatchMetricInsightsCrossAccount && ( + { + onQueryChange({ + ...query, + accountId, + }); + }} + /> + )}