From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate001.proxmox.com (gate001.proxmox.com [45.144.208.40]) by lore.proxmox.com (Postfix) with ESMTPS id C416C1FF0E0 for ; Fri, 24 Jul 2026 00:08:06 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id 857D921488; Fri, 24 Jul 2026 00:08:06 +0200 (CEST) From: Thomas Lamprecht To: pve-devel@lists.proxmox.com, Daniel Kral Subject: applied: [PATCH-SERIES docs/ha-manager/manager v3 00/16] Negative Node Affinity Rules Date: Fri, 24 Jul 2026 00:02:58 +0200 Message-ID: <178484416713.2171173.16396343676880035118.b4-ty@b4> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260722084824.108350-1-d.kral@proxmox.com> References: <20260722084824.108350-1-d.kral@proxmox.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1784844416827 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.082 Adjusted score from AWL reputation of From: address DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment (newer systems) KAM_LOTSOFHASH 0.25 Emails with lots of hash-like gibberish RCVD_IN_DNSWL_LOW -0.7 Sender listed at https://www.dnswl.org/, low trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: YOM5EPQOKDZSAZ57CQX54YHGM6G4OJPR X-Message-ID-Hash: YOM5EPQOKDZSAZ57CQX54YHGM6G4OJPR X-MailFrom: t.lamprecht@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: 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