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

Reply via email to