]> git.proxmox.com Git - pve-network.git/blobdiff - PVE/Network/SDN/Zones.pm
zone status: mark vnets with unknown zone as failed
[pve-network.git] / PVE / Network / SDN / Zones.pm
index bcef427fc0c6bd7c69c33bd98e9e31a2378a9aaa..a4d81e3349f0cf9e112c73c2855eb52af59e6649 100644 (file)
@@ -66,7 +66,7 @@ sub sdn_zones_ids {
 sub complete_sdn_zone {
     my ($cmdname, $pname, $cvalue) = @_;
 
-    my $cfg = PVE::Network::SDN::config();
+    my $cfg = PVE::Network::SDN::running_config();
 
     return  $cmdname eq 'add' ? [] : [ PVE::Network::SDN::sdn_zones_ids($cfg) ];
 }
@@ -76,7 +76,7 @@ sub get_zone {
 
     my $cfg = {};
     if($running) {
-        my $cfg = PVE::Network::SDN::config();
+        my $cfg = PVE::Network::SDN::running_config();
         $cfg = $cfg->{vnets};
     } else {
         $cfg = PVE::Network::SDN::Zones::config();
@@ -90,7 +90,7 @@ sub get_zone {
 
 sub generate_etc_network_config {
 
-    my $cfg = PVE::Network::SDN::config();
+    my $cfg = PVE::Network::SDN::running_config();
 
     my $version = $cfg->{version};
     my $vnet_cfg = $cfg->{vnets};
@@ -204,7 +204,7 @@ sub status {
     my $err_config = undef;
 
     my $local_version = PVE::Network::SDN::Zones::read_etc_network_config_version();
-    my $cfg = PVE::Network::SDN::config();
+    my $cfg = PVE::Network::SDN::running_config();
     my $sdn_version = $cfg->{version};
 
     return if !$sdn_version;
@@ -227,7 +227,6 @@ sub status {
 
     my $status = ifquery_check();
 
-    
     my $vnet_cfg = $cfg->{vnets};
     my $zone_cfg = $cfg->{zones};
     my $nodename = PVE::INotify::nodename();
@@ -242,9 +241,16 @@ sub status {
     foreach my $id (sort keys %{$vnet_cfg->{ids}}) {
        my $vnet = $vnet_cfg->{ids}->{$id};
        my $zone = $vnet->{zone};
-       next if !$zone;
+       next if !defined($zone);
 
        my $plugin_config = $zone_cfg->{ids}->{$zone};
+
+       if (!defined($plugin_config)) {
+           $vnet_status->{$id}->{status} = 'error';
+           $vnet_status->{$id}->{statusmsg} = "unknown zone '$zone' configured";
+           next;
+       }
+
        next if defined($plugin_config->{nodes}) && !$plugin_config->{nodes}->{$nodename};
 
        $vnet_status->{$id}->{zone} = $zone;