public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Fiona Ebner <f.ebner@proxmox.com>
To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>,
	Dominik Csapak <d.csapak@proxmox.com>
Subject: Re: [pve-devel] [PATCH manager 03/10] ui: qemu: add architecture field in wizard and hardware view
Date: Wed, 28 Jan 2026 17:32:08 +0100	[thread overview]
Message-ID: <f17b06ec-54ae-41b9-950b-41899510d9ed@proxmox.com> (raw)
In-Reply-To: <20260128123035.2576774-4-d.csapak@proxmox.com>

Am 28.01.26 um 1:30 PM schrieb Dominik Csapak:
> adds a new architecture field to the wizard to select the target
> architecture for the virtual machine. When the selected architecture
> does not match the host architecture of the selected node, disable kvm.
> 
> Also show the architecture in the hardware view when it does not match
> the host architecture (and add it automatically to the editors so we can
> access it there).
> 
> Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
> ---
>  www/manager6/Utils.js             | 11 +++++++++++
>  www/manager6/qemu/CreateWizard.js | 26 ++++++++++++++++++++++++++
>  www/manager6/qemu/HardwareView.js | 16 ++++++++++++++++
>  3 files changed, 53 insertions(+)
> 
> diff --git a/www/manager6/Utils.js b/www/manager6/Utils.js
> index 2992f655..d8b212bc 100644
> --- a/www/manager6/Utils.js
> +++ b/www/manager6/Utils.js
> @@ -2067,6 +2067,17 @@ Ext.define('PVE.Utils', {
>              );
>              return Ext.htmlEncode(description);
>          },
> +
> +        // returns if the given architecture is the native host architecture of the given nodename
> +        isHostArchitecture: function (architecture, nodename) {
> +            if (architecture === '__default__') {
> +                architecture = undefined;
> +            }
> +
> +            let hostArchitecture = PVE.data.ResourceStore.getNodeById(nodename)?.data.architecture;
> +
> +            return (architecture ?? 'x86_64') === (hostArchitecture ?? 'x86_64');
> +        },
>      },
>  
>      singleton: true,
> diff --git a/www/manager6/qemu/CreateWizard.js b/www/manager6/qemu/CreateWizard.js
> index 341324c8..d01c77e9 100644
> --- a/www/manager6/qemu/CreateWizard.js
> +++ b/www/manager6/qemu/CreateWizard.js
> @@ -8,6 +8,7 @@ Ext.define('PVE.qemu.CreateWizard', {
>              nodename: '',
>              current: {
>                  scsihw: '',
> +                architecture: '__default__',
>              },
>          },
>          formulas: {
> @@ -122,6 +123,23 @@ Ext.define('PVE.qemu.CreateWizard', {
>                      deleteDefaultValue: true,
>                      fieldLabel: gettext('Start at boot'),
>                  },
> +                {
> +                    xtype: 'proxmoxKVComboBox',
> +                    name: 'arch',
> +                    value: '__default__',
> +                    fieldLabel: gettext('Architecture'),

Maybe 'vCPU Architecture' to be explicit?

> +                    bind: {
> +                        value: '{current.architecture}',
> +                    },
> +                    comboItems: [
> +                        [
> +                            '__default__',
> +                            `${Proxmox.Utils.defaultText} (${gettext('Host Architecture')})`,
> +                        ],
> +                        ['x86_64', gettext('x86 (64-bit)')],
> +                        ['aarch64', gettext('ARM (64-bit)')],
> +                    ],
> +                },
>              ],
>              advancedColumn2: [
>                  {

Everything around it is related to startup (order), so it seems a bit
off IMHO. Should we put it further below by itself?

> @@ -280,6 +298,10 @@ Ext.define('PVE.qemu.CreateWizard', {
>                          kv.boot = boot;
>                      }
>  
> +                    if (kv.arch && !PVE.Utils.isHostArchitecture(kv.arch, kv.nodename)) {
> +                        kv.kvm = 0;
> +                    }
> +
>                      Ext.Object.each(kv, function (key, value) {
>                          if (key === 'delete') {
>                              // ignore
> @@ -310,6 +332,10 @@ Ext.define('PVE.qemu.CreateWizard', {
>                      kv.boot = boot;
>                  }
>  
> +                if (kv.arch && !PVE.Utils.isHostArchitecture(kv.arch, nodename)) {
> +                    kv.kvm = 0;
> +                }
> +
>                  Proxmox.Utils.API2Request({
>                      url: '/nodes/' + nodename + '/qemu',
>                      waitMsgTarget: wizard,
> diff --git a/www/manager6/qemu/HardwareView.js b/www/manager6/qemu/HardwareView.js
> index cf5e2a0f..b7cc7856 100644
> --- a/www/manager6/qemu/HardwareView.js
> +++ b/www/manager6/qemu/HardwareView.js
> @@ -66,6 +66,21 @@ Ext.define('PVE.qemu.HardwareView', {
>          };
>  
>          let rows = {
> +            arch: {
> +                header: gettext('Architecture'),
> +                iconCls: 'university', // TODO: find/design better icon

Maybe just reuse the CPU one?

I noticed that the Arch can be removed via the UI button. I guess it's
better to disable the button, to avoid any accidents (since it can't be
added back and is a very unusual change to begin with).

> +                renderer: function (value) {
> +                    switch (value ?? '') {
> +                        case '':
> +                        case 'x86_64':
> +                            return gettext('x86 (64-bit)');
> +                        case 'aarch64':
> +                            return gettext('ARM (64-bit)');
> +                        default:
> +                            return Proxmox.Utils.unknownText;
> +                    }
> +                },
> +            },
>              memory: {
>                  header: gettext('Memory'),
>                  editor: caps.vms['VM.Config.Memory'] ? 'PVE.qemu.MemoryEdit' : undefined,
> @@ -419,6 +434,7 @@ Ext.define('PVE.qemu.HardwareView', {
>                  pveSelNode: me.pveSelNode,
>                  confid: rec.data.key,
>                  url: `/api2/extjs/${baseurl}`,
> +                arch: me.getObjectValue('arch'),
>                  listeners: {
>                      destroy: () => me.reload(),
>                  },



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


  reply	other threads:[~2026-01-28 16:31 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-28 12:18 [pve-devel] [PATCH manager 00/10] enable qemu vm architecture selection Dominik Csapak
2026-01-28 12:18 ` [pve-devel] [PATCH manager 01/10] api/pvestatd: broadcast and expose non-x86 host architecture Dominik Csapak
2026-01-28 16:05   ` Fiona Ebner
2026-01-29  9:20     ` Dominik Csapak
2026-01-28 12:18 ` [pve-devel] [PATCH manager 02/10] ui: resource store: add architecture field Dominik Csapak
2026-01-28 12:18 ` [pve-devel] [PATCH manager 03/10] ui: qemu: add architecture field in wizard and hardware view Dominik Csapak
2026-01-28 16:32   ` Fiona Ebner [this message]
2026-01-28 12:18 ` [pve-devel] [PATCH manager 04/10] ui: qemu: make scsi hw selector architecture aware Dominik Csapak
2026-01-28 12:18 ` [pve-devel] [PATCH manager 05/10] ui: qemu: make osdefaults " Dominik Csapak
2026-01-29  9:25   ` Fiona Ebner
2026-01-28 12:18 ` [pve-devel] [PATCH manager 06/10] ui: qemu: make os type selector " Dominik Csapak
2026-01-29  9:41   ` Fiona Ebner
2026-01-29  9:47     ` Dominik Csapak
2026-01-29 12:09       ` Fiona Ebner
2026-01-29 10:18     ` Dominik Csapak
2026-01-29 12:10       ` Fiona Ebner
2026-01-28 12:18 ` [pve-devel] [PATCH manager 07/10] ui: qemu: make machine panels/fields " Dominik Csapak
2026-01-29 11:12   ` Fiona Ebner
2026-01-29 12:16     ` Dominik Csapak
2026-01-29 12:25       ` Fiona Ebner
2026-01-28 12:18 ` [pve-devel] [PATCH manager 08/10] ui: qemu: make bios selector " Dominik Csapak
2026-01-28 12:18 ` [pve-devel] [PATCH manager 09/10] ui: qemu: make sortByPreviousUsage " Dominik Csapak
2026-01-28 12:18 ` [pve-devel] [PATCH manager 10/10] ui: qemu: wizard: use defaults to populate machine and bios Dominik Csapak
2026-01-29 13:13 ` [pve-devel] [PATCH manager 00/10] enable qemu vm architecture selection Fiona Ebner
2026-01-29 13:15   ` Fiona Ebner

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=f17b06ec-54ae-41b9-950b-41899510d9ed@proxmox.com \
    --to=f.ebner@proxmox.com \
    --cc=d.csapak@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal