From: "Michael Köppl" <m.koeppl@proxmox.com>
To: "Lukas Wagner" <l.wagner@proxmox.com>,
<pbs-devel@lists.proxmox.com>, <pve-devel@lists.proxmox.com>
Subject: Re: [PATCH many v4 00/39] notifications: add nested match expressions
Date: Wed, 21 Oct 2026 16:40:19 +0200 [thread overview]
Message-ID: <DMALEK9TI0IV.1A4YP9F3190PZ@proxmox.com> (raw)
In-Reply-To: <20261012131413.314088-1-l.wagner@proxmox.com>
Thanks for your hard work on this! Tested this version of the series as
well.
Upgrade path:
- Create multiple legacy matchers to check that the conversion works as
expected:
- all mode with match field and match severity
- any mode with inverted match
- matching multiple fields with exact or regex
- "at least one does not match" with calendar and severity
- no clauses but inverted (always matching)
- calendar match with "mon8-12" (no space).
- The above were all converted as expected. The only noteworthy
conversion is the one with the "mon8-12" calendar match. The UI when
does not display any selected days and saving is blocked because
"Calendar rules must match at least one day."
Partial upgrade, 1 node not upgraded,
- Attempted to edit an existing legacy matcher from an upgraded node.
Was rejected as expected.
- Attempted to edit a target with and without the default-matcher
present in the config. Noticed that when the legacy default-matcher is
not written to the config yet, editing the notification target is not
possible, failing with "At least one cluster node does not support
matcher expressions". Probably because the implementation wants to
write the new default-matcher with the expression to the config and
performing the version check before. If the legacy default-matcher is
already present, editing the target works.
- On any not-yet-upgraded node, editing targets and matchers continues
to work.
Fully upgraded cluster, UI and API tests:
- Through the API/pvesh, adding expressions with both exact matches and
regex is possible, resulting in an expression containing only
whichever came first in the expression being stored. Noted in on the
patch that implements this behavior. Not a blocker IMO, but wanted to
point it out nonetheless.
- Through the API/pvesh, field names that would previously have been
rejected by the legacy matchers are now accepted (e.g. spaces,
umlauts, etc.). Added a comment to the individual patch, but could
also be a follow-up IMO.
- Played around with a match expression with variations of nested
not(not(...)) and compared the resulting tree in the UI to logically
match.
- Edited the tree in the UI so see if children of expression nodes were
moved as expected, if inversions are applied correctly, and if nodes
cannot be dropped to the root level.
- Changed "All sub-rules match" in the UI tree to "Match Severity". This
makes all the children disappear without any confirmation dialog. The
entire editing process can of course be aborted to avoid this, but
considering the deletion of the "All sub-rules match" requires
confirmation, I think this case would also benefit from such a
confirmation. Can easily be a follow-up, though. This is also true
when changing the root node.
- Triggered various notifications, checking that the expected matchers
matched.
Other than what's noted above on the individual scenarios, the new match
expressions as well as upgrading from the legacy ones worked as expected
and IMO the UI is really intuitive and solid regarding what it allows.
Really nice work!
With my comments addressed, consider this:
Reviewed-by: Michael Köppl <m.koeppl@proxmox.com>
Tested-by: Michael Köppl <m.koeppl@proxmox.com>
On Mon Oct 12, 2026 at 3:13 PM CEST, Lukas Wagner wrote:
> NOTE: The last patch for pve-manager needs to be updated depending on
> which version of pve-manager includes these series! (see patch note)
>
> NOTE: I have a couple of other patches planned for the notification stack (**);
> so I guess it would make sense wait a bit before applying this -- just to avoid
> too many version bumps and too much maintainer churn. I have a patch series
> already in the works that builds on top of this one, so I would prefer to
> perform any non-trivial changes to this feature as follow-ups; rebasing the new
[snip]
prev parent reply other threads:[~2026-10-21 14:40 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-12 13:13 [PATCH many v4 00/39] notifications: add nested match expressions Lukas Wagner
2026-10-12 13:13 ` [PATCH proxmox v4 01/39] add new proxmox-match-expression crate Lukas Wagner
2026-10-12 13:13 ` [PATCH proxmox v4 02/39] notify: log which matchers matched on a notification Lukas Wagner
2026-10-12 13:13 ` [PATCH proxmox v4 03/39] notify: promote matcher to dir-style module Lukas Wagner
2026-10-12 13:13 ` [PATCH proxmox v4 04/39] notify: fix doc comment Lukas Wagner
2026-10-12 13:13 ` [PATCH proxmox v4 05/39] notify: matcher: break out severity matcher into submodule Lukas Wagner
2026-10-12 13:13 ` [PATCH proxmox v4 06/39] notify: matcher: break out field " Lukas Wagner
2026-10-12 13:13 ` [PATCH proxmox v4 07/39] notify: matcher: break out calendar " Lukas Wagner
2026-10-12 13:13 ` [PATCH proxmox v4 08/39] notify: matcher: calendar: add basic unit test Lukas Wagner
2026-10-12 13:13 ` [PATCH proxmox v4 09/39] notify: matcher: add InlineSeverityMatcher Lukas Wagner
2026-10-12 13:13 ` [PATCH proxmox v4 10/39] notify: matcher: add InlineFieldMatcher Lukas Wagner
2026-10-12 13:13 ` [PATCH proxmox v4 11/39] notify: matcher: add InlineCalendarMatcher Lukas Wagner
2026-10-12 13:13 ` [PATCH proxmox v4 12/39] notify: matcher: add expression support Lukas Wagner
2026-10-21 14:39 ` Michael Köppl
2026-10-12 13:13 ` [PATCH proxmox v4 13/39] notify: api: support new expression parameter Lukas Wagner
2026-10-12 13:13 ` [PATCH proxmox v4 14/39] notify: api: add `get_matcher_as_expression` Lukas Wagner
2026-10-12 13:13 ` [PATCH proxmox v4 15/39] notify: migrate PBS's and PVE's default matcher to expression syntax Lukas Wagner
2026-10-21 14:39 ` Michael Köppl
2026-10-12 13:13 ` [PATCH proxmox v4 16/39] notify: move legacy matcher keys behind feature flag Lukas Wagner
2026-10-12 13:13 ` [PATCH proxmox v4 17/39] notify: matcher: don't allow empty field/severity matchers Lukas Wagner
2026-10-21 14:39 ` Michael Köppl
2026-10-12 13:13 ` [PATCH proxmox v4 18/39] notify: matcher: re-serialize expression on create/update Lukas Wagner
2026-10-12 13:13 ` [PATCH proxmox-widget-toolkit v4 19/39] notifications: increase matcher window width Lukas Wagner
2026-10-12 13:13 ` [PATCH proxmox-widget-toolkit v4 20/39] notifications: matcher: add support for match expressions Lukas Wagner
2026-10-12 13:13 ` [PATCH proxmox-widget-toolkit v4 21/39] notifications: matcher: add better calendar editor Lukas Wagner
2026-10-12 13:13 ` [PATCH proxmox-widget-toolkit v4 22/39] notifications: matcher: consistently use title case for UI elements Lukas Wagner
2026-10-12 13:13 ` [PATCH proxmox-backup v4 23/39] notification: opt into 'legacy-matchers' feature in proxmox-notify Lukas Wagner
2026-10-12 13:13 ` [PATCH proxmox-backup v4 24/39] api: notification: add 'migrate-to-expression' parameter to get_matcher Lukas Wagner
2026-10-12 13:13 ` [PATCH proxmox-backup v4 25/39] ui: notification: enable new matcher UI Lukas Wagner
2026-10-12 13:14 ` [PATCH proxmox-perl-rs v4 26/39] notify: move proxmox-notify bindings from common to pve-rs Lukas Wagner
2026-10-12 13:14 ` [PATCH proxmox-perl-rs v4 27/39] notify: matcher: pass matcher config / updater directly Lukas Wagner
2026-10-12 13:14 ` [PATCH proxmox-perl-rs v4 28/39] notify: opt into 'legacy-matchers' feature in proxmox-notify Lukas Wagner
2026-10-12 13:14 ` [PATCH proxmox-perl-rs v4 29/39] notify: add 'migrate_to_expression' parameter for get_matcher Lukas Wagner
2026-10-12 13:14 ` [PATCH pve-cluster v4 30/39] notify: adapt to changed module prefix for PVE::RS::Notify Lukas Wagner
2026-10-12 13:14 ` [PATCH pve-cluster v4 31/39] cluster: move pvecfg node version helpers from qemu-server Lukas Wagner
2026-10-12 13:14 ` [PATCH common v4 32/39] tools: move version_cmp() helper " Lukas Wagner
2026-10-12 13:14 ` [PATCH manager v4 33/39] vzdump: adapt to changed module prefix for PVE::RS::Notify Lukas Wagner
2026-10-12 13:14 ` [PATCH manager v4 34/39] api: notification: pass config/updater directly to rust bindings Lukas Wagner
2026-10-12 13:14 ` [PATCH manager v4 35/39] api: notification: get_matcher: add 'migrate-to-expression' parameter Lukas Wagner
2026-10-12 13:14 ` [PATCH manager v4 36/39] api: notification: add 'expression' to matcher parameter schema Lukas Wagner
2026-10-12 13:14 ` [PATCH manager v4 37/39] ui: notification: enable new matcher UI Lukas Wagner
2026-10-12 13:14 ` [PATCH manager v4 38/39] api: notification: reject matchers with expression if not supported by all nodes Lukas Wagner
2026-10-12 13:14 ` [PATCH proxmox-mail-forward v4 39/39] cargo: opt into legacy-matchers feature Lukas Wagner
2026-10-21 14:40 ` Michael Köppl [this message]
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=DMALEK9TI0IV.1A4YP9F3190PZ@proxmox.com \
--to=m.koeppl@proxmox.com \
--cc=l.wagner@proxmox.com \
--cc=pbs-devel@lists.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