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: requires fionas series for qemu-server[0] to work properly
for the cpu models + flags

The series is a very big rewrite from the v1, so it probably
won't help by comparing with the v1, but here is a changelog
nonetheless:

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 (17):
  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

 PVE/API2/Cluster.pm                      |   9 ++
 PVE/Service/pvestatd.pm                  |  10 ++
 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        | 104 ++++++++++++++
 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         |  68 +++++++---
 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, 802 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