]> git.proxmox.com Git - pve-network.git/blobdiff - PVE/Network/SDN/Controllers.pm
api: generate 'running-config' state instead of version increase on apply
[pve-network.git] / PVE / Network / SDN / Controllers.pm
index 827c715c2c539520806da1fb5086ed618748ca66..c210516a808f57ef374f3328caf5fbcea96b86f7 100644 (file)
@@ -26,13 +26,13 @@ sub sdn_controllers_config {
     die "no sdn controller ID specified\n" if !$id;
 
     my $scfg = $cfg->{ids}->{$id};
-    die "sdn '$id' does not exists\n" if (!$noerr && !$scfg);
+    die "sdn '$id' does not exist\n" if (!$noerr && !$scfg);
 
     return $scfg;
 }
 
 sub config {
-    my $config = cfs_read_file("sdn/controllers.cfg.new");
+    my $config = cfs_read_file("sdn/controllers.cfg");
     $config = cfs_read_file("sdn/controllers.cfg") if !keys %{$config->{ids}};
     return $config;
 }
@@ -40,13 +40,13 @@ sub config {
 sub write_config {
     my ($cfg) = @_;
 
-    cfs_write_file("sdn/controllers.cfg.new", $cfg);
+    cfs_write_file("sdn/controllers.cfg", $cfg);
 }
 
 sub lock_sdn_controllers_config {
     my ($code, $errmsg) = @_;
 
-    cfs_lock_file("sdn/controllers.cfg.new", undef, $code);
+    cfs_lock_file("sdn/controllers.cfg", undef, $code);
     if (my $err = $@) {
         $errmsg ? die "$errmsg: $err" : die $err;
     }
@@ -68,10 +68,12 @@ sub complete_sdn_controller {
 
 sub generate_controller_config {
 
-    my $vnet_cfg = PVE::Cluster::cfs_read_file('sdn/vnets.cfg');
-    my $transport_cfg = PVE::Cluster::cfs_read_file('sdn/zones.cfg');
-    my $controller_cfg = PVE::Cluster::cfs_read_file('sdn/controllers.cfg');
-    return if !$vnet_cfg && !$transport_cfg && !$controller_cfg;
+    my $cfg = PVE::Network::SDN::config();
+    my $vnet_cfg = $cfg->{vnets};
+    my $zone_cfg = $cfg->{zones};
+    my $controller_cfg = $cfg->{controllers};
+
+    return if !$vnet_cfg && !$zone_cfg && !$controller_cfg;
 
     #read main config for physical interfaces
     my $current_config_file = "/etc/network/interfaces";
@@ -99,29 +101,29 @@ sub generate_controller_config {
        $plugin->generate_controller_config($plugin_config, $plugin_config, $id, $uplinks, $config);
     }
 
-    foreach my $id (keys %{$transport_cfg->{ids}}) {
-       my $plugin_config = $transport_cfg->{ids}->{$id};
+    foreach my $id (keys %{$zone_cfg->{ids}}) {
+       my $plugin_config = $zone_cfg->{ids}->{$id};
        my $controllerid = $plugin_config->{controller};
        next if !$controllerid;
-       my $controller = $transport_cfg->{ids}->{$controllerid};
+       my $controller = $controller_cfg->{ids}->{$controllerid};
        if ($controller) {
            my $controller_plugin = PVE::Network::SDN::Controllers::Plugin->lookup($controller->{type});
-           $controller_plugin->generate_controller_transport_config($plugin_config, $controller, $id, $uplinks, $config);
+           $controller_plugin->generate_controller_zone_config($plugin_config, $controller, $id, $uplinks, $config);
        }
     }
 
     foreach my $id (keys %{$vnet_cfg->{ids}}) {
        my $plugin_config = $vnet_cfg->{ids}->{$id};
-       my $transportid = $plugin_config->{zone};
-       next if !$transportid;
-       my $transport = $transport_cfg->{ids}->{$transportid};
-       next if !$transport;
-       my $controllerid = $transport->{controller};
+       my $zoneid = $plugin_config->{zone};
+       next if !$zoneid;
+       my $zone = $zone_cfg->{ids}->{$zoneid};
+       next if !$zone;
+       my $controllerid = $zone->{controller};
        next if !$controllerid;
        my $controller = $controller_cfg->{ids}->{$controllerid};
        if ($controller) {
            my $controller_plugin = PVE::Network::SDN::Controllers::Plugin->lookup($controller->{type});
-           $controller_plugin->generate_controller_vnet_config($plugin_config, $controller, $transportid, $id, $config);
+           $controller_plugin->generate_controller_vnet_config($plugin_config, $controller, $zoneid, $id, $config);
        }
     }
 
@@ -131,7 +133,9 @@ sub generate_controller_config {
 
 sub reload_controller {
 
-    my $controller_cfg = PVE::Cluster::cfs_read_file('sdn/controllers.cfg');
+    my $cfg = PVE::Network::SDN::config();
+    my $controller_cfg = $cfg->{controllers};
+
     return if !$controller_cfg;
 
     foreach my $id (keys %{$controller_cfg->{ids}}) {