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
next prev parent 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