mirror of
https://git.proxmox.com/git/pve-common
synced 2025-07-15 17:13:08 +00:00
![]() Use case: networks for kvm use a <model>=<macaddr> scheme where the model represents the network card. The schema previously could not represent this, so we now introduce a 'group' key which works similar to an alias with the difference that the data structure also gets an entry named after the group filled with the name of the key that was used to fill it. Usage: { virtio => { group => 'model' }, e1000 => { group => 'model' }, model => { type => 'string', pattern => ... # pattern for mac address ... } } Now the string 'virtio=aa:bb:cc:dd:ee:ff' gets parsed into: { model => 'virtio', virtio => 'aa:bb:cc:dd:ee:ff' } Error examples: With bad value: virtio: value does not match the regex pattern Missing group: model: property is missing and it is not optional parse_net() however used the 'macaddr' key for the mac address, which can be achieved by aliasing 'model' to 'macaddr': { virtio => { group => 'model' }, e1000 => { group => 'model' }, model => { alias => 'macaddr' }, macaddr => { type => 'string', pattern => ... # pattern for mac address ... } } Then the above string will be parsed into: { model => 'virtio', macaddr => 'aa:bb:cc:dd:ee:ff' } The error output now always shows the 'macaddr' key: Error examples: With bad value: macaddr: value does not match the regex pattern Missing group: macaddr: property is missing and it is not optional In order to support specifying no mac address we can now set model.default_key = 1 and macaddr.optional = 1. That way `virtio,bridge=vmbr2` gets parsed correctly into just a model with no macaddr. This works because default keys as aliases have previously not been supported and would not have been aliased accordingly. This case is now also taken into account when printing default keys, which is now skipped if it is also an alias. |
||
---|---|---|
.. | ||
PVE | ||
Makefile |