diff --git a/ui/src/Components/SilenceModal/SilenceForm.js b/ui/src/Components/SilenceModal/SilenceForm.js
index ff563144a..c05e9258e 100644
--- a/ui/src/Components/SilenceModal/SilenceForm.js
+++ b/ui/src/Components/SilenceModal/SilenceForm.js
@@ -48,16 +48,28 @@ const SilenceForm = ({
silenceFormStore.data.verifyStarEnd();
}
- if (silenceFormStore.data.matchers.length === 0) {
+ if (
+ silenceFormStore.data.matchers.filter(
+ (m) => m.name !== "" || m.values.length
+ ).length === 0
+ ) {
if (alertStore.filters.values.length > 0) {
alertStore.filters.values
.filter(
- (f) => f.name[0] !== "@" && f.matcher === QueryOperators.Equal
+ (f) =>
+ f.name[0] !== "@" &&
+ (f.matcher === QueryOperators.Equal ||
+ f.matcher === QueryOperators.Regex)
)
.forEach((f) => {
const matcher = NewEmptyMatcher();
matcher.name = f.name;
- matcher.values = [MatcherValueToObject(f.value)];
+ if (f.matcher === QueryOperators.Regex) {
+ matcher.values = [MatcherValueToObject(`.*${f.value}.*`)];
+ matcher.isRegex = f.matcher === QueryOperators.Regex;
+ } else {
+ matcher.values = [MatcherValueToObject(f.value)];
+ }
silenceFormStore.data.matchers.push(matcher);
});
}
diff --git a/ui/src/Components/SilenceModal/SilenceForm.test.js b/ui/src/Components/SilenceModal/SilenceForm.test.js
index 112478a7a..f9f89297c 100644
--- a/ui/src/Components/SilenceModal/SilenceForm.test.js
+++ b/ui/src/Components/SilenceModal/SilenceForm.test.js
@@ -87,8 +87,8 @@ describe(" matchers", () => {
];
const tree = MountedSilenceForm();
const matchers = tree.find("SilenceMatch");
- expect(matchers).toHaveLength(3);
- expect(silenceFormStore.data.matchers).toHaveLength(3);
+ expect(matchers).toHaveLength(6);
+ expect(silenceFormStore.data.matchers).toHaveLength(6);
expect(silenceFormStore.data.matchers[0]).toMatchObject({
isRegex: false,
name: "alertname",
@@ -100,6 +100,16 @@ describe(" matchers", () => {
],
});
expect(silenceFormStore.data.matchers[1]).toMatchObject({
+ isRegex: true,
+ name: "alertname",
+ values: [
+ {
+ label: ".*alertnameRegex.*",
+ value: ".*alertnameRegex.*",
+ },
+ ],
+ });
+ expect(silenceFormStore.data.matchers[2]).toMatchObject({
isRegex: false,
name: "cluster",
values: [
@@ -109,7 +119,17 @@ describe(" matchers", () => {
},
],
});
- expect(silenceFormStore.data.matchers[2]).toMatchObject({
+ expect(silenceFormStore.data.matchers[3]).toMatchObject({
+ isRegex: true,
+ name: "cluster",
+ values: [
+ {
+ label: ".*clusterRegex.*",
+ value: ".*clusterRegex.*",
+ },
+ ],
+ });
+ expect(silenceFormStore.data.matchers[4]).toMatchObject({
isRegex: false,
name: "foo",
values: [
@@ -119,6 +139,16 @@ describe(" matchers", () => {
},
],
});
+ expect(silenceFormStore.data.matchers[5]).toMatchObject({
+ isRegex: true,
+ name: "foo",
+ values: [
+ {
+ label: ".*fooRegex.*",
+ value: ".*fooRegex.*",
+ },
+ ],
+ });
});
it("clicking 'Add more' button adds another matcher", () => {