From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 10AF91FF13B for ; Wed, 28 Jan 2026 17:31:50 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 002261796A; Wed, 28 Jan 2026 17:32:13 +0100 (CET) Message-ID: Date: Wed, 28 Jan 2026 17:32:08 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: Proxmox VE development discussion , Dominik Csapak References: <20260128123035.2576774-1-d.csapak@proxmox.com> <20260128123035.2576774-4-d.csapak@proxmox.com> Content-Language: en-US From: Fiona Ebner In-Reply-To: <20260128123035.2576774-4-d.csapak@proxmox.com> X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1769617862473 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.017 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pve-devel] [PATCH manager 03/10] ui: qemu: add architecture field in wizard and hardware view X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" 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 > --- > 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