From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 544D81FF146 for ; Tue, 20 Jan 2026 16:28:35 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id C2A2413139; Tue, 20 Jan 2026 16:28:34 +0100 (CET) From: Daniel Kral To: pve-devel@lists.proxmox.com Date: Tue, 20 Jan 2026 16:27:32 +0100 Message-ID: <20260120152755.499037-1-d.kral@proxmox.com> X-Mailer: git-send-email 2.47.3 MIME-Version: 1.0 X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1768922824124 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.015 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [PATCH-SERIES container/ha-manager/manager/qemu-server v2 00/15] HA node affinity blockers (#1497) X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" Changes v1 -> v2 (Thanks @Fiona!): - rebase on master - fix initial node assignments in test case descriptions - make get_resource_motion_info(...) only read files once (introducing 3 additional patches) Tested changes with strict & non-strict HA node affinity rules and manual migrations (in the CLI & web interface) as well as failback set and cleared. This patch series implements node affinity rule migration blockers similar to the blockers introduced with resource affinity rules. The node affinity rule migraton blockers prevent users from migrating HA resources to nodes, which would make them migrate somewhere else immediately afterwards. This includes: - online nodes, which are not part of the strict node affinity rule's allowed node set at all, or - if the HA resource has failback set, online nodes, which are not in the currently highest priority group of the strict or non-strict node affinity rule. The first few patches are some overall cleanup for things the series touches + deduplicating the resource_motion_info logic and sharing it between the Manager and the public PVE::HA::Config::get_resource_motion_info(...), as well as exposing these in the relevant VM/LXC API handlers and web interface. ha-manager: Daniel Kral (12): ha: put source files on individual new lines d/pve-ha-manager.install: remove duplicate Config.pm config: group and sort use statements manager: group and sort use statements manager: report all reasons when resources are blocked from migration config, manager: factor out resource motion info logic tests: add test cases for migrating resources with node affinity rules handle strict node affinity rules in manual migrations config: improve variable names in read_and_check_resources_config config: factor out checked_resources_config helper handle node affinity rules with failback in manual migrations config: remove duplicate config reads in get_resource_motion_info debian/pve-ha-manager.install | 2 +- src/PVE/API2/HA/Resources.pm | 4 +- src/PVE/CLI/ha_manager.pm | 14 +-- src/PVE/HA/Config.pm | 88 ++++++++----------- src/PVE/HA/Helpers.pm | 63 +++++++++++++ src/PVE/HA/Makefile | 16 +++- src/PVE/HA/Manager.pm | 61 +++++++------ .../test-node-affinity-nonstrict1/log.expect | 16 +--- src/test/test-node-affinity-nonstrict7/README | 9 ++ .../test-node-affinity-nonstrict7/cmdlist | 9 ++ .../hardware_status | 5 ++ .../test-node-affinity-nonstrict7/log.expect | 65 ++++++++++++++ .../manager_status | 1 + .../rules_config | 7 ++ .../service_config | 4 + .../test-node-affinity-strict1/log.expect | 16 +--- .../test-node-affinity-strict2/log.expect | 16 +--- src/test/test-node-affinity-strict7/README | 9 ++ src/test/test-node-affinity-strict7/cmdlist | 9 ++ .../hardware_status | 5 ++ .../test-node-affinity-strict7/log.expect | 51 +++++++++++ .../test-node-affinity-strict7/manager_status | 1 + .../test-node-affinity-strict7/rules_config | 9 ++ .../test-node-affinity-strict7/service_config | 4 + src/test/test-recovery4/log.expect | 2 +- 25 files changed, 349 insertions(+), 137 deletions(-) create mode 100644 src/PVE/HA/Helpers.pm create mode 100644 src/test/test-node-affinity-nonstrict7/README create mode 100644 src/test/test-node-affinity-nonstrict7/cmdlist create mode 100644 src/test/test-node-affinity-nonstrict7/hardware_status create mode 100644 src/test/test-node-affinity-nonstrict7/log.expect create mode 100644 src/test/test-node-affinity-nonstrict7/manager_status create mode 100644 src/test/test-node-affinity-nonstrict7/rules_config create mode 100644 src/test/test-node-affinity-nonstrict7/service_config create mode 100644 src/test/test-node-affinity-strict7/README create mode 100644 src/test/test-node-affinity-strict7/cmdlist create mode 100644 src/test/test-node-affinity-strict7/hardware_status create mode 100644 src/test/test-node-affinity-strict7/log.expect create mode 100644 src/test/test-node-affinity-strict7/manager_status create mode 100644 src/test/test-node-affinity-strict7/rules_config create mode 100644 src/test/test-node-affinity-strict7/service_config qemu-server: Daniel Kral (1): api: migration preconditions: add node affinity as blocking cause src/PVE/API2/Qemu.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) container: Daniel Kral (1): api: migration preconditions: add node affinity as blocking cause src/PVE/API2/LXC.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) manager: Daniel Kral (1): ui: migrate: display precondition messages for ha node affinity www/manager6/window/Migrate.js | 10 ++++++++++ 1 file changed, 10 insertions(+) Summary over all repositories: 28 files changed, 361 insertions(+), 139 deletions(-) -- Generated by murpp 0.9.0 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel