The possible properties returned by the vnet endpoints were only partly documented. Add all missing properties and improve descriptions for existing properties.
Extract all duplicate properties into a separate variable, so we don't have to rewrite the whole API definition for every endpoint. Signed-off-by: Stefan Hanreich <s.hanre...@proxmox.com> --- src/PVE/API2/Network/SDN/Vnets.pm | 88 ++++++++++++++++++++++++++++++- src/PVE/Network/SDN/VnetPlugin.pm | 37 +++++++------ 2 files changed, 108 insertions(+), 17 deletions(-) diff --git a/src/PVE/API2/Network/SDN/Vnets.pm b/src/PVE/API2/Network/SDN/Vnets.pm index bd37dd3..a579c36 100644 --- a/src/PVE/API2/Network/SDN/Vnets.pm +++ b/src/PVE/API2/Network/SDN/Vnets.pm @@ -73,6 +73,38 @@ my $check_vnet_access = sub { $rpcenv->check_any($authuser, "/sdn/zones/$zoneid/$vnet", $privs); }; +my $VNET_PROPERTIES = { + alias => { + type => 'string', + description => "Alias name of the VNet.", + pattern => qr/[\(\)-_.\w\d\s]{0,256}/i, + maxLength => 256, + optional => 1, + }, + 'isolate-ports' => { + type => 'boolean', + description => "If true, sets the isolated property for all interfaces on the bridge of this VNet.", + optional => 1, + }, + tag => { + type => 'integer', + description => 'VLAN Tag (for VLAN or QinQ zones) or VXLAN VNI (for VXLAN or EVPN zones).', + optional => 1, + minimum => 1, + maximum => 16777215, + }, + vlanaware => { + type => 'boolean', + description => 'Allow VLANs to pass through this VNet.', + optional => 1, + }, + zone => { + type => 'string', + description => 'Name of the zone this VNet belongs to.', + optional => 1, + }, +}; + __PACKAGE__->register_method ({ name => 'index', path => '', @@ -102,7 +134,32 @@ __PACKAGE__->register_method ({ type => 'array', items => { type => "object", - properties => {}, + properties => { + digest => { + type => 'string', + optional => 1, + description => 'Digest of the VNet section.', + }, + state => get_standard_option('pve-sdn-config-state'), + type => { + type => 'string', + enum => ['vnet'], + optional => 0, + description => 'Type of the VNet.', + }, + vnet => { + type => 'string', + optional => 0, + description => 'Name of the VNet.', + }, + pending => { + type => 'object', + description => 'Changes that have not yet been applied to the running configuration.', + optional => 1, + properties => $VNET_PROPERTIES + }, + %$VNET_PROPERTIES, + }, }, links => [ { rel => 'child', href => "{vnet}" } ], }, @@ -165,7 +222,34 @@ __PACKAGE__->register_method ({ }, }, }, - returns => { type => 'object' }, + returns => { + properties => { + digest => { + type => 'string', + optional => 1, + description => 'Digest of the VNet section.', + }, + state => get_standard_option('pve-sdn-config-state'), + type => { + type => 'string', + enum => ['vnet'], + optional => 0, + description => 'Type of the VNet.', + }, + vnet => { + type => 'string', + optional => 0, + description => 'Name of the VNet.', + }, + pending => { + type => 'object', + description => 'Changes that have not yet been applied to the running configuration.', + optional => 1, + properties => $VNET_PROPERTIES, + }, + %$VNET_PROPERTIES, + }, + }, code => sub { my ($param) = @_; diff --git a/src/PVE/Network/SDN/VnetPlugin.pm b/src/PVE/Network/SDN/VnetPlugin.pm index f44380a..1fca9c1 100644 --- a/src/PVE/Network/SDN/VnetPlugin.pm +++ b/src/PVE/Network/SDN/VnetPlugin.pm @@ -50,31 +50,38 @@ sub private { sub properties { return { zone => { - type => 'string', - description => "zone id", + type => 'string', + description => 'Name of the zone this VNet belongs to.', }, type => { - description => "Type", - optional => 1, - }, + type => 'string', + enum => ['vnet'], + description => 'Type of the VNet.', + optional => 1, + }, tag => { - type => 'integer', - description => "vlan or vxlan id", + type => 'integer', + description => 'VLAN Tag (for VLAN or QinQ zones) or VXLAN VNI (for VXLAN or EVPN zones).', + optional => 1, + minimum => 1, + maximum => 16777215, }, vlanaware => { type => 'boolean', - description => 'Allow vm VLANs to pass through this vnet.', + description => 'Allow VLANs to pass through this vnet.', + optional => 1, }, - alias => { - type => 'string', - description => "alias name of the vnet", - pattern => qr/[\(\)-_.\w\d\s]{0,256}/i, - maxLength => 256, + alias => { + type => 'string', + description => "Alias name of the VNet.", + pattern => qr/[\(\)-_.\w\d\s]{0,256}/i, + maxLength => 256, optional => 1, - }, + }, 'isolate-ports' => { type => 'boolean', - description => "If true, sets the isolated property for all members of this VNet", + description => "If true, sets the isolated property for all interfaces on the bridge of this VNet.", + optional => 1, } }; } -- 2.39.5 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel