diff --git a/ui/src/Components/Grid/AlertGrid/AlertGroup/Alert/__snapshots__/index.test.js.snap b/ui/src/Components/Grid/AlertGrid/AlertGroup/Alert/__snapshots__/index.test.js.snap
index 23529f82a..464c2d83b 100644
--- a/ui/src/Components/Grid/AlertGrid/AlertGroup/Alert/__snapshots__/index.test.js.snap
+++ b/ui/src/Components/Grid/AlertGrid/AlertGroup/Alert/__snapshots__/index.test.js.snap
@@ -1,5 +1,149 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[` matches snapshot when inhibited 1`] = `
+"
+
+
+
+
+
+ help:
+
+
+ some long text
+
+
+
+
+
+
+
+
+
+
+
+
+ job:
+
+
+ node_exporter
+
+
+
+
+
+
+ cluster:
+
+
+ dev
+
+
+
+
+
+ link
+
+
+"
+`;
+
exports[` matches snapshot with showAlertmanagers=false showReceiver=false 1`] = `
"
diff --git a/ui/src/Components/Grid/AlertGrid/AlertGroup/Alert/index.js b/ui/src/Components/Grid/AlertGrid/AlertGroup/Alert/index.js
index 650582ea7..941365145 100644
--- a/ui/src/Components/Grid/AlertGrid/AlertGroup/Alert/index.js
+++ b/ui/src/Components/Grid/AlertGrid/AlertGroup/Alert/index.js
@@ -3,11 +3,15 @@ import PropTypes from "prop-types";
import { observer } from "mobx-react";
+import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
+import { faVolumeMute } from "@fortawesome/free-solid-svg-icons/faVolumeMute";
+
import { APIAlert, APIGroup } from "Models/API";
import { SilenceFormStore } from "Stores/SilenceFormStore";
import { BorderClassMap } from "Common/Colors";
import { StaticLabels } from "Common/Query";
import { FilteringLabel } from "Components/Labels/FilteringLabel";
+import { TooltipWrapper } from "Components/TooltipWrapper";
import { RenderNonLinkAnnotation, RenderLinkAnnotation } from "../Annotation";
import { Silence } from "../Silence";
import { AlertMenu } from "./AlertMenu";
@@ -80,6 +84,15 @@ const Alert = observer(
alert={alert}
silenceFormStore={silenceFormStore}
/>
+ {alert.alertmanager
+ .map(am => am.inhibitedBy.length)
+ .reduce((sum, x) => sum + x) > 0 ? (
+
+
+
+
+
+ ) : null}
{Object.entries(alert.labels).map(([name, value]) => (
))}
diff --git a/ui/src/Components/Grid/AlertGrid/AlertGroup/Alert/index.test.js b/ui/src/Components/Grid/AlertGrid/AlertGroup/Alert/index.test.js
index f5efc1a1b..29490ee35 100644
--- a/ui/src/Components/Grid/AlertGrid/AlertGroup/Alert/index.test.js
+++ b/ui/src/Components/Grid/AlertGrid/AlertGroup/Alert/index.test.js
@@ -66,6 +66,22 @@ describe("", () => {
expect(toDiffableHtml(tree.html())).toMatchSnapshot();
});
+ it("matches snapshot when inhibited", () => {
+ const alert = MockedAlert();
+ alert.alertmanager[0].inhibitedBy = ["123456"];
+ const group = MockAlertGroup({}, [alert], [], {});
+ const tree = MountedAlert(alert, group, false, false);
+ expect(toDiffableHtml(tree.html())).toMatchSnapshot();
+ });
+
+ it("renders inhibition icon when inhibited", () => {
+ const alert = MockedAlert();
+ alert.alertmanager[0].inhibitedBy = ["123456"];
+ const group = MockAlertGroup({}, [alert], [], {});
+ const tree = MountedAlert(alert, group, false, false);
+ expect(tree.find(".fa-volume-mute")).toHaveLength(1);
+ });
+
it("renders @alertmanager label with showAlertmanagers=true", () => {
const alert = MockedAlert();
const group = MockAlertGroup({}, [alert], [], {});
@@ -106,7 +122,8 @@ describe("", () => {
startsAt: "2018-08-14T17:36:40.017867056Z",
endsAt: "0001-01-01T00:00:00Z",
source: "localhost/am1",
- silencedBy: ["silence123456789"]
+ silencedBy: ["silence123456789"],
+ inhibitedBy: []
},
{
name: "am2",
@@ -115,7 +132,8 @@ describe("", () => {
startsAt: "2018-08-14T17:36:40.017867056Z",
endsAt: "0001-01-01T00:00:00Z",
source: "localhost/am2",
- silencedBy: ["silence123456789"]
+ silencedBy: ["silence123456789"],
+ inhibitedBy: []
}
];
const group = MockAlertGroup({}, [alert], [], {});
diff --git a/ui/src/Components/Grid/AlertGrid/AlertGroup/Silence/index.test.js b/ui/src/Components/Grid/AlertGrid/AlertGroup/Silence/index.test.js
index e78c633e9..18dae9633 100644
--- a/ui/src/Components/Grid/AlertGrid/AlertGroup/Silence/index.test.js
+++ b/ui/src/Components/Grid/AlertGrid/AlertGroup/Silence/index.test.js
@@ -23,7 +23,8 @@ const alertmanager = {
startsAt: "2000-01-01T10:00:00Z",
endsAt: "0001-01-01T00:00:00Z",
source: "localhost/prometheus",
- silencedBy: ["4cf5fd82-1edd-4169-99d1-ff8415e72179"]
+ silencedBy: ["4cf5fd82-1edd-4169-99d1-ff8415e72179"],
+ inhibitedBy: []
};
const silence = {
diff --git a/ui/src/Models/API.js b/ui/src/Models/API.js
index 3c295d48b..f0294b602 100644
--- a/ui/src/Models/API.js
+++ b/ui/src/Models/API.js
@@ -16,7 +16,8 @@ const APIAlertAlertmanagerState = PropTypes.exact({
startsAt: PropTypes.string.isRequired,
endsAt: PropTypes.string.isRequired,
source: PropTypes.string.isRequired,
- silencedBy: PropTypes.arrayOf(PropTypes.string).isRequired
+ silencedBy: PropTypes.arrayOf(PropTypes.string).isRequired,
+ inhibitedBy: PropTypes.arrayOf(PropTypes.string).isRequired
});
const APIAlert = PropTypes.exact({
diff --git a/ui/src/__mocks__/Alerts.js b/ui/src/__mocks__/Alerts.js
index 3bc685d0e..2d88a36ae 100644
--- a/ui/src/__mocks__/Alerts.js
+++ b/ui/src/__mocks__/Alerts.js
@@ -19,7 +19,8 @@ const MockAlert = (annotations, labels, state) => ({
startsAt: "2018-08-14T17:36:40.017867056Z",
endsAt: "0001-01-01T00:00:00Z",
source: "localhost/prometheus",
- silencedBy: []
+ silencedBy: [],
+ inhibitedBy: []
}
],
receiver: "by-name"