public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [PATCH manager v3 00/18] enable qemu vm architecture selection
@ 2026-03-02 13:20 Dominik Csapak
  2026-03-02 13:20 ` [PATCH manager v3 01/18] api/pvestatd: broadcast and expose non-x86 host architecture Dominik Csapak
                   ` (17 more replies)
  0 siblings, 18 replies; 19+ messages in thread
From: Dominik Csapak @ 2026-03-02 13:20 UTC (permalink / raw)
  To: pve-devel

This series brings the emulated aarch64 vms to the gui. This could
be configured on the api only previously.

The code also handles if the host has a non-x86 architecture, and is
generally structured in a way that should make it (relatively) easy
to add other architectures in the future.

Some fields/panels needed adaptions to hide some values or change some
defaults, since not every combination that can be configured makes
sense. (e.g. seabios on aarch64 cannot work currently)

Generally the backend allows many combinations that don't make sense on
all architectures, so i tried to limit the users here to the 'correct'
ones, but we should think about limiting them in the backend too.

Also, the backend made some inconsistent choices with different
architectures, such as the default controller changes with the
architecture, but things like 'bios' or 'scsihw' do not. So I worked
around these things a bit differently.

other nice to haves not yet done, that also invovle changing the backend:
* 'virt' machine support in our api, so one can choose older versions
* allow 'pcie' passthrough on 'virt'

NOTE: i already sent the pvestatd patch as v3 separately, but it's
included here for convenience.

changes from v2:
* use Tools get_host_arch instead of POSIX::uname()
* fix adding the arch only when it's non-x86
* rename variable and api property to 'host-arch'
* adapt ui to host-arch change
* rename some functions in www/manager6/qemu/Architecture.js
  for better clarity (e.g. getNodeArchitecture -> getGuestArchitecture)
  and change the call sites in all patches accordingly
* fix some typos
* fix one small bug with fireEvent (forgot to add 'me' as the first
  parameter)

changes from v1:
* refactored the filtering of KVComboBox into a FilteredKVComboBox
* refactored architecture specific things into PVE.qemu.Architecture
  this makes it much easier in the future to add new architectures
* refactored the wizard logic for ostype + iso into it's own panel
  this makes the os type selector much simpler and easier to follow
* changed the way the wizard sets the architecture in the viewmodel,
  namely it's now always a valid value, and we don't have to calculate
  from the selected node everywhere
* added handling of cd roms in the wizard
* added handling of cpu model + flags
* fixed leftover hunk in PVE/API2/NodeConfig
* probably more...

Dominik Csapak (18):
  api/pvestatd: broadcast and expose non-x86 host architecture
  ui: qemu: wizard: refactor ostype and cd selector into an OSPanel
  ui: form: add filtered KVComboBox
  ui: resource store: add architecture field
  ui: qemu: add architecture specific defaults and helpers
  ui: qemu: add architecture field in wizard and hardware view
  ui: qemu: make scsi hw selector architecture aware
  ui: qemu: make osdefaults architecture aware
  ui: qemu: make os type selector architecture aware
  ui: qemu: make machine panels/fields architecture aware
  ui: qemu: make bios selector architecture aware
  ui: qemu: make sortByPreviousUsage architecture aware
  ui: qemu: wizard: use defaults to populate machine and bios
  ui: qemu: wizard: make iso confid architecture specific
  ui: qemu: make bus selector architecture aware
  ui: qemu: make processor edit architecture aware
  ui: qemu: change ui default for cpu model
  ui: qemu: set arch parameter for fetch machine types from api

 PVE/API2/Cluster.pm                      |   9 ++
 PVE/Service/pvestatd.pm                  |   9 ++
 www/manager6/Makefile                    |   4 +
 www/manager6/Utils.js                    |  21 ++-
 www/manager6/data/ResourceStore.js       |   6 +
 www/manager6/form/BusTypeSelector.js     |   4 +-
 www/manager6/form/CPUModelSelector.js    |  39 ++++++
 www/manager6/form/ControllerSelector.js  |  26 +++-
 www/manager6/form/FilteredKVComboBox.js  |  67 +++++++++
 www/manager6/form/QemuBiosSelector.js    |  18 ++-
 www/manager6/form/QemuMachineSelector.js |  13 ++
 www/manager6/form/ScsiHwSelector.js      |   6 +-
 www/manager6/form/VMCPUFlagSelector.js   |  13 ++
 www/manager6/panel/MultiDiskEdit.js      |  14 +-
 www/manager6/qemu/Architecture.js        | 106 +++++++++++++++
 www/manager6/qemu/CDEdit.js              |   4 +
 www/manager6/qemu/CIDriveEdit.js         |   2 +
 www/manager6/qemu/CreateWizard.js        |  81 +++++++----
 www/manager6/qemu/HDEdit.js              |   3 +
 www/manager6/qemu/HardwareView.js        |  16 ++-
 www/manager6/qemu/MachineEdit.js         |  78 ++++++++---
 www/manager6/qemu/MultiHDEdit.js         |   8 +-
 www/manager6/qemu/NetworkEdit.js         |   6 +-
 www/manager6/qemu/OSDefaults.js          |  82 +++++++++---
 www/manager6/qemu/OSPanel.js             | 164 +++++++++++++++++++++++
 www/manager6/qemu/OSTypeEdit.js          | 126 ++++-------------
 www/manager6/qemu/Options.js             |   4 +-
 www/manager6/qemu/ProcessorEdit.js       |  30 +++++
 www/manager6/qemu/QemuBiosEdit.js        |  29 +++-
 www/manager6/qemu/ScsiHwEdit.js          |   1 +
 www/manager6/qemu/SystemEdit.js          |  26 ++--
 www/manager6/window/GuestDiskReassign.js |   1 +
 32 files changed, 813 insertions(+), 203 deletions(-)
 create mode 100644 www/manager6/form/FilteredKVComboBox.js
 create mode 100644 www/manager6/form/QemuMachineSelector.js
 create mode 100644 www/manager6/qemu/Architecture.js
 create mode 100644 www/manager6/qemu/OSPanel.js

-- 
2.47.3





^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2026-03-02 13:30 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-03-02 13:20 [PATCH manager v3 00/18] enable qemu vm architecture selection Dominik Csapak
2026-03-02 13:20 ` [PATCH manager v3 01/18] api/pvestatd: broadcast and expose non-x86 host architecture Dominik Csapak
2026-03-02 13:20 ` [PATCH manager v3 02/18] ui: qemu: wizard: refactor ostype and cd selector into an OSPanel Dominik Csapak
2026-03-02 13:20 ` [PATCH manager v3 03/18] ui: form: add filtered KVComboBox Dominik Csapak
2026-03-02 13:20 ` [PATCH manager v3 04/18] ui: resource store: add architecture field Dominik Csapak
2026-03-02 13:20 ` [PATCH manager v3 05/18] ui: qemu: add architecture specific defaults and helpers Dominik Csapak
2026-03-02 13:20 ` [PATCH manager v3 06/18] ui: qemu: add architecture field in wizard and hardware view Dominik Csapak
2026-03-02 13:20 ` [PATCH manager v3 07/18] ui: qemu: make scsi hw selector architecture aware Dominik Csapak
2026-03-02 13:20 ` [PATCH manager v3 08/18] ui: qemu: make osdefaults " Dominik Csapak
2026-03-02 13:20 ` [PATCH manager v3 09/18] ui: qemu: make os type selector " Dominik Csapak
2026-03-02 13:20 ` [PATCH manager v3 10/18] ui: qemu: make machine panels/fields " Dominik Csapak
2026-03-02 13:20 ` [PATCH manager v3 11/18] ui: qemu: make bios selector " Dominik Csapak
2026-03-02 13:21 ` [PATCH manager v3 12/18] ui: qemu: make sortByPreviousUsage " Dominik Csapak
2026-03-02 13:21 ` [PATCH manager v3 13/18] ui: qemu: wizard: use defaults to populate machine and bios Dominik Csapak
2026-03-02 13:21 ` [PATCH manager v3 14/18] ui: qemu: wizard: make iso confid architecture specific Dominik Csapak
2026-03-02 13:21 ` [PATCH manager v3 15/18] ui: qemu: make bus selector architecture aware Dominik Csapak
2026-03-02 13:21 ` [PATCH manager v3 16/18] ui: qemu: make processor edit " Dominik Csapak
2026-03-02 13:21 ` [PATCH manager v3 17/18] ui: qemu: change ui default for cpu model Dominik Csapak
2026-03-02 13:21 ` [PATCH manager v3 18/18] ui: qemu: set arch parameter for fetch machine types from api Dominik Csapak

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