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 [email protected] https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
