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




Reply via email to