use PVE::Network::SDN::Zones::VxlanPlugin;
use PVE::Network::SDN::Zones::EvpnPlugin;
use PVE::Network::SDN::Zones::FaucetPlugin;
+use PVE::Network::SDN::Zones::SimplePlugin;
use PVE::Network::SDN::Zones::Plugin;
PVE::Network::SDN::Zones::VlanPlugin->register();
PVE::Network::SDN::Zones::VxlanPlugin->register();
PVE::Network::SDN::Zones::EvpnPlugin->register();
PVE::Network::SDN::Zones::FaucetPlugin->register();
+PVE::Network::SDN::Zones::SimplePlugin->register();
PVE::Network::SDN::Zones::Plugin->init();
my $local_network_sdn_file = "/etc/network/interfaces.d/sdn";
return $cmdname eq 'add' ? [] : [ PVE::Network::SDN::sdn_zones_ids($cfg) ];
}
+sub get_zone {
+ my ($zoneid, $running) = @_;
+
+ my $cfg = {};
+ if($running) {
+ my $cfg = PVE::Network::SDN::config();
+ $cfg = $cfg->{vnets};
+ } else {
+ $cfg = PVE::Network::SDN::Zones::config();
+ }
+
+ my $zone = PVE::Network::SDN::Zones::sdn_zones_config($cfg, $zoneid, 1);
+
+ return $zone;
+}
+
sub generate_etc_network_config {
- my $version = PVE::Cluster::cfs_read_file('sdn/.version');
- 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');
+ my $cfg = PVE::Network::SDN::config();
+
+ my $version = $cfg->{version};
+ my $vnet_cfg = $cfg->{vnets};
+ my $zone_cfg = $cfg->{zones};
+ my $subnet_cfg = $cfg->{subnets};
+ my $controller_cfg = $cfg->{controllers};
return if !$vnet_cfg && !$zone_cfg;
my $interfaces_config = PVE::INotify::read_file('interfaces');
my $plugin = PVE::Network::SDN::Zones::Plugin->lookup($plugin_config->{type});
eval {
- $plugin->generate_sdn_config($plugin_config, $zone, $id, $vnet, $controller, $interfaces_config, $config);
+ $plugin->generate_sdn_config($plugin_config, $zone, $id, $vnet, $controller, $subnet_cfg, $interfaces_config, $config);
};
if (my $err = $@) {
warn "zone $zone : vnet $id : $err\n";
my $err_config = undef;
my $local_version = PVE::Network::SDN::Zones::read_etc_network_config_version();
- my $sdn_version = PVE::Cluster::cfs_read_file('sdn/.version');
+ my $cfg = PVE::Network::SDN::config();
+ my $sdn_version = $cfg->{version};
return if !$sdn_version;
my $status = ifquery_check();
- my $vnet_cfg = PVE::Cluster::cfs_read_file('sdn/vnets.cfg');
- my $zone_cfg = PVE::Cluster::cfs_read_file('sdn/zones.cfg');
+
+ my $vnet_cfg = $cfg->{vnets};
+ my $zone_cfg = $cfg->{zones};
my $nodename = PVE::INotify::nodename();
my $vnet_status = {};
my $zone_status = {};
- foreach my $id (sort keys %{$zone_cfg->{ids}}) {
- $zone_status->{$id}->{status} = 'available';
- if($err_config) {
- $zone_status->{$id}->{status} = 'pending';
- next;
- }
+ for my $id (sort keys %{$zone_cfg->{ids}}) {
+ $zone_status->{$id}->{status} = $err_config ? 'pending' : 'available';
}
foreach my $id (sort keys %{$vnet_cfg->{ids}}) {
$vnet_status->{$id}->{zone} = $zone;
$vnet_status->{$id}->{status} = 'available';
- if($err_config) {
+ if ($err_config) {
$vnet_status->{$id}->{status} = 'pending';
$vnet_status->{$id}->{statusmsg} = $err_config;
next;
}
}
- return($zone_status, $vnet_status);
+ return ($zone_status, $vnet_status);
}
sub tap_create {
my ($iface, $bridge) = @_;
- my $vnet = PVE::Network::SDN::Vnets::get_vnet($bridge);
+ my $vnet = PVE::Network::SDN::Vnets::get_vnet($bridge, 1);
if (!$vnet) { # fallback for classic bridge
PVE::Network::tap_create($iface, $bridge);
return;
sub veth_create {
my ($veth, $vethpeer, $bridge, $hwaddr) = @_;
- my $vnet = PVE::Network::SDN::Vnets::get_vnet($bridge);
+ my $vnet = PVE::Network::SDN::Vnets::get_vnet($bridge, 1);
if (!$vnet) { # fallback for classic bridge
PVE::Network::veth_create($veth, $vethpeer, $bridge, $hwaddr);
return;
sub tap_plug {
my ($iface, $bridge, $tag, $firewall, $trunks, $rate) = @_;
- my $vnet = PVE::Network::SDN::Vnets::get_vnet($bridge);
+ my $vnet = PVE::Network::SDN::Vnets::get_vnet($bridge, 1);
if (!$vnet) { # fallback for classic bridge
PVE::Network::tap_plug($iface, $bridge, $tag, $firewall, $trunks, $rate);
return;