Alerting: Read group details before saving (#53586)
This commit is contained in:
@@ -115,7 +115,7 @@ export function sortRulesByName(rules: CombinedRule[]) {
|
||||
return rules.sort((a, b) => a.name.localeCompare(b.name));
|
||||
}
|
||||
|
||||
function addRulerGroupsToCombinedNamespace(namespace: CombinedRuleNamespace, groups: RulerRuleGroupDTO[]): void {
|
||||
function addRulerGroupsToCombinedNamespace(namespace: CombinedRuleNamespace, groups: RulerRuleGroupDTO[] = []): void {
|
||||
namespace.groups = groups.map((group) => {
|
||||
const combinedGroup: CombinedRuleGroup = {
|
||||
name: group.name,
|
||||
|
||||
@@ -157,16 +157,22 @@ export function getRulerClient(rulerConfig: RulerDataSourceConfig): RulerClient
|
||||
return addRuleToNamespaceAndGroup(namespace, groupSpec, newRule);
|
||||
}
|
||||
|
||||
const sameNamespace = existingRule.namespace === namespace;
|
||||
const sameGroup = existingRule.group.name === values.group;
|
||||
// we'll fetch the existing group again, someone might have updated it while we were editing a rule
|
||||
const freshExisting = await findEditableRule(ruleId.fromRuleWithLocation(existingRule));
|
||||
if (!freshExisting) {
|
||||
throw new Error('Rule not found.');
|
||||
}
|
||||
|
||||
const sameNamespace = freshExisting.namespace === namespace;
|
||||
const sameGroup = freshExisting.group.name === values.group;
|
||||
const sameLocation = sameNamespace && sameGroup;
|
||||
|
||||
if (sameLocation) {
|
||||
// we're update a rule in the same namespace and group
|
||||
return updateGrafanaRule(existingRule, newRule, evaluateEvery);
|
||||
return updateGrafanaRule(freshExisting, newRule, evaluateEvery);
|
||||
} else {
|
||||
// we're moving a rule to either a different group or namespace
|
||||
return moveGrafanaRule(namespace, groupSpec, existingRule, newRule);
|
||||
return moveGrafanaRule(namespace, groupSpec, freshExisting, newRule);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user