From: Thomas Lamprecht <t.lamprecht@proxmox.com>
To: pve-devel@lists.proxmox.com, Daniel Kral <d.kral@proxmox.com>
Subject: applied: [PATCH-SERIES docs/ha-manager/manager v3 00/16] Negative Node Affinity Rules
Date: Fri, 24 Jul 2026 00:02:58 +0200 [thread overview]
Message-ID: <178484416713.2171173.16396343676880035118.b4-ty@b4> (raw)
In-Reply-To: <20260722084824.108350-1-d.kral@proxmox.com>
On Wed, 22 Jul 2026 10:48:08 +0200, Daniel Kral wrote:
> v2: https://lore.proxmox.com/pve-devel/20260602100226.180071-1-d.kral@proxmox.com/
> RFC v1: https://lore.proxmox.com/pve-devel/20251219133643.295514-1-d.kral@proxmox.com/
>
> Thanks to @David for reviewing the patches in v2!
>
> changes since v2:
> - rebase on master
> - add ha patch to convert PVE::HA::HashTools to use v5.36
> - make set_difference() use signatures instead of prototypes
> - add ui patch to handle empty node priority list string
> - use store.{begin,end}Update() when setting node priorities
> - clean up NodePrioritySelector component
> - fix being able to send node priorities again (forgot adding the change
> listener on the proxmoxintegerfield in the priority column)
> - add link between config value and descriptive text for node affinity and
> resource affinity rules in the web interface
> - fix some typos in the doc patches
>
> [...]
Applied, thanks!
I added a few fixes on top of manager and ha-manager, would be nice if you
could recheck them. The HA manager ones:
- The "negative rule covers all cluster nodes" check compared node counts,
which only holds while the rule's nodes are a subset of the cluster. A rule
still naming a since-removed node inflates the count and gets dropped even
though its complement is non-empty. It now takes the actual complement via
set_difference(), like the inversion transform already does.
- The consistency check between negative resource affinity and node affinity
rules runs before the negative->positive inversion, so it read a negative
rule's nodes as the allowed set and rejected feasible setups (e.g. keep vm:1
and vm:2 apart, both off node1, on three nodes). It now uses the complement
there too; added a test for the feasible and the still-infeasible case.
Plus a trivial cleanup dropping a redundant node-set copy in the inversion.
The root cause seems to be that negative rules only get inverted after all
checks ran, so every inter-plugin check has to special-case them. Longer term
it'd be probably cleaner to invert right after the negative-specific checks and
before the general ones, so downstream only ever sees positive rules and this
whole class of "check saw the avoided set" issues can't happen. Needs a bit of
check/transform phase reordering though, better done on its own, so that's why
I took that in as is with the smaller targeted follow-up.
Manager were mostly smaller issues/nits, see git.
[docs]
[1/4] ha-manager: rules: use the correct article for terms starting with HA
commit: 98db2cb4e0a32ec46e7fd15dc7022a4d4945eb85
[2/4] ha-manager: rules: improve resource affinity rule short description
commit: 1fb475a0b63946938bd60bd44ee9257ad580311c
[3/4] ha-manager: rules: adapt rule configuration examples
commit: ad879aaf5aa81c152f3068d0315445d7cf5557cb
[4/4] ha-manager: rules: add negative node affinity rule descriptions
commit: 43f19f67ac5ed94a48bd18bd9fdead0291ff480d
[manager]
[1/8] ui: ha: node affinity: handle empty node priority list string
https://git.proxmox.com/?p=pve-manager.git;a=commitdiff;h=20a533af3da99773f08749f453d4e3f29a4ab45f
[2/8] ui: ha: node affinity: handle non-existent nodes
https://git.proxmox.com/?p=pve-manager.git;a=commitdiff;h=abd3f5480d9297590d2a48308f5a05ee1d17032e
[3/8] ui: ha: node affinity: do update node selection all at once
https://git.proxmox.com/?p=pve-manager.git;a=commitdiff;h=3f85d86ee89e269c5daea3e45da911cf72d6fadc
[4/8] ui: ha: node affinity: commit node priority store all at once
https://git.proxmox.com/?p=pve-manager.git;a=commitdiff;h=8b92486cf30a3f41c8513e5fd1246b6ab9c24aed
[5/8] ui: ha: node affinity: move node priority selector into separate component
https://git.proxmox.com/?p=pve-manager.git;a=commitdiff;h=e7f0eb5ce8d0e628e0bbb86c5fb9ac74f2d47f80
[6/8] ui: ha: resource affinity: add hint for affinity type config value
https://git.proxmox.com/?p=pve-manager.git;a=commitdiff;h=ffccb67a8dccc1fb4c005d14eacfdaee74511315
[7/8] ui: ha: node affinity: allow setting affinity for node affinity rules
https://git.proxmox.com/?p=pve-manager.git;a=commitdiff;h=d48652d1d3c5b681e1e72538001f9beab6fcca94
[8/8] ui: ha: node affinity: do not send default node affinity rule values
https://git.proxmox.com/?p=pve-manager.git;a=commitdiff;h=161d660efe08bfda6cec437e3f7515a39440319a
[ha-manager]
[1/4] rules: node affinity: add affinity property to node affinity rules
commit: 067bb6789e0bcce98c4398f0eda989c70767adbe
[2/4] rules: rename ambiguous argument nodes to cluster nodes
commit: 1aa71e315647c80898c7642ebed96a73a82ef1b1
[3/4] hash-tools: use v5.36 and signatures in module
commit: bf7c2205577265315422f4882898e8d1c37bed6a
[4/4] rules: node affinity: implement negative node affinity rules
commit: d9183b66a3e6a9fb07f863e03cb6acc44e8f3666
prev parent reply other threads:[~2026-07-23 22:08 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-22 8:48 [PATCH-SERIES docs/ha-manager/manager v3 00/16] Negative Node Affinity Rules Daniel Kral
2026-07-22 8:48 ` [PATCH ha-manager v3 01/16] rules: node affinity: add affinity property to node affinity rules Daniel Kral
2026-07-22 8:48 ` [PATCH ha-manager v3 02/16] rules: rename ambiguous argument nodes to cluster nodes Daniel Kral
2026-07-22 8:48 ` [PATCH ha-manager v3 03/16] hash-tools: use v5.36 and signatures in module Daniel Kral
2026-07-22 8:48 ` [PATCH ha-manager v3 04/16] rules: node affinity: implement negative node affinity rules Daniel Kral
2026-07-22 8:48 ` [PATCH manager v3 05/16] ui: ha: node affinity: handle empty node priority list string Daniel Kral
2026-07-22 8:48 ` [PATCH manager v3 06/16] ui: ha: node affinity: handle non-existent nodes Daniel Kral
2026-07-22 8:48 ` [PATCH manager v3 07/16] ui: ha: node affinity: do update node selection all at once Daniel Kral
2026-07-22 8:48 ` [PATCH manager v3 08/16] ui: ha: node affinity: commit node priority store " Daniel Kral
2026-07-22 8:48 ` [PATCH manager v3 09/16] ui: ha: node affinity: move node priority selector into separate component Daniel Kral
2026-07-22 8:48 ` [PATCH manager v3 10/16] ui: ha: resource affinity: add hint for affinity type config value Daniel Kral
2026-07-22 8:48 ` [PATCH manager v3 11/16] ui: ha: node affinity: allow setting affinity for node affinity rules Daniel Kral
2026-07-22 8:48 ` [PATCH manager v3 12/16] ui: ha: node affinity: do not send default node affinity rule values Daniel Kral
2026-07-22 8:48 ` [PATCH docs v3 13/16] ha-manager: rules: use the correct article for terms starting with HA Daniel Kral
2026-07-22 8:48 ` [PATCH docs v3 14/16] ha-manager: rules: improve resource affinity rule short description Daniel Kral
2026-07-22 8:48 ` [PATCH docs v3 15/16] ha-manager: rules: adapt rule configuration examples Daniel Kral
2026-07-22 8:48 ` [PATCH docs v3 16/16] ha-manager: rules: add negative node affinity rule descriptions Daniel Kral
2026-07-23 22:02 ` Thomas Lamprecht [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=178484416713.2171173.16396343676880035118.b4-ty@b4 \
--to=t.lamprecht@proxmox.com \
--cc=d.kral@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