return the vnets of the localnode Signed-off-by: Alexandre Derumier <aderum...@odiso.com> --- PVE/Network/SDN.pm | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+)
diff --git a/PVE/Network/SDN.pm b/PVE/Network/SDN.pm index 2e996e9..2b423a7 100644 --- a/PVE/Network/SDN.pm +++ b/PVE/Network/SDN.pm @@ -6,6 +6,7 @@ use warnings; use Data::Dumper; use JSON; +use PVE::Network::SDN::Vnets; use PVE::Network::SDN::Zones; use PVE::Tools qw(extract_param dir_glob_regex run_command); @@ -45,5 +46,38 @@ sub status { return($zone_status, $vnet_status); } +sub get_local_vnets { + + my $rpcenv = PVE::RPCEnvironment::get(); + + my $authuser = $rpcenv->get_user(); + + my $nodename = PVE::INotify::nodename(); + + 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 $vnets = {}; + + foreach my $vnetid (@vnetids) { + + my $vnet = PVE::Network::SDN::Vnets::sdn_vnets_config($vnets_cfg, $vnetid); + my $zoneid = $vnet->{zone}; + my $privs = [ 'SDN.Audit', 'SDN.Allocate' ]; + + next if !$zoneid; + next if !$rpcenv->check_any($authuser, "/sdn/zones/$zoneid", $privs, 1); + + my $zone_config = PVE::Network::SDN::Zones::sdn_zones_config($zones_cfg, $zoneid); + + next if defined($zone_config->{nodes}) && !$zone_config->{nodes}->{$nodename}; + $vnets->{$vnetid} = { type => 'vnet', active => '1' }; + } + + return $vnets; +} + 1; -- 2.20.1 _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel