[pve-devel] [PATCH cluster/access-control/guest-common/qemu-server/manager v4] cluster mapping backend

DERUMIER, Alexandre alexandre.derumier at groupe-cyllene.com
Fri May 26 18:09:29 CEST 2023


Thanks for sharing your progress Dominik.

It'll try to retest them with an nvidia mdev vgpu cluster in coming
weeks. 

Le jeudi 25 mai 2023 à 12:17 +0200, Dominik Csapak a écrit :
> this series aims to add a cluster-wide device mapping for pci and usb
> devices. so that an admin can configure a device to be availble for
> migration and configuring for uses that are non-root
> (the existing pattern can be copied easily for other types, e.g.
> markus upcoming folder sharing)
> 
> note that this series requires the array support in api/section
> config[0] but how the api is formed/where the data comes should not
> be
> hard to change
> 
> also since the api changed quite drastically, the gui must be
> adapted,
> and i'm not done with that yet, so sending the backend only for now
> 
> the series is a bigger change to the v3, so a closer look is probably
> warranted
> 
> changes from v3:
> * the configs are now split by type (for ease of use of the section
>   config) and live in pve-guest-common, to avoid a cyclic dependcy
> * the configs are section configs now (with mentioned array support)
> * the api is now only defined in /cluster/resource/{TYPE} and has
>   no nodespecific api anymore, besides a 'check-node' parameter
>   (see the pve-manager patch for more details on that)
> * the internal structure of the pci parsing changed completely,
> making
>   the structure more understandable
> * a single map entry now has the same semantic as the qemu-server
>   hostpci config entry, meaning if you want multiple mappings per
> host,
>   you have to add multiple map entries. this is a more flexible
>   approach, and the parsing code gets a bit simpler
> * combined some properties in the config (e.g. vendor/device) so that
>   we don't have too many
> * squashed some changes together, as they didn't make much sense
>   separately anyway (e.g. api/config patches) and it didn't make
>   reviewing easier
> * changed the ACL paths & privileges to be more general
> * surely some other changes i forgot..
> 
> changes from v2:
> * some bug fixes (e.g use of unitialized variable)
> * don't set mdev for multifunction devices
>   -> this should fix alexandres issue, since it's not possible
> anymore
>   to select a mediated device when having a multifunction device
>   selected
> 
> changes from v1:
> * dropped 'check_hw_perm' (just use 'check_full' now)
> * added some cleanups
> * renamed the buttons in the ui (hopefully better now)
> * added multi device mapping for each host
>   this includes a new 'multi pci' selector for that window, which
>   automatically adds entries for the whole slots which, when
> selected,
>   disabled the selection of the individual functions
> * fixed some issues (e.g. missing entries in the 'caps' object, wrong
>   usb config parsing, etc.)
> 
> changes from the rfc:
> * new cluster wide gui instead of node-local one (removed that, since
>   it's not necessary when we have a cluster-wide one)
> * uses json instead of a section config
> * api is quite different overall, i split the type into its own level
>   for configuring, similar to what we do in pbs
>   (e.g. /nodes/NODENAME/hardware/mapping/usb/)
> * fixed quite some bugs the rfc had
> * added patch for handling the gui with limited permissions better
> * added a 'comment' field for mappings
> 
> dependencies are pretty straight forward this time around (if i'm not
> overlooking something):
> 
> qemu-server/pve-manager -> new access-control/pve-guest-common -> new
> pve-cluster
> 
> 0:
> https://antiphishing.cetsi.fr/proxy/v3?i=SHV0Y1JZQjNyckJFa3dUQiblhF5YcUqtiWCaK_ri0kk&r=T0hnMlUyVEgwNmlmdHc1NSqeTQ1pLQVNn4UvDLnWe4fCxNuytxXrtkvXRfHgEH29SgNUOJTfU-F2je9BBTq-sg&f=V3p0eFlQOUZ4czh2enpJS6vlBYwhEUcOwTmUN-Hu71ZWogcUGH-slS7gYzVrVVB6_wb2zNaC4g2GRLF4nWvKLw&u=https%3A//lists.proxmox.com/pipermail/pve-devel/2023-May/056739.html&k=ZVd0
> 
> pve-cluster:
> 
> Dominik Csapak (1):
>   add cfg files for resource mapping
> 
>  src/PVE/Cluster.pm  | 2 ++
>  src/pmxcfs/status.c | 2 ++
>  2 files changed, 4 insertions(+)
> 
> pve-access-control:
> 
> Dominik Csapak (1):
>   add privileges and paths for cluster resource mapping
> 
>  src/PVE/AccessControl.pm  | 20 +++++++++++++++++++-
>  src/PVE/RPCEnvironment.pm |  7 +++++--
>  2 files changed, 24 insertions(+), 3 deletions(-)
> 
> pve-guest-common:
> 
> Dominik Csapak (1):
>   add PCI/USB Resource configs
> 
>  src/Makefile            |   3 +
>  src/PVE/Resource/PCI.pm | 226
> ++++++++++++++++++++++++++++++++++++++++
>  src/PVE/Resource/USB.pm | 183 ++++++++++++++++++++++++++++++++
>  3 files changed, 412 insertions(+)
>  create mode 100644 src/PVE/Resource/PCI.pm
>  create mode 100644 src/PVE/Resource/USB.pm
> 
> qemu-server:
> 
> Dominik Csapak (6):
>   enable cluster mapped USB devices for guests
>   enable cluster mapped PCI devices for guests
>   check_local_resources: extend for mapped resources
>   api: migrate preconditions: use new check_local_resources info
>   migration: check for mapped resources
>   add test for mapped pci devices
> 
>  PVE/API2/Qemu.pm                              | 110 +++++++-
>  PVE/QemuMigrate.pm                            |  23 +-
>  PVE/QemuServer.pm                             | 111 +++++---
>  PVE/QemuServer/PCI.pm                         | 243 +++++++++++++++-
> --
>  PVE/QemuServer/USB.pm                         |  22 +-
>  test/MigrationTest/Shared.pm                  |  14 +
>  test/cfg2cmd/q35-linux-hostpci-mapping.conf   |  17 ++
>  .../q35-linux-hostpci-mapping.conf.cmd        |  36 +++
>  test/cfg2cmd/q35-linux-hostpci.conf           |   2 +-
>  test/cfg2cmd/q35-linux-hostpci.conf.cmd       |   2 +-
>  test/run_config2command_tests.pl              |  83 ++++++
>  11 files changed, 575 insertions(+), 88 deletions(-)
>  create mode 100644 test/cfg2cmd/q35-linux-hostpci-mapping.conf
>  create mode 100644 test/cfg2cmd/q35-linux-hostpci-mapping.conf.cmd
> 
> pve-manager:
> 
> Dominik Csapak (2):
>   pvesh: fix parameters for proxyto_callback
>   api: add resource map api endpoints for PCI and USB
> 
>  PVE/API2/Cluster.pm                |   8 +
>  PVE/API2/Cluster/Makefile          |   5 +
>  PVE/API2/Cluster/Resource.pm       |  53 +++++
>  PVE/API2/Cluster/Resource/Makefile |  18 ++
>  PVE/API2/Cluster/Resource/PCI.pm   | 297
> +++++++++++++++++++++++++++++
>  PVE/API2/Cluster/Resource/USB.pm   | 262 +++++++++++++++++++++++++
>  PVE/API2/Hardware.pm               |   1 -
>  PVE/API2/Nodes.pm                  |   1 +
>  PVE/CLI/pvesh.pm                   |  10 +-
>  9 files changed, 650 insertions(+), 5 deletions(-)
>  create mode 100644 PVE/API2/Cluster/Resource.pm
>  create mode 100644 PVE/API2/Cluster/Resource/Makefile
>  create mode 100644 PVE/API2/Cluster/Resource/PCI.pm
>  create mode 100644 PVE/API2/Cluster/Resource/USB.pm
> 



More information about the pve-devel mailing list