]> git.proxmox.com Git - pve-network.git/commitdiff
vlan, vxlan plugin : add on_delete_hook
authorAlexandre Derumier <aderumier@odiso.com>
Mon, 6 May 2019 12:47:12 +0000 (14:47 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Wed, 8 May 2019 06:02:28 +0000 (08:02 +0200)
verify that a vnet is not using this transport

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
PVE/API2/Network/Network.pm
PVE/Network/Network/VlanPlugin.pm
PVE/Network/Network/VnetPlugin.pm
PVE/Network/Network/VxlanMulticastPlugin.pm

index 3dd0a57c33ab1590b1df0344ec5c9390964060a4..524c6c304cc861ded87cb0b278524c6a1f3b674f 100644 (file)
@@ -234,7 +234,7 @@ __PACKAGE__->register_method ({
                my $scfg = PVE::Network::Network::network_config($cfg, $networkid);
 
                my $plugin = PVE::Network::Network::Plugin->lookup($scfg->{type});
-               $plugin->on_delete_hook($networkid, $scfg);
+               $plugin->on_delete_hook($networkid, $cfg);
 
                delete $cfg->{ids}->{$networkid};
                PVE::Network::Network::write_config($cfg);
index 4f553abd25bbdfa93388b6aabb9bbf82ebe16483..affa27431de4f59d776df51ce90927cbe64c86e5 100644 (file)
@@ -99,9 +99,14 @@ sub generate_network_config {
 }
 
 sub on_delete_hook {
-    my ($class, $networkid, $scfg) = @_;
+    my ($class, $transportid, $network_cfg) = @_;
 
-    # verify that no vnet are associated to this transport  
+    # verify that no vnet are associated to this transport
+    foreach my $id (keys %{$network_cfg->{ids}}) {
+       my $network = $network_cfg->{ids}->{$id};
+       die "transport $transportid is used by vnet $id"
+           if ($network->{type} eq 'vnet' && defined($network->{transportzone}) && $network->{transportzone} eq $transportid);
+    }
 }
 
 sub on_update_hook {
index 593e475e4fd79c7aced8b99990481f1a8659f1d7..b255691c102aded0ea98dc763d1c1732b9b1dcf9 100644 (file)
@@ -81,7 +81,7 @@ sub options {
 }
 
 sub on_delete_hook {
-    my ($class, $networkid, $scfg) = @_;
+    my ($class, $networkid, $network_cfg) = @_;
 
     # verify than no vm or ct have interfaces in this bridge
     my $vmdata = read_cluster_vm_config();
index d6cc4f68cd49ac2bca2067b2fde37111d763d5b4..f71094aaf27faf46df696ccfd59a047634344168 100644 (file)
@@ -84,9 +84,14 @@ sub generate_network_config {
 }
 
 sub on_delete_hook {
-    my ($class, $networkid, $scfg) = @_;
+    my ($class, $transportid, $network_cfg) = @_;
 
     # verify that no vnet are associated to this transport
+    foreach my $id (keys %{$network_cfg->{ids}}) {
+       my $network = $network_cfg->{ids}->{$id};
+       die "transport $transportid is used by vnet $id" 
+           if ($network->{type} eq 'vnet' && defined($network->{transportzone}) && $network->{transportzone} eq $transportid);
+    }
 }
 
 sub on_update_hook {