From: Alexandre Derumier Date: Fri, 3 May 2019 09:00:17 +0000 (+0200) Subject: vnet: update_hook: verify if tag already exist in another vnet X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=6a2db30ae8a70bc201d818a22f3ca56cee0028ff;p=mirror%2Fpve-network.git vnet: update_hook: verify if tag already exist in another vnet Signed-off-by: Alexandre Derumier --- diff --git a/PVE/API2/Network/Network.pm b/PVE/API2/Network/Network.pm index 6ea8fe2..d199234 100644 --- a/PVE/API2/Network/Network.pm +++ b/PVE/API2/Network/Network.pm @@ -137,7 +137,7 @@ __PACKAGE__->register_method ({ } $cfg->{ids}->{$networkid} = $opts; - $plugin->on_update_hook($networkid, $scfg); + $plugin->on_update_hook($networkid, $cfg); PVE::Network::Network::write_config($cfg); @@ -179,7 +179,7 @@ __PACKAGE__->register_method ({ $scfg->{$k} = $opts->{$k}; } - $plugin->on_update_hook($networkid, $scfg); + $plugin->on_update_hook($networkid, $cfg); PVE::Network::Network::write_config($cfg); diff --git a/PVE/Network/Network/VnetPlugin.pm b/PVE/Network/Network/VnetPlugin.pm index b2080e1..593e475 100644 --- a/PVE/Network/Network/VnetPlugin.pm +++ b/PVE/Network/Network/VnetPlugin.pm @@ -107,10 +107,18 @@ sub on_delete_hook { } sub on_update_hook { - my ($class, $networkid, $scfg) = @_; - + my ($class, $networkid, $network_cfg) = @_; # verify that tag is not already defined in another vnet - + if (defined($network_cfg->{ids}->{$networkid}->{tag})) { + my $tag = $network_cfg->{ids}->{$networkid}->{tag}; + foreach my $id (keys %{$network_cfg->{ids}}) { + next if $id eq $networkid; + my $network = $network_cfg->{ids}->{$id}; + if ($network->{type} eq 'vnet' && defined($network->{tag})) { + die "tag $tag already exist in vnet $id" if $tag eq $network->{tag}; + } + } + } } sub read_cluster_vm_config {