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 F300B1FF178 for ; Mon, 15 Dec 2025 16:54:06 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id D000E11436; Mon, 15 Dec 2025 16:54:15 +0100 (CET) From: Daniel Kral To: pve-devel@lists.proxmox.com Date: Mon, 15 Dec 2025 16:52:10 +0100 Message-ID: <20251215155334.476984-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: 1765814013577 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_RPBL_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 00/12] 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" 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 - online nodes, which are not in the currently highest priority group of the strict or non-strict node affinity rule and the HA resource has failback set. 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. Since the 'cause' property in 'blocking-resources' is an enum, qemu-server and pve-container need version bumps for pve-ha-manager as else the API handlers would result in a schema result verification error. If we can spare some coupling between those, we could generate the schema for these API handlers from the pve-ha-manager package, so future versioned bumps are not needed anymore, but I was a bit hesitant to implement that in the v1. ha-manager: Daniel Kral (9): 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 handle node affinity rules with failback in manual migrations 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 | 47 +++++--------- 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, 327 insertions(+), 118 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, 339 insertions(+), 120 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