public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
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]




      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
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal