add alerter blacklist

This commit is contained in:
mbecker20
2024-06-22 00:30:43 -07:00
parent b530af0eec
commit 6fe250244b
5 changed files with 31 additions and 6 deletions
+6 -1
View File
@@ -62,7 +62,12 @@ async fn send_alert(alerters: &[Alerter], alert: &Alert) {
return Ok(());
}
// Don't send if resource target not configured on the alerter
// Don't send if resource is in the blacklist
if alerter.config.except_resources.contains(&alert.target) {
return Ok(());
}
// Don't send if whitelist configured and target is not included
if !alerter.config.resources.is_empty()
&& !alerter.config.resources.contains(&alert.target)
{
+7 -1
View File
@@ -60,6 +60,11 @@ pub struct AlerterConfig {
#[serde(default)]
#[builder(default)]
pub resources: Vec<ResourceTarget>,
/// DON'T send alerts on these resources.
#[serde(default)]
#[builder(default)]
pub except_resources: Vec<ResourceTarget>,
}
impl AlerterConfig {
@@ -76,9 +81,10 @@ impl Default for AlerterConfig {
fn default() -> Self {
Self {
enabled: default_enabled(),
endpoint: Default::default(),
alert_types: Default::default(),
resources: Default::default(),
endpoint: Default::default(),
except_resources: Default::default(),
}
}
}
+2
View File
@@ -279,6 +279,8 @@ export interface AlerterConfig {
* If empty, will send alerts for all resources.
*/
resources?: ResourceTarget[];
/** DON'T send alerts on these resources. */
except_resources?: ResourceTarget[];
}
export type Alerter = Resource<AlerterConfig, undefined>;
@@ -53,6 +53,15 @@ export const AlerterConfig = ({ id }: { id: string }) => {
resources={resources!}
set={(resources) => set({ resources })}
disabled={disabled}
blacklist={false}
/>
),
except_resources: (resources, set) => (
<ResourcesConfig
resources={resources!}
set={(except_resources) => set({ except_resources })}
disabled={disabled}
blacklist={true}
/>
),
},
@@ -22,10 +22,12 @@ export const ResourcesConfig = ({
resources,
set,
disabled,
blacklist,
}: {
resources: Types.ResourceTarget[];
set: (resources: Types.ResourceTarget[]) => void;
disabled: boolean;
blacklist: boolean;
}) => {
const [open, setOpen] = useState(false);
const [search, setSearch] = useState("");
@@ -59,9 +61,7 @@ export const ResourcesConfig = ({
type: "Build",
id: build.id,
name: build.name.toLowerCase(),
enabled: resources.find(
(r) => r.type === "Build" && r.id === build.id
)
enabled: resources.find((r) => r.type === "Build" && r.id === build.id)
? true
: false,
})),
@@ -152,7 +152,10 @@ export const ResourcesConfig = ({
{
accessorKey: "enabled",
header: ({ column }) => (
<SortableHeader column={column} title="Enabled" />
<SortableHeader
column={column}
title={blacklist ? "Blacklist" : "Whitelist"}
/>
),
cell: ({ row }) => {
return (