mirror of
https://github.com/grafana/grafana.git
synced 2025-02-14 01:23:32 -06:00
Alerting: Fix creating a recording rule when having multiple datasources (#66415)
Fix creating recording rules when having multiple datasources
This commit is contained in:
parent
0b2a4322db
commit
2991d4c213
@ -57,17 +57,19 @@ export const RecordingRuleEditor: FC<RecordingRuleEditorProps> = ({
|
||||
|
||||
const handleChangedQuery = (changedQuery: DataQuery) => {
|
||||
const query = queries[0];
|
||||
const dataSourceId = getDataSourceSrv().getInstanceSettings(dataSourceName)?.uid;
|
||||
|
||||
if (!isPromOrLokiQuery(query.model)) {
|
||||
if (!isPromOrLokiQuery(changedQuery) || !dataSourceId) {
|
||||
return;
|
||||
}
|
||||
|
||||
const expr = query.model.expr;
|
||||
const expr = changedQuery.expr;
|
||||
|
||||
const merged = {
|
||||
...query,
|
||||
refId: changedQuery.refId,
|
||||
queryType: query.model.queryType ?? '',
|
||||
queryType: changedQuery.queryType ?? '',
|
||||
datasourceUid: dataSourceId,
|
||||
expr,
|
||||
model: {
|
||||
refId: changedQuery.refId,
|
||||
|
@ -67,6 +67,8 @@ export const AlertType = ({ editingExistingRule }: Props) => {
|
||||
onChange={(ds: DataSourceInstanceSettings) => {
|
||||
// reset location if switching data sources, as different rules source will have different groups and namespaces
|
||||
setValue('location', undefined);
|
||||
// reset expression as they don't need to persist after changing datasources
|
||||
setValue('expression', '');
|
||||
onChange(ds?.name ?? null);
|
||||
}}
|
||||
/>
|
||||
|
@ -198,19 +198,26 @@ export const QueryAndExpressionsStep = ({ editingExistingRule, onDataChange }: P
|
||||
useEffect(() => {
|
||||
setPanelData({});
|
||||
if (type === RuleFormType.cloudRecording) {
|
||||
const expr = getValues('expression');
|
||||
const datasourceUid =
|
||||
(editingExistingRule && getDataSourceSrv().getInstanceSettings(dataSourceName)?.uid) ||
|
||||
recordingRuleDefaultDatasource.uid;
|
||||
|
||||
const defaultQuery = {
|
||||
refId: 'A',
|
||||
datasourceUid: recordingRuleDefaultDatasource.uid,
|
||||
datasourceUid,
|
||||
queryType: '',
|
||||
relativeTimeRange: getDefaultRelativeTimeRange(),
|
||||
expr,
|
||||
model: {
|
||||
refId: 'A',
|
||||
hide: false,
|
||||
expr,
|
||||
},
|
||||
};
|
||||
dispatch(setRecordingRulesQueries({ recordingRuleQueries: [defaultQuery], expression: getValues('expression') }));
|
||||
dispatch(setRecordingRulesQueries({ recordingRuleQueries: [defaultQuery], expression: expr }));
|
||||
}
|
||||
}, [type, recordingRuleDefaultDatasource, editingExistingRule, getValues]);
|
||||
}, [type, recordingRuleDefaultDatasource, editingExistingRule, getValues, dataSourceName]);
|
||||
|
||||
const onDuplicateQuery = useCallback((query: AlertQuery) => {
|
||||
dispatch(duplicateQuery(query));
|
||||
|
Loading…
Reference in New Issue
Block a user