diff --git a/ui/src/Components/AlertAck/index.js b/ui/src/Components/AlertAck/index.js index 63bc222e3..11e6d64a6 100644 --- a/ui/src/Components/AlertAck/index.js +++ b/ui/src/Components/AlertAck/index.js @@ -39,7 +39,7 @@ const newPendingSilence = ( payload: GenerateAlertmanagerSilenceData( moment.utc(), moment.utc().add(durationSeconds, "seconds"), - MatchersFromGroup(group, []), + MatchersFromGroup(group, [], group.alerts, true), author, `${ commentPrefix ? commentPrefix + " " : "" diff --git a/ui/src/Components/AlertAck/index.test.js b/ui/src/Components/AlertAck/index.test.js index 58155561f..4a6020cfd 100644 --- a/ui/src/Components/AlertAck/index.test.js +++ b/ui/src/Components/AlertAck/index.test.js @@ -48,7 +48,8 @@ beforeEach(() => { alerts = [ MockAlert([], { foo: "bar" }, "active"), - MockAlert([], { foo: "baz" }, "suppressed") + MockAlert([], { foo: "baz" }, "active"), + MockAlert([], { foo: "ignore" }, "suppressed") ]; group = MockAlertGroup({ alertname: "Fake Alert" }, alerts, [], {}, {}); }); diff --git a/ui/src/Stores/SilenceFormStore.js b/ui/src/Stores/SilenceFormStore.js index 31b807721..965801649 100644 --- a/ui/src/Stores/SilenceFormStore.js +++ b/ui/src/Stores/SilenceFormStore.js @@ -36,7 +36,7 @@ const SilenceTabNames = Object.freeze({ Browser: "browser" }); -const MatchersFromGroup = (group, stripLabels, alerts) => { +const MatchersFromGroup = (group, stripLabels, alerts, onlyActive) => { let matchers = []; // add matchers for all shared labels in this group @@ -55,12 +55,14 @@ const MatchersFromGroup = (group, stripLabels, alerts) => { let labels = {}; const allAlerts = alerts ? alerts : group.alerts; for (const alert of allAlerts) { - for (const [key, value] of Object.entries(alert.labels)) { - if (!stripLabels.includes(key)) { - if (!labels[key]) { - labels[key] = new Set(); + if (!onlyActive || alert.state === "active") { + for (const [key, value] of Object.entries(alert.labels)) { + if (!stripLabels.includes(key)) { + if (!labels[key]) { + labels[key] = new Set(); + } + labels[key].add(value); } - labels[key].add(value); } } } diff --git a/ui/src/Stores/SilenceFormStore.test.js b/ui/src/Stores/SilenceFormStore.test.js index 2dcfee6c9..b5be8d192 100644 --- a/ui/src/Stores/SilenceFormStore.test.js +++ b/ui/src/Stores/SilenceFormStore.test.js @@ -160,7 +160,7 @@ describe("SilenceFormStore.data", () => { ); }); - it("fillMatchersFromGroup() creates correct matcher object for a group with only a subset of alets passed", () => { + it("fillMatchersFromGroup() creates correct matcher object for a group with only a subset of alerts passed", () => { const group = MockGroup(); store.data.fillMatchersFromGroup(group, [], [group.alerts[0]]); expect(store.data.matchers).toHaveLength(4);