From: "Lukas Wagner" <l.wagner@proxmox.com>
To: "Michael Köppl" <m.koeppl@proxmox.com>,
"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: Thu, 22 Oct 2026 11:51:55 +0200 [thread overview]
Message-ID: <DMB9WAHJ7SA5.1XTS0GXGOMHVF@proxmox.com> (raw)
In-Reply-To: <DMALEK9TI0IV.1A4YP9F3190PZ@proxmox.com>
On Wed Oct 21, 2026 at 4:40 PM CEST, Michael Köppl wrote:
> Thanks for your hard work on this! Tested this version of the series as
> well.
Huge thanks for the in-depth testing and review, this is much
appreciated.
>
> 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."
Thanks, fixed the regex to properly parse the range if the space is
missing. Will be included in v5.
'Unfortunately', the time range parser is extremely lenient, so it is
really tricky to get the parser 100% correct.
>
> 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.
Yes, I had to completely block all editing if any node is still
outdated, since any edit could bring in the default matcher which
contains an expression. An annoying side effect of how the built-ins are
implemented.
> - 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.
I tried implementing such a confirmation, but it turned out to be much
trickier than the already existing 'delete' case; so I left it for now.
I will revisit it if I find the time and/or there are bug reports about
this behavior.
> - 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>
>
Will include these in v5, thanks again!
next prev parent reply other threads:[~2026-10-22 9:52 UTC|newest]
Thread overview: 50+ 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-22 9:27 ` Lukas Wagner
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-22 7:35 ` Lukas Wagner
2026-10-22 8:19 ` 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-22 7:45 ` Lukas Wagner
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 ` [PATCH many v4 00/39] notifications: add nested match expressions Michael Köppl
2026-10-22 9:51 ` Lukas Wagner [this message]
2026-10-22 12:24 ` superseded: " 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=DMB9WAHJ7SA5.1XTS0GXGOMHVF@proxmox.com \
--to=l.wagner@proxmox.com \
--cc=m.koeppl@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