use Storable qw(dclone);
use PVE::JSONSchema qw(get_standard_option);
use PVE::RPCEnvironment;
+use PVE::Exception qw(raise raise_param_exc);
use PVE::RESTHandler;
my $plugin = PVE::Network::SDN::Zones::Plugin->lookup($plugin_config->{type});
$plugin->vnet_update_hook($cfg->{ids}->{$id});
- my $subnet_cfg = PVE::Network::SDN::Subnets::config();
-
- PVE::Network::SDN::VnetPlugin->on_update_hook($id, $cfg, $subnet_cfg);
+ PVE::Network::SDN::VnetPlugin->on_update_hook($id, $cfg);
PVE::Network::SDN::Vnets::write_config($cfg);
PVE::SectionConfig::assert_if_modified($cfg, $digest);
+
my $opts = PVE::Network::SDN::VnetPlugin->check_config($id, $param, 0, 1);
+ raise_param_exc({ zone => "missing zone"}) if !$opts->{zone};
+ my $subnets = PVE::Network::SDN::Vnets::get_subnets($id);
+ raise_param_exc({ zone => "can't change zone if subnets exists"}) if($subnets && $opts->{zone} ne $cfg->{ids}->{$id}->{zone});
+
$cfg->{ids}->{$id} = $opts;
my $zone_cfg = PVE::Network::SDN::Zones::config();
my $plugin = PVE::Network::SDN::Zones::Plugin->lookup($plugin_config->{type});
$plugin->vnet_update_hook($cfg->{ids}->{$id});
- my $subnet_cfg = PVE::Network::SDN::Subnets::config();
-
- PVE::Network::SDN::VnetPlugin->on_update_hook($id, $cfg, $subnet_cfg);
+ PVE::Network::SDN::VnetPlugin->on_update_hook($id, $cfg);
PVE::Network::SDN::Vnets::write_config($cfg);