Extend the VM precondition check to show whether a migration of a VM results in any additional migrations because of positive HA resource affinity rules or if any migrations cannot be completed because of any negative resource affinity rules.
In the latter case these migrations would be blocked when executing the migrations anyway by the HA Manager's CLI and it state machine, but this gives a better heads-up about this. However, additional migrations are not reported in advance by the CLI yet, so these warnings are crucial to warn users about the comigrated HA resources. Signed-off-by: Daniel Kral <d.k...@proxmox.com> --- www/manager6/window/Migrate.js | 44 ++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/www/manager6/window/Migrate.js b/www/manager6/window/Migrate.js index dff6af08..53349f8c 100644 --- a/www/manager6/window/Migrate.js +++ b/www/manager6/window/Migrate.js @@ -361,6 +361,50 @@ Ext.define('PVE.window.Migrate', { }); } + let blockingHAResources = disallowed['blocking-ha-resources'] ?? []; + if (blockingHAResources.length) { + migration.possible = false; + + for (const { sid, cause } of blockingHAResources) { + let reasonText; + if (cause === 'resource-affinity') { + reasonText = Ext.String.format( + gettext( + 'HA resource {0} with negative affinity to VM on selected target node', + ), + sid, + ); + } else { + reasonText = Ext.String.format( + gettext('blocking HA resource {0} on selected target node'), + sid, + ); + } + + migration.preconditions.push({ + severity: 'error', + text: Ext.String.format( + gettext('Cannot migrate VM, because {0}.'), + reasonText, + ), + }); + } + } + + let comigratedHAResources = migrateStats['comigrated-ha-resources']; + if (comigratedHAResources !== undefined) { + for (const sid of comigratedHAResources) { + const text = Ext.String.format( + gettext( + 'HA resource {0} with positive affinity to VM is also migrated to selected target node.', + ), + sid, + ); + + migration.preconditions.push({ text, severity: 'warning' }); + } + } + vm.set('migration', migration); }, checkLxcPreconditions: async function (resetMigrationPossible) { -- 2.39.5 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel