From: Daniel Kral <d.kral@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH-SERIES container/ha-manager/manager/qemu-server 00/12] HA node affinity blockers (#1497)
Date: Mon, 15 Dec 2025 16:52:10 +0100 [thread overview]
Message-ID: <20251215155334.476984-1-d.kral@proxmox.com> (raw)
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
next reply other threads:[~2025-12-15 15:54 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-15 15:52 Daniel Kral [this message]
2025-12-15 15:52 ` [pve-devel] [PATCH ha-manager 1/9] ha: put source files on individual new lines Daniel Kral
2025-12-15 15:52 ` [pve-devel] [PATCH ha-manager 2/9] d/pve-ha-manager.install: remove duplicate Config.pm Daniel Kral
2025-12-15 15:52 ` [pve-devel] [PATCH ha-manager 3/9] config: group and sort use statements Daniel Kral
2025-12-15 15:52 ` [pve-devel] [PATCH ha-manager 4/9] manager: " Daniel Kral
2025-12-15 15:52 ` [pve-devel] [PATCH ha-manager 5/9] manager: report all reasons when resources are blocked from migration Daniel Kral
2025-12-15 15:52 ` [pve-devel] [PATCH ha-manager 6/9] config, manager: factor out resource motion info logic Daniel Kral
2025-12-15 15:52 ` [pve-devel] [PATCH ha-manager 7/9] tests: add test cases for migrating resources with node affinity rules Daniel Kral
2025-12-15 15:52 ` [pve-devel] [PATCH ha-manager 8/9] handle strict node affinity rules in manual migrations Daniel Kral
2025-12-15 15:52 ` [pve-devel] [PATCH ha-manager 9/9] handle node affinity rules with failback " Daniel Kral
2025-12-15 15:52 ` [pve-devel] [PATCH qemu-server 1/1] api: migration preconditions: add node affinity as blocking cause Daniel Kral
2025-12-15 15:52 ` [pve-devel] [PATCH container " Daniel Kral
2025-12-15 15:52 ` [pve-devel] [PATCH manager 1/1] ui: migrate: display precondition messages for ha node affinity Daniel Kral
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=20251215155334.476984-1-d.kral@proxmox.com \
--to=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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.