mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
AzureMonitor: revert Variable Editor region changes (#72306)
* Revert "remove regions/locations from variable editor" This reverts commit41dc6a8bfb
. * Revert "remove region pieces from e2e" This reverts commit6b1f82f14a
. * e2e: open resource picker correctly
This commit is contained in:
parent
0c2b2219bb
commit
51b199e986
@ -126,6 +126,10 @@ const addAzureMonitorVariable = (
|
|||||||
.input()
|
.input()
|
||||||
.find('input')
|
.find('input')
|
||||||
.type(`${options?.namespace}{enter}`);
|
.type(`${options?.namespace}{enter}`);
|
||||||
|
e2eSelectors.variableEditor.region
|
||||||
|
.input()
|
||||||
|
.find('input')
|
||||||
|
.type(`${options?.region}{enter}`);
|
||||||
break;
|
break;
|
||||||
case AzureQueryType.MetricNamesQuery:
|
case AzureQueryType.MetricNamesQuery:
|
||||||
e2eSelectors.variableEditor.subscription
|
e2eSelectors.variableEditor.subscription
|
||||||
@ -302,10 +306,14 @@ e2e.scenario({
|
|||||||
subscription: '$subscription',
|
subscription: '$subscription',
|
||||||
resourceGroup: '$resourceGroups',
|
resourceGroup: '$resourceGroups',
|
||||||
});
|
});
|
||||||
|
addAzureMonitorVariable('region', AzureQueryType.LocationsQuery, false, {
|
||||||
|
subscription: '$subscription',
|
||||||
|
});
|
||||||
addAzureMonitorVariable('resource', AzureQueryType.ResourceNamesQuery, false, {
|
addAzureMonitorVariable('resource', AzureQueryType.ResourceNamesQuery, false, {
|
||||||
subscription: '$subscription',
|
subscription: '$subscription',
|
||||||
resourceGroup: '$resourceGroups',
|
resourceGroup: '$resourceGroups',
|
||||||
namespace: '$namespace',
|
namespace: '$namespace',
|
||||||
|
region: '$region',
|
||||||
});
|
});
|
||||||
e2e.pages.Dashboard.SubMenu.submenuItemLabels('subscription').click();
|
e2e.pages.Dashboard.SubMenu.submenuItemLabels('subscription').click();
|
||||||
e2e.pages.Dashboard.SubMenu.submenuItemValueDropDownOptionTexts('grafanalabs-datasources-dev').click();
|
e2e.pages.Dashboard.SubMenu.submenuItemValueDropDownOptionTexts('grafanalabs-datasources-dev').click();
|
||||||
@ -319,6 +327,8 @@ e2e.scenario({
|
|||||||
.parent()
|
.parent()
|
||||||
.find('input')
|
.find('input')
|
||||||
.type('microsoft.storage/storageaccounts{downArrow}{enter}');
|
.type('microsoft.storage/storageaccounts{downArrow}{enter}');
|
||||||
|
e2e.pages.Dashboard.SubMenu.submenuItemLabels('region').parent().find('button').click();
|
||||||
|
e2e.pages.Dashboard.SubMenu.submenuItemLabels('region').parent().find('input').type('uk south{downArrow}{enter}');
|
||||||
e2e.pages.Dashboard.SubMenu.submenuItemLabels('resource').parent().find('button').click();
|
e2e.pages.Dashboard.SubMenu.submenuItemLabels('resource').parent().find('button').click();
|
||||||
e2e.pages.Dashboard.SubMenu.submenuItemLabels('resource')
|
e2e.pages.Dashboard.SubMenu.submenuItemLabels('resource')
|
||||||
.parent()
|
.parent()
|
||||||
@ -333,6 +343,7 @@ e2e.scenario({
|
|||||||
e2eSelectors.queryEditor.resourcePicker.advanced.subscription.input().find('input').type('$subscription');
|
e2eSelectors.queryEditor.resourcePicker.advanced.subscription.input().find('input').type('$subscription');
|
||||||
e2eSelectors.queryEditor.resourcePicker.advanced.resourceGroup.input().find('input').type('$resourceGroups');
|
e2eSelectors.queryEditor.resourcePicker.advanced.resourceGroup.input().find('input').type('$resourceGroups');
|
||||||
e2eSelectors.queryEditor.resourcePicker.advanced.namespace.input().find('input').type('$namespaces');
|
e2eSelectors.queryEditor.resourcePicker.advanced.namespace.input().find('input').type('$namespaces');
|
||||||
|
e2eSelectors.queryEditor.resourcePicker.advanced.region.input().find('input').type('$region');
|
||||||
e2eSelectors.queryEditor.resourcePicker.advanced.resource.input().find('input').type('$resource');
|
e2eSelectors.queryEditor.resourcePicker.advanced.resource.input().find('input').type('$resource');
|
||||||
e2eSelectors.queryEditor.resourcePicker.apply.button().click();
|
e2eSelectors.queryEditor.resourcePicker.apply.button().click();
|
||||||
e2eSelectors.queryEditor.metricsQueryEditor.metricName.input().find('input').type('Transactions{enter}');
|
e2eSelectors.queryEditor.metricsQueryEditor.metricName.input().find('input').type('Transactions{enter}');
|
||||||
|
@ -258,10 +258,12 @@ describe('VariableEditor:', () => {
|
|||||||
await waitFor(() => expect(screen.getByText('Logs')).toBeInTheDocument());
|
await waitFor(() => expect(screen.getByText('Logs')).toBeInTheDocument());
|
||||||
await selectAndRerender('select query type', 'Resource Names', onChange, rerender);
|
await selectAndRerender('select query type', 'Resource Names', onChange, rerender);
|
||||||
await selectAndRerender('select subscription', 'Primary Subscription', onChange, rerender);
|
await selectAndRerender('select subscription', 'Primary Subscription', onChange, rerender);
|
||||||
|
await selectAndRerender('select region', 'North Europe', onChange, rerender);
|
||||||
expect(onChange).toHaveBeenCalledWith(
|
expect(onChange).toHaveBeenCalledWith(
|
||||||
expect.objectContaining({
|
expect.objectContaining({
|
||||||
queryType: AzureQueryType.ResourceNamesQuery,
|
queryType: AzureQueryType.ResourceNamesQuery,
|
||||||
subscription: 'sub',
|
subscription: 'sub',
|
||||||
|
region: 'northeurope',
|
||||||
refId: 'A',
|
refId: 'A',
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
@ -323,5 +325,21 @@ describe('VariableEditor:', () => {
|
|||||||
})
|
})
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should run the query if requesting regions', async () => {
|
||||||
|
const onChange = jest.fn();
|
||||||
|
const { rerender } = render(<VariableEditor {...defaultProps} onChange={onChange} />);
|
||||||
|
// wait for initial load
|
||||||
|
await waitFor(() => expect(screen.getByText('Logs')).toBeInTheDocument());
|
||||||
|
await selectAndRerender('select query type', 'Regions', onChange, rerender);
|
||||||
|
await selectAndRerender('select subscription', 'Primary Subscription', onChange, rerender);
|
||||||
|
expect(onChange).toHaveBeenCalledWith(
|
||||||
|
expect.objectContaining({
|
||||||
|
queryType: AzureQueryType.LocationsQuery,
|
||||||
|
subscription: 'sub',
|
||||||
|
refId: 'A',
|
||||||
|
})
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -30,6 +30,7 @@ const VariableEditor = (props: Props) => {
|
|||||||
{ label: 'Subscriptions', value: AzureQueryType.SubscriptionsQuery },
|
{ label: 'Subscriptions', value: AzureQueryType.SubscriptionsQuery },
|
||||||
{ label: 'Resource Groups', value: AzureQueryType.ResourceGroupsQuery },
|
{ label: 'Resource Groups', value: AzureQueryType.ResourceGroupsQuery },
|
||||||
{ label: 'Namespaces', value: AzureQueryType.NamespacesQuery },
|
{ label: 'Namespaces', value: AzureQueryType.NamespacesQuery },
|
||||||
|
{ label: 'Regions', value: AzureQueryType.LocationsQuery },
|
||||||
{ label: 'Resource Names', value: AzureQueryType.ResourceNamesQuery },
|
{ label: 'Resource Names', value: AzureQueryType.ResourceNamesQuery },
|
||||||
{ label: 'Metric Names', value: AzureQueryType.MetricNamesQuery },
|
{ label: 'Metric Names', value: AzureQueryType.MetricNamesQuery },
|
||||||
{ label: 'Workspaces', value: AzureQueryType.WorkspacesQuery },
|
{ label: 'Workspaces', value: AzureQueryType.WorkspacesQuery },
|
||||||
@ -50,6 +51,7 @@ const VariableEditor = (props: Props) => {
|
|||||||
const [requireSubscription, setRequireSubscription] = useState(false);
|
const [requireSubscription, setRequireSubscription] = useState(false);
|
||||||
const [hasResourceGroup, setHasResourceGroup] = useState(false);
|
const [hasResourceGroup, setHasResourceGroup] = useState(false);
|
||||||
const [hasNamespace, setHasNamespace] = useState(false);
|
const [hasNamespace, setHasNamespace] = useState(false);
|
||||||
|
const [hasRegion, setHasRegion] = useState(false);
|
||||||
const [requireResourceGroup, setRequireResourceGroup] = useState(false);
|
const [requireResourceGroup, setRequireResourceGroup] = useState(false);
|
||||||
const [requireNamespace, setRequireNamespace] = useState(false);
|
const [requireNamespace, setRequireNamespace] = useState(false);
|
||||||
const [requireResource, setRequireResource] = useState(false);
|
const [requireResource, setRequireResource] = useState(false);
|
||||||
@ -57,6 +59,7 @@ const VariableEditor = (props: Props) => {
|
|||||||
const [resourceGroups, setResourceGroups] = useState<SelectableValue[]>([]);
|
const [resourceGroups, setResourceGroups] = useState<SelectableValue[]>([]);
|
||||||
const [namespaces, setNamespaces] = useState<SelectableValue[]>([]);
|
const [namespaces, setNamespaces] = useState<SelectableValue[]>([]);
|
||||||
const [resources, setResources] = useState<SelectableValue[]>([]);
|
const [resources, setResources] = useState<SelectableValue[]>([]);
|
||||||
|
const [regions, setRegions] = useState<SelectableValue[]>([]);
|
||||||
const [errorMessage, setError] = useLastError();
|
const [errorMessage, setError] = useLastError();
|
||||||
const queryType = typeof query === 'string' ? '' : query.queryType;
|
const queryType = typeof query === 'string' ? '' : query.queryType;
|
||||||
|
|
||||||
@ -88,6 +91,7 @@ const VariableEditor = (props: Props) => {
|
|||||||
setRequireSubscription(true);
|
setRequireSubscription(true);
|
||||||
setHasResourceGroup(true);
|
setHasResourceGroup(true);
|
||||||
setHasNamespace(true);
|
setHasNamespace(true);
|
||||||
|
setHasRegion(true);
|
||||||
break;
|
break;
|
||||||
case AzureQueryType.MetricNamesQuery:
|
case AzureQueryType.MetricNamesQuery:
|
||||||
setRequireSubscription(true);
|
setRequireSubscription(true);
|
||||||
@ -95,6 +99,9 @@ const VariableEditor = (props: Props) => {
|
|||||||
setRequireNamespace(true);
|
setRequireNamespace(true);
|
||||||
setRequireResource(true);
|
setRequireResource(true);
|
||||||
break;
|
break;
|
||||||
|
case AzureQueryType.LocationsQuery:
|
||||||
|
setRequireSubscription(true);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}, [queryType]);
|
}, [queryType]);
|
||||||
|
|
||||||
@ -135,6 +142,16 @@ const VariableEditor = (props: Props) => {
|
|||||||
}
|
}
|
||||||
}, [datasource, subscription, resourceGroup]);
|
}, [datasource, subscription, resourceGroup]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (subscription) {
|
||||||
|
datasource.azureMonitorDatasource.getLocations([subscription]).then((rgs) => {
|
||||||
|
const regions: SelectableValue[] = [];
|
||||||
|
rgs.forEach((r) => regions.push({ label: r.displayName, value: r.name }));
|
||||||
|
setRegions(regions);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, [datasource, subscription, resourceGroup]);
|
||||||
|
|
||||||
const namespace = (typeof query === 'object' && query.namespace) || '';
|
const namespace = (typeof query === 'object' && query.namespace) || '';
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (subscription) {
|
if (subscription) {
|
||||||
@ -191,6 +208,13 @@ const VariableEditor = (props: Props) => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const onChangeRegion = (selectableValue: SelectableValue) => {
|
||||||
|
onChange({
|
||||||
|
...query,
|
||||||
|
region: selectableValue.value,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
const onChangeResource = (selectableValue: SelectableValue) => {
|
const onChangeResource = (selectableValue: SelectableValue) => {
|
||||||
onChange({
|
onChange({
|
||||||
...query,
|
...query,
|
||||||
@ -296,6 +320,22 @@ const VariableEditor = (props: Props) => {
|
|||||||
/>
|
/>
|
||||||
</InlineField>
|
</InlineField>
|
||||||
)}
|
)}
|
||||||
|
{hasRegion && (
|
||||||
|
<InlineField
|
||||||
|
label="Select region"
|
||||||
|
labelWidth={20}
|
||||||
|
data-testid={selectors.components.variableEditor.region.input}
|
||||||
|
>
|
||||||
|
<Select
|
||||||
|
aria-label="select region"
|
||||||
|
onChange={onChangeRegion}
|
||||||
|
options={regions.concat(variableOptionGroup)}
|
||||||
|
width={25}
|
||||||
|
value={query.region || null}
|
||||||
|
placeholder="Optional"
|
||||||
|
/>
|
||||||
|
</InlineField>
|
||||||
|
)}
|
||||||
{requireResource && (
|
{requireResource && (
|
||||||
<InlineField
|
<InlineField
|
||||||
label="Select resource"
|
label="Select resource"
|
||||||
|
@ -109,6 +109,17 @@ export class VariableSupport extends CustomVariableSupport<DataSource, AzureMoni
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
return { data: [] };
|
return { data: [] };
|
||||||
|
case AzureQueryType.LocationsQuery:
|
||||||
|
if (queryObj.subscription && this.hasValue(queryObj.subscription)) {
|
||||||
|
const locationMap = await this.datasource.azureMonitorDatasource.getLocations([queryObj.subscription]);
|
||||||
|
const res: Array<{ text: string; value: string }> = [];
|
||||||
|
locationMap.forEach((loc) => {
|
||||||
|
res.push({ text: loc.displayName, value: loc.name });
|
||||||
|
});
|
||||||
|
return {
|
||||||
|
data: res?.length ? [toDataFrame(res)] : [],
|
||||||
|
};
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
request.targets[0] = queryObj;
|
request.targets[0] = queryObj;
|
||||||
const queryResp = await lastValueFrom(this.datasource.query(request));
|
const queryResp = await lastValueFrom(this.datasource.query(request));
|
||||||
|
Loading…
Reference in New Issue
Block a user