From 3df4d27efc626b8b4fcf160cc0d5ccae67eeccf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Mierzwa?= Date: Tue, 28 Jan 2020 17:39:31 +0000 Subject: [PATCH] feat(ui): disable silence actions for read-only alertmanagers --- ui/src/Components/AlertAck/index.js | 2 +- ui/src/Components/AlertAck/index.test.js | 6 ++ .../ManagedSilence/DeleteSilence.js | 8 ++- .../ManagedSilence/DeleteSilence.test.js | 1 + .../ManagedSilence/SilenceComment.test.js | 3 + .../ManagedSilence/SilenceDetails.js | 7 +- .../ManagedSilence/SilenceDetails.test.js | 1 + ui/src/Components/ManagedSilence/index.js | 1 + .../ManagedSilence/index.stories.js | 39 ++++++++++ .../Components/ManagedSilence/index.test.js | 2 + .../SilenceModal/AlertManagerInput/index.js | 6 +- .../AlertManagerInput/index.test.js | 14 ++++ .../SilenceModal/Browser/index.test.js | 1 + .../SilenceModal/SilenceModalContent.js | 29 ++++++-- .../SilenceModal/SilenceModalContent.test.js | 26 +++++++ .../SilenceSubmit/SilenceSubmitProgress.js | 9 ++- .../SilenceSubmitProgress.test.js | 68 ++++++++++++++++++ .../Components/SilenceModal/index.stories.js | 47 ++++++++++++ ui/src/Models/API.js | 1 + ui/src/Stores/AlertStore.js | 28 +++++++- ui/src/Stores/AlertStore.test.js | 72 +++++++++++++++++++ ui/src/__mocks__/Alerts.js | 1 + 22 files changed, 357 insertions(+), 15 deletions(-) diff --git a/ui/src/Components/AlertAck/index.js b/ui/src/Components/AlertAck/index.js index 17a1fbd82..4f6839bc5 100644 --- a/ui/src/Components/AlertAck/index.js +++ b/ui/src/Components/AlertAck/index.js @@ -192,7 +192,7 @@ const AlertAck = observer( .filter(([amName, alertCount]) => alertCount > 0) .map(([amName, _]) => amName); const clusters = Object.entries( - alertStore.data.upstreams.clusters + alertStore.data.clustersWithoutReadOnly ).filter(([clusterName, clusterMembers]) => alertmanagers.some(m => clusterMembers.includes(m)) ); diff --git a/ui/src/Components/AlertAck/index.test.js b/ui/src/Components/AlertAck/index.test.js index 9512f7dd8..98b33af45 100644 --- a/ui/src/Components/AlertAck/index.test.js +++ b/ui/src/Components/AlertAck/index.test.js @@ -35,6 +35,7 @@ beforeEach(() => { name: "default", uri: "http://localhost", publicURI: "http://example.com", + readonly: false, headers: { foo: "bar" }, error: "", version: "0.15.0", @@ -287,6 +288,7 @@ describe("", () => { name: "default", uri: "http://am1.example.com", publicURI: "http://am1.example.com", + readonly: false, headers: {}, error: "", version: "0.15.0", @@ -297,6 +299,7 @@ describe("", () => { name: "fallback", uri: "http://am2.example.com", publicURI: "http://am2.example.com", + readonly: false, headers: {}, error: "", version: "0.15.0", @@ -334,6 +337,7 @@ describe("", () => { name: "default", uri: "http://am1.example.com", publicURI: "http://am1.example.com", + readonly: false, headers: {}, error: "", version: "0.16.2", @@ -344,6 +348,7 @@ describe("", () => { name: "fallback", uri: "http://am2.example.com", publicURI: "http://am2.example.com", + readonly: false, headers: {}, error: "", version: "0.16.2", @@ -381,6 +386,7 @@ describe("", () => { name: "default", uri: "http://am1.example.com", publicURI: "http://am1.example.com", + readonly: false, headers: {}, error: "", version: "0.15.0", diff --git a/ui/src/Components/ManagedSilence/DeleteSilence.js b/ui/src/Components/ManagedSilence/DeleteSilence.js index 20589f1db..ecac4df05 100644 --- a/ui/src/Components/ManagedSilence/DeleteSilence.js +++ b/ui/src/Components/ManagedSilence/DeleteSilence.js @@ -113,6 +113,7 @@ const DeleteSilenceModalContent = observer( getAlertmanager = () => this.props.alertStore.data.upstreams.instances .filter(u => u.cluster === this.props.cluster) + .filter(u => u.readonly === false) .slice(0, 1)[0]; parseAlertmanagerResponse = response => { @@ -296,11 +297,16 @@ const DeleteSilence = observer( onModalExit } = this.props; + const members = alertStore.data.getClusterAlertmanagersWithoutReadOnly( + cluster + ); + return (