Am 31.07.25 um 17:58 schrieb Gabriel Goller:
> The checkbox wasn't displayed and following errors were on the console:
>
> failed to query /capabilites/qemu/migration on '': [object Object]
> pvemanagerlib.js:20401:25
> Uncaught (in promise) TypeError: comigratedHAResources is not iterable
> checkQemuPreconditions
> https://172.16.0.18:8006/pve2/js/pvemanagerlib.js?ver=9.0.0~17:20595
>
> Error is an object, so we need to print it in the next line, otherwise
> only [object Object] is shown. Check if comigratedHAResources is
> iterable, otherwise don't iterate over it.
>
> Signed-off-by: Gabriel Goller <[email protected]>
> ---
>
> Tested this quickly but no idea if it's correct. Maybe Daniel and
> Christoph could have a look at it.
>
> www/manager6/window/Migrate.js | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/www/manager6/window/Migrate.js b/www/manager6/window/Migrate.js
> index b5ecb9603cf1..c884fbddd1aa 100644
> --- a/www/manager6/window/Migrate.js
> +++ b/www/manager6/window/Migrate.js
> @@ -254,7 +254,8 @@ Ext.define('PVE.window.Migrate', {
> } catch (err) {
> // Only emit a warning in the case the target node does not
> (yet) support the
> // `capabilites/qemu/migration` endpoint and simply treat
> all features as unsupported.
> - console.warn(`failed to query /capabilites/qemu/migration on
> '${target}': ${err}`);
FWIW, could be also done by moving it out from the template string to a
separate param:
console.warn(`failed to query /capabilites/qemu/migration on '${target}':`,
err);
> + console.warn(`failed to query /capabilites/qemu/migration on
> '${target}':`);
> + console.warn(err);
> }
>
> me.fetchingNodeMigrateInfo = false;
> @@ -447,7 +448,7 @@ Ext.define('PVE.window.Migrate', {
> }
>
> let comigratedHAResources =
> migrateStats['comigrated-ha-resources'];
> - if (comigratedHAResources !== undefined) {
> + if (comigratedHAResources !== undefined && typeof
> comigratedHAResources[Symbol.iterator] === 'function') {
If it exists this is always an array per the schema though,
so the following might be enough:
if (typeof comigratedHAResources === 'array') {
Or use the ExtJS frameworks' Ext.isIterable() while under the hood it's a bit
more
heuristic than your check, it should cover all (for us) relevant cases
if (Ext.isIterable(comigratedHAResources)) {
Your variant might be fine as Proxmox.Utils method though, but rather overkill
for
now.
> for (const sid of comigratedHAResources) {
> const text = Ext.String.format(
> gettext(
_______________________________________________
pve-devel mailing list
[email protected]
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel