Signed-off-by: Alexandre Derumier <aderum...@odiso.com> --- PVE/API2/Network.pm | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+)
diff --git a/PVE/API2/Network.pm b/PVE/API2/Network.pm index 4c691879..d727a2fc 100644 --- a/PVE/API2/Network.pm +++ b/PVE/API2/Network.pm @@ -18,6 +18,7 @@ use base qw(PVE::RESTHandler); my $have_sdn; eval { + require PVE::Network::SDN::Vnets; require PVE::Network::SDN::Zones; require PVE::Network::SDN::Controllers; $have_sdn = 1; @@ -246,6 +247,30 @@ __PACKAGE__->register_method({ ($type eq 'bridge' || $type eq 'OVSBridge')); delete $ifaces->{$k} if !$match; } + + if ($have_sdn && $param->{type} eq 'any_bridge') { + my $vnets_cfg = PVE::Network::SDN::Vnets::config(); + my $zones_cfg = PVE::Network::SDN::Zones::config(); + my @vnetids = PVE::Network::SDN::Vnets::sdn_vnets_ids($vnets_cfg); + my $authuser = $rpcenv->get_user(); + my $nodename = PVE::INotify::nodename(); + + + foreach my $vnetid (@vnetids) { + + my $vnet = PVE::Network::SDN::Vnets::sdn_vnets_config($vnets_cfg, $vnetid); + my $zoneid = $vnet->{zone}; + next if !$zoneid; + my $zone_config = PVE::Network::SDN::Zones::sdn_zones_config($zones_cfg, $zoneid); + + my $privs = [ 'SDN.Audit', 'SDN.Allocate' ]; + next if !$rpcenv->check_any($authuser, "/sdn/vnets/$vnetid", $privs, 1); + next if defined($zone_config->{nodes}) && !$zone_config->{nodes}->{$nodename}; + + my $iface = { type => 'vnet', active => '1' }; + $ifaces->{$vnetid} = $iface; + } + } } return PVE::RESTHandler::hash_to_array($ifaces, 'iface'); -- 2.20.1 _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel