From: Lukas Wagner <l.wagner@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH many 00/27] overhaul notification system, use matchers instead of filters
Date: Tue, 7 Nov 2023 11:18:00 +0100 [thread overview]
Message-ID: <20231107101827.340100-1-l.wagner@proxmox.com> (raw)
This series replaces notification filters and groups with notification
matchers. Instead of having a per-notification event target/policy
setting (at the moment stored in datacenter.cfg and jobs.cfg), this
shifts the routing part into the matcher completely.
Config example, I think this demonstrates the principle quite nicely:
sendmail: default-target
mailto-user root@pam
matcher: fencing-for-node
mode all # all match-directives have to match, default
match-field exact:hostname=pve.example.com
match-field exact:type=fencing
target default-target
--> Send all fencing notifications for a certain host to a certain
target.
Right now, there are three different match-directives:
- match-field: exact/regex match for notification metadata fields
- match-severity: match notification severities (info,notice,warning,error)
- match-calender: match notification timestamp
example: match-calendar mon..fri 8-12
The old target/policy based notification was already in the pvetest repository.
Thus we take special care that there is no breakage when the notification
system encounters old settings/configuration keys. It will clean them
out/migrate them if possible.
These changes also modify pve-manager's postinst hook. It will now
create a default config if /etc/pve/notifications.cfg does not exist yet.
What I tested:
- Made sure existing notifications continue to work
(replication/fencing in a cluster setup, backups, system updates)
- Made sure that the 'legacy' mailto parameter for backups also works
- Tested the new UI for notification matchers
- Tested postinst hook for pve-manager
- Tested whether old config keys for filters and groups break anything
@TESTERS:
I have built packages for these changes to ease testing, they are
on nasi: packages/notifications
Followup work in the near future:
- Adapt documentation, this will follow asap
- UI code for notification matcher config is a bit messy, I will
send a cleanup-patch - main focus right now was to get it working
- Mark 'mailto' in backup jobs as deprecated in UI - while also
migrating automatically to the new system (create an endpoint/matcher
when creating/updating a backup job)
proxmox:
Lukas Wagner (6):
notify: introduce Error::Generic
notify: factor out notification content into its own type
notify: replace filters and groups with matcher-based system
notify: add calendar matcher
notify: matcher: introduce common trait for match directives
notify: let a matcher always match if it has no matching directives
proxmox-notify/Cargo.toml | 2 +
proxmox-notify/examples/render.rs | 4 +-
proxmox-notify/src/api/common.rs | 6 +-
proxmox-notify/src/api/filter.rs | 231 -----------
proxmox-notify/src/api/gotify.rs | 16 -
proxmox-notify/src/api/group.rs | 259 ------------
proxmox-notify/src/api/matcher.rs | 260 ++++++++++++
proxmox-notify/src/api/mod.rs | 115 +-----
proxmox-notify/src/api/sendmail.rs | 15 -
proxmox-notify/src/config.rs | 34 +-
proxmox-notify/src/endpoints/gotify.rs | 41 +-
proxmox-notify/src/endpoints/sendmail.rs | 76 ++--
proxmox-notify/src/filter.rs | 193 +--------
proxmox-notify/src/group.rs | 40 +-
proxmox-notify/src/lib.rs | 387 ++++++++----------
proxmox-notify/src/matcher.rs | 484 +++++++++++++++++++++++
proxmox-notify/src/renderer/mod.rs | 15 +-
proxmox-notify/src/schema.rs | 11 +-
18 files changed, 1046 insertions(+), 1143 deletions(-)
delete mode 100644 proxmox-notify/src/api/filter.rs
delete mode 100644 proxmox-notify/src/api/group.rs
create mode 100644 proxmox-notify/src/api/matcher.rs
create mode 100644 proxmox-notify/src/matcher.rs
proxmox-perl-rs:
Lukas Wagner (1):
notify: adapt to new matcher-based notification routing
common/src/notify.rs | 167 +++++++++++++------------------------------
1 file changed, 50 insertions(+), 117 deletions(-)
pve-cluster:
Lukas Wagner (1):
notify: adapt to matcher based notification system
src/PVE/Notify.pm | 101 +++++++++++++++++++++-------------------------
1 file changed, 47 insertions(+), 54 deletions(-)
pve-guest-common:
Lukas Wagner (1):
vzdump: deprecate mailto/mailnotification/notification-{target,policy}
src/PVE/VZDump/Common.pm | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
pve-ha-manager:
Lukas Wagner (1):
env: switch to matcher-based notification system
src/PVE/HA/Env/PVE2.pm | 10 ++--------
src/PVE/HA/NodeStatus.pm | 11 +++++++++--
2 files changed, 11 insertions(+), 10 deletions(-)
pve-manager:
Lukas Wagner (10):
api: notification: remove notification groups
api: notification: add new matcher-based notification API
ui: dc: remove unneeded notification events panel
vzdump: adapt to new matcher based notification system
api: apt: adapt to matcher-based notifications
api: replication: adapt to matcher-based notification system
debian: postinst: create notifications.cfg if it does not exist
test: fix vzdump notification test
ui: vzdump: remove left-overs from target/policy based notifications
ui: dc: config: show notification panel again
PVE/API2/APT.pm | 27 +-
PVE/API2/Cluster/Notifications.pm | 462 ++++--------------
PVE/API2/Replication.pm | 25 +-
PVE/API2/VZDump.pm | 8 +-
PVE/VZDump.pm | 40 +-
debian/postinst | 28 ++
test/vzdump_notification_test.pl | 6 +-
www/manager6/Makefile | 4 -
www/manager6/dc/Backup.js | 81 +--
www/manager6/dc/Config.js | 28 +-
www/manager6/dc/NotificationEvents.js | 276 -----------
.../form/NotificationPolicySelector.js | 1 -
www/manager6/window/Backup.js | 35 +-
13 files changed, 186 insertions(+), 835 deletions(-)
delete mode 100644 www/manager6/dc/NotificationEvents.js
proxmox-widget-toolkit:
Lukas Wagner (7):
notification ui: add target selector for matcher
notification ui: remove filter setting for targets
notification ui: remove notification groups
notification ui: rename filter to matcher
notification: matcher: add UI for matcher editing
notification ui: unprotected mailto-root target
noficiation: matcher edit: make 'field' an editable combobox
src/Makefile | 4 +-
src/Schema.js | 5 -
src/data/model/NotificationConfig.js | 2 +-
src/form/NotificationFilterSelector.js | 58 --
src/panel/GotifyEditPanel.js | 9 -
src/panel/NotificationConfigView.js | 36 +-
src/panel/NotificationGroupEditPanel.js | 183 ----
src/panel/SendmailEditPanel.js | 9 -
src/window/NotificationFilterEdit.js | 109 ---
src/window/NotificationMatcherEdit.js | 1036 +++++++++++++++++++++++
10 files changed, 1051 insertions(+), 400 deletions(-)
delete mode 100644 src/form/NotificationFilterSelector.js
delete mode 100644 src/panel/NotificationGroupEditPanel.js
delete mode 100644 src/window/NotificationFilterEdit.js
create mode 100644 src/window/NotificationMatcherEdit.js
Summary over all repositories:
46 files changed, 2398 insertions(+), 2568 deletions(-)
--
murpp v0.4.0
next reply other threads:[~2023-11-07 10:19 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-07 10:18 Lukas Wagner [this message]
2023-11-07 10:18 ` [pve-devel] [PATCH proxmox 01/27] notify: introduce Error::Generic Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH proxmox 02/27] notify: factor out notification content into its own type Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH proxmox 03/27] notify: replace filters and groups with matcher-based system Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH proxmox 04/27] notify: add calendar matcher Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH proxmox 05/27] notify: matcher: introduce common trait for match directives Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH proxmox 06/27] notify: let a matcher always match if it has no matching directives Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH proxmox-perl-rs 07/27] notify: adapt to new matcher-based notification routing Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH pve-cluster 08/27] notify: adapt to matcher based notification system Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH pve-guest-common 09/27] vzdump: deprecate mailto/mailnotification/notification-{target, policy} Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH pve-ha-manager 10/27] env: switch to matcher-based notification system Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH pve-manager 11/27] api: notification: remove notification groups Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH pve-manager 12/27] api: notification: add new matcher-based notification API Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH pve-manager 13/27] ui: dc: remove unneeded notification events panel Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH pve-manager 14/27] vzdump: adapt to new matcher based notification system Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH pve-manager 15/27] api: apt: adapt to matcher-based notifications Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH pve-manager 16/27] api: replication: adapt to matcher-based notification system Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH pve-manager 17/27] debian: postinst: create notifications.cfg if it does not exist Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH pve-manager 18/27] test: fix vzdump notification test Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH pve-manager 19/27] ui: vzdump: remove left-overs from target/policy based notifications Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH pve-manager 20/27] ui: dc: config: show notification panel again Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH proxmox-widget-toolkit 21/27] notification ui: add target selector for matcher Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH proxmox-widget-toolkit 22/27] notification ui: remove filter setting for targets Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH proxmox-widget-toolkit 23/27] notification ui: remove notification groups Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH proxmox-widget-toolkit 24/27] notification ui: rename filter to matcher Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH proxmox-widget-toolkit 25/27] notification: matcher: add UI for matcher editing Lukas Wagner
2023-11-13 15:13 ` Dominik Csapak
2023-11-07 10:18 ` [pve-devel] [PATCH proxmox-widget-toolkit 26/27] notification ui: unprotected mailto-root target Lukas Wagner
2023-11-07 10:18 ` [pve-devel] [PATCH proxmox-widget-toolkit 27/27] noficiation: matcher edit: make 'field' an editable combobox Lukas Wagner
2023-11-13 14:34 ` [pve-devel] [PATCH many 00/27] overhaul notification system, use matchers instead of filters Dominik Csapak
2023-11-13 14:54 ` Thomas Lamprecht
2023-11-13 14:58 ` Lukas Wagner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231107101827.340100-1-l.wagner@proxmox.com \
--to=l.wagner@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox