From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 4F7541FF13B for ; Wed, 28 Jan 2026 13:31:18 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 859DD11092; Wed, 28 Jan 2026 13:31:11 +0100 (CET) From: Dominik Csapak To: pve-devel@lists.proxmox.com Date: Wed, 28 Jan 2026 13:18:07 +0100 Message-ID: <20260128123035.2576774-7-d.csapak@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260128123035.2576774-1-d.csapak@proxmox.com> References: <20260128123035.2576774-1-d.csapak@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.032 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 SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [PATCH manager 06/10] ui: qemu: make os type selector architecture aware 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" A list of valid ostypes for each architecture is defined in PVE.Utils, and this is used for the os type selector to only show relevant os types. Use a setter for 'arch' so we can bind the values again in the wizard, similar to how the scsi selector is done. Also update 'me.nodename' in 'setNodename'. This was never necessary until now, but it is with the 'setArch' logic. Signed-off-by: Dominik Csapak --- www/manager6/Utils.js | 23 ++++++++++++++++++ www/manager6/qemu/CreateWizard.js | 1 + www/manager6/qemu/OSTypeEdit.js | 39 ++++++++++++++++++++++++++++--- 3 files changed, 60 insertions(+), 3 deletions(-) diff --git a/www/manager6/Utils.js b/www/manager6/Utils.js index d8b212bc..de1ee0ba 100644 --- a/www/manager6/Utils.js +++ b/www/manager6/Utils.js @@ -63,6 +63,17 @@ Ext.define('PVE.Utils', { Other: [{ desc: '-', val: 'other' }], }, + kvmOSTypesPerArchitecture: { + x86_64: { + bases: undefined, // include all + ostypes: undefined, // include all + }, + aarch64: { + bases: ['Linux', 'Other'], + ostypes: ['l26', 'other'], + }, + }, + is_windows: function (ostype) { for (let entry of PVE.Utils.kvm_ostypes['Microsoft Windows']) { if (entry.val === ostype) { @@ -2068,6 +2079,18 @@ Ext.define('PVE.Utils', { return Ext.htmlEncode(description); }, + // returns the resulting architecture from a given arch and + // the nodename, in case the architecture is set to default + getArchitecture: function (architecture, nodename) { + if (architecture === '__default__') { + architecture = undefined; + } + + let hostArchitecture = PVE.data.ResourceStore.getNodeById(nodename)?.data.architecture; + + return architecture ?? hostArchitecture ?? 'x86_64'; + }, + // returns if the given architecture is the native host architecture of the given nodename isHostArchitecture: function (architecture, nodename) { if (architecture === '__default__') { diff --git a/www/manager6/qemu/CreateWizard.js b/www/manager6/qemu/CreateWizard.js index d01c77e9..16bf6d9b 100644 --- a/www/manager6/qemu/CreateWizard.js +++ b/www/manager6/qemu/CreateWizard.js @@ -222,6 +222,7 @@ Ext.define('PVE.qemu.CreateWizard', { insideWizard: true, bind: { nodename: '{nodename}', + arch: '{current.architecture}', }, }, ], diff --git a/www/manager6/qemu/OSTypeEdit.js b/www/manager6/qemu/OSTypeEdit.js index f8f8c0b6..8c71f832 100644 --- a/www/manager6/qemu/OSTypeEdit.js +++ b/www/manager6/qemu/OSTypeEdit.js @@ -36,7 +36,11 @@ Ext.define('PVE.qemu.OSTypeInputPanel', { if (!me.getView().insideWizard) { return; } - var targetValues = PVE.qemu.OSDefaults.getDefaults(ostype); + let arch = PVE.Utils.getArchitecture( + me.getViewModel().get('current.architecture'), + me.nodename, + ); + var targetValues = PVE.qemu.OSDefaults.getDefaults(ostype, arch); me.setWidget('pveBusSelector', targetValues.busType); me.setWidget('pveNetworkCardSelector', targetValues.networkCard); @@ -77,17 +81,43 @@ Ext.define('PVE.qemu.OSTypeInputPanel', { updateVMConfig(); me.setWidget('pveBusSelector', 'scsi'); let ostype = me.lookup('ostype').getValue(); - let targetValues = PVE.qemu.OSDefaults.getDefaults(ostype); + let arch = PVE.Utils.getArchitecture( + me.getViewModel().get('current.architecture'), + me.nodename, + ); + let targetValues = PVE.qemu.OSDefaults.getDefaults(ostype, arch); me.setWidget('pveBusSelector', targetValues.busType); } }, }, setNodename: function (nodename) { - var me = this; + let me = this; + me.nodename = nodename; me.lookup('isoSelector').setNodename(nodename); }, + setArch: function (arch) { + let me = this; + + arch = PVE.Utils.getArchitecture(arch, me.nodename); + me.arch = arch; + + let osbaseStore = me.lookup('osbase').getStore(); + osbaseStore.clearFilter(); + let list = PVE.Utils.kvmOSTypesPerArchitecture[arch]?.bases; + if (list) { + osbaseStore.addFilter((rec) => list.indexOf(rec.data.field1) !== -1); + } + + let ostypeStore = me.lookup('ostype').getStore(); + ostypeStore.clearFilter(); + list = PVE.Utils.kvmOSTypesPerArchitecture[arch]?.ostypes; + if (list) { + ostypeStore.addFilter((rec) => list.indexOf(rec.data.val) !== -1); + } + }, + onGetValues: function (values) { if (values.ide0) { let drive = { @@ -112,6 +142,7 @@ Ext.define('PVE.qemu.OSTypeInputPanel', { xtype: 'combobox', submitValue: false, name: 'osbase', + reference: 'osbase', fieldLabel: gettext('Type'), editable: false, queryMode: 'local', @@ -196,6 +227,8 @@ Ext.define('PVE.qemu.OSTypeEdit', { var value = response.result.data.ostype || 'other'; var osinfo = PVE.Utils.get_kvm_osinfo(value); me.setValues({ ostype: value, osbase: osinfo.base }); + let arch = response.result.data.arch; + me.down('pveQemuOSTypePanel').setArch(arch); }, }); }, -- 2.47.3 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel