- #generate configuration
- my $config = {};
-
- foreach my $id (keys %{$sdn_cfg->{ids}}) {
- my $plugin_config = $sdn_cfg->{ids}->{$id};
- my $plugin = PVE::Network::SDN::Plugin->lookup($plugin_config->{type});
- my $pd = $plugin->plugindata();
- my $role = $pd->{role};
- if ($role eq 'controller') {
- $plugin->generate_controller_config($plugin_config, $plugin_config, $id, $uplinks, $config);
- } elsif ($role eq 'transport') {
- my $controllerid = $plugin_config->{controller};
- if ($controllerid) {
- my $controller = $sdn_cfg->{ids}->{$controllerid};
- if ($controller) {
- my $controller_plugin = PVE::Network::SDN::Plugin->lookup($controller->{type});
- $controller_plugin->generate_controller_transport_config($plugin_config, $controller, $id, $uplinks, $config);
- }
- }
- } elsif ($role eq 'vnet') {
- my $transportid = $plugin_config->{transportzone};
- if ($transportid) {
- my $transport = $sdn_cfg->{ids}->{$transportid};
- if ($transport) {
- my $controllerid = $transport->{controller};
- if ($controllerid) {
- my $controller = $sdn_cfg->{ids}->{$controllerid};
- if ($controller) {
- my $controller_plugin = PVE::Network::SDN::Plugin->lookup($controller->{type});
- $controller_plugin->generate_controller_vnet_config($plugin_config, $controller, $transportid, $id, $config);
- }
- }
- }
- }
- }