[pve-devel] [PATCH pve-manager v4 05/10] pvestatd: sdn: adapt to changes in status reporting
Stefan Hanreich
s.hanreich at proxmox.com
Thu Nov 13 17:19:19 CET 2025
Since pve-network now includes the fabric status in its top-level
status function call (SDN::status), 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 <s.hanreich at proxmox.com>
---
PVE/API2/Cluster.pm | 31 +++++++++++++++++++------------
PVE/Service/pvestatd.pm | 16 ++++------------
2 files changed, 23 insertions(+), 24 deletions(-)
diff --git a/PVE/API2/Cluster.pm b/PVE/API2/Cluster.pm
index eb9ddcc39..4f41a005c 100644
--- a/PVE/API2/Cluster.pm
+++ b/PVE/API2/Cluster.pm
@@ -469,6 +469,11 @@ __PACKAGE__->register_method({
enum => ["fabric", "zone"],
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').",
@@ -638,18 +643,20 @@ __PACKAGE__->register_method({
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;
- }
+ 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 572eb7eb5..98d421f48 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
More information about the pve-devel
mailing list