Since pve-network now includes the fabric status in its top-level status function call, move pvestatd over to use the zone-specific function for generating SDN resources instead. Additionally, the zone_type field has been added in the output of the zone status, so broadcast and return that field as well. Main use-case for now is discerning the type of zones, to decide which panels to show in the SDN browser.
Also, the have_sdn guard can be removed since SDN is pre-installed and therefore the guard is no longer needed. Signed-off-by: Stefan Hanreich <[email protected]> --- PVE/API2/Cluster.pm | 42 +++++++++++++++++++++++------------------ PVE/Service/pvestatd.pm | 16 ++++------------ 2 files changed, 28 insertions(+), 30 deletions(-) diff --git a/PVE/API2/Cluster.pm b/PVE/API2/Cluster.pm index 34523fd7e..f8e6ed47c 100644 --- a/PVE/API2/Cluster.pm +++ b/PVE/API2/Cluster.pm @@ -443,6 +443,11 @@ __PACKAGE__->register_method({ enum => ["fabric"], optional => 1, }, + zone_type => { + description => "The type of an SDN zone (for type 'sdn').", + type => "string", + optional => 1, + }, protocol => { description => "The protocol of a fabric (for type 'network', network_type 'fabric').", @@ -616,24 +621,25 @@ __PACKAGE__->register_method({ } } - if ($have_sdn) { - my $nodes = PVE::Cluster::get_node_kv("sdn"); - - for my $node (sort keys %{$nodes}) { - my $sdns = decode_json($nodes->{$node}); - - for my $id (sort keys %{$sdns}) { - next if !$rpcenv->check($authuser, "/sdn/zones/$id", ['SDN.Audit'], 1); - my $sdn = $sdns->{$id}; - my $entry = { - id => "sdn/$node/$id", - sdn => $id, - node => $node, - type => 'sdn', - status => $sdn->{'status'}, - }; - push @$res, $entry; - } + my $nodes = PVE::Cluster::get_node_kv("sdn"); + + for my $node (sort keys %{$nodes}) { + my $sdns = decode_json($nodes->{$node}); + + for my $id (sort keys %{$sdns}) { + next if !$rpcenv->check($authuser, "/sdn/zones/$id", ['SDN.Audit'], 1); + my $sdn = $sdns->{$id}; + my $entry = { + id => "sdn/$node/$id", + sdn => $id, + node => $node, + type => 'sdn', + status => $sdn->{'status'}, + }; + + $entry->{zone_type} = $sdn->{zone_type} if defined($sdn->{zone_type}); + + push @$res, $entry; } } } diff --git a/PVE/Service/pvestatd.pm b/PVE/Service/pvestatd.pm index 862bf8b43..84e8cf7c0 100755 --- a/PVE/Service/pvestatd.pm +++ b/PVE/Service/pvestatd.pm @@ -15,6 +15,7 @@ use PVE::CpuSet; use Filesys::Df; use PVE::INotify; use PVE::Network; +use PVE::Network::SDN::Zones; use PVE::RS::SDN::Fabrics; use PVE::NodeConfig; use PVE::Cluster qw(cfs_read_file); @@ -38,12 +39,6 @@ use PVE::Status::Plugin; use base qw(PVE::Daemon); -my $have_sdn; -eval { - require PVE::Network::SDN; - $have_sdn = 1; -}; - my $opt_debug; my $restart_request; @@ -767,13 +762,10 @@ sub update_ceph_metadata { } sub update_sdn_status { + my ($zone_status, $vnet_status) = PVE::Network::SDN::Zones::status(); - if ($have_sdn) { - my ($transport_status, $vnet_status) = PVE::Network::SDN::status(); - - my $status = $transport_status ? encode_json($transport_status) : undef; - PVE::Cluster::broadcast_node_kv("sdn", $status); - } + my $status = $zone_status ? encode_json($zone_status) : undef; + PVE::Cluster::broadcast_node_kv("sdn", $status); } sub update_network_status { -- 2.47.3 _______________________________________________ pve-devel mailing list [email protected] https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
