die "no sdn zone 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;
}
my $vnet_cfg = PVE::Cluster::cfs_read_file('sdn/vnets.cfg');
my $zone_cfg = PVE::Cluster::cfs_read_file('sdn/zones.cfg');
+ my $controller_cfg = PVE::Cluster::cfs_read_file('sdn/controllers.cfg');
return if !$vnet_cfg && !$zone_cfg;
- #read main config for physical interfaces
- my $current_config_file = "/etc/network/interfaces";
- my $fh = IO::File->new($current_config_file);
- my $interfaces_config = PVE::INotify::read_etc_network_interfaces(1,$fh);
- $fh->close();
-
- #check uplinks
- my $uplinks = {};
- foreach my $id (keys %{$interfaces_config->{ifaces}}) {
- my $interface = $interfaces_config->{ifaces}->{$id};
- if (my $uplink = $interface->{'uplink-id'}) {
- die "uplink-id $uplink is already defined on $uplinks->{$uplink}" if $uplinks->{$uplink};
- $interface->{name} = $id;
- $uplinks->{$interface->{'uplink-id'}} = $interface;
- }
- }
+ my $interfaces_config = PVE::INotify::read_file('interfaces');
#generate configuration
my $config = {};
next if defined($plugin_config->{nodes}) && !$plugin_config->{nodes}->{$nodename};
+ my $controller = undef;
+ if($plugin_config->{controller}) {
+ my $controllerid = $plugin_config->{controller};
+ $controller = $controller_cfg->{ids}->{$controllerid};
+ }
+
my $plugin = PVE::Network::SDN::Zones::Plugin->lookup($plugin_config->{type});
- $plugin->generate_sdn_config($plugin_config, $zone, $id, $vnet, $uplinks, $config);
+ $plugin->generate_sdn_config($plugin_config, $zone, $id, $vnet, $controller, $interfaces_config, $config);
}
my $raw_network_config = "";