]> git.proxmox.com Git - pve-common.git/blobdiff - test/etc_network_interfaces/t.ovs_bridge_allow.pl
importing etc_network_interfaces tests
[pve-common.git] / test / etc_network_interfaces / t.ovs_bridge_allow.pl
diff --git a/test/etc_network_interfaces/t.ovs_bridge_allow.pl b/test/etc_network_interfaces/t.ovs_bridge_allow.pl
new file mode 100644 (file)
index 0000000..7a0b8ce
--- /dev/null
@@ -0,0 +1,116 @@
+use strict;
+
+my $ip = '192.168.0.100';
+my $nm = '255.255.255.0';
+my $gw = '192.168.0.1';
+
+# replace proc_net_dev with one with a bunch of interfaces
+save('proc_net_dev', <<'/proc/net/dev');
+eth0:
+eth1:
+eth2:
+eth3:
+/proc/net/dev
+
+r('');
+
+new_iface('vmbr0', 'OVSBridge',
+    [ { family => 'inet',
+        address => $ip,
+        netmask => $nm,
+        gateway => $gw } ],
+    autostart => 1);
+
+update_iface('eth0', [], autostart => 1);
+update_iface('eth1', [], autostart => 1);
+update_iface('eth2', [], autostart => 1);
+#update_iface('eth3', [], autostart => 1);
+
+# Check the bridge and eth interfaces
+expect load('loopback') . <<"/etc/network/interfaces";
+auto eth0
+iface eth0 inet manual
+
+auto eth1
+iface eth1 inet manual
+
+auto eth2
+iface eth2 inet manual
+
+iface eth3 inet manual
+
+auto vmbr0
+iface vmbr0 inet static
+       address  $ip
+       netmask  $nm
+       gateway  $gw
+       ovs_type OVSBridge
+
+/etc/network/interfaces
+
+# Adding an interface to the bridge needs to add allow- lines:
+update_iface('vmbr0', [], ovs_ports => 'eth1 eth2');
+expect load('loopback') . <<"/etc/network/interfaces";
+auto eth0
+iface eth0 inet manual
+
+auto eth1
+allow-vmbr0 eth1
+iface eth1 inet manual
+       ovs_type OVSPort
+       ovs_bridge vmbr0
+
+auto eth2
+allow-vmbr0 eth2
+iface eth2 inet manual
+       ovs_type OVSPort
+       ovs_bridge vmbr0
+
+iface eth3 inet manual
+
+auto vmbr0
+iface vmbr0 inet static
+       address  $ip
+       netmask  $nm
+       gateway  $gw
+       ovs_type OVSBridge
+       ovs_ports eth1 eth2
+
+/etc/network/interfaces
+
+# Idempotency - make sure "allow-$BRIDGE $IFACE" don't get duplicated
+# they're stripped from $config->{options} at load-time since they're
+# auto-generated when writing OVSPorts.
+save('idem', w());
+r(load('idem'));
+expect load('idem');
+
+# Removing an ovs_port also has to remove the corresponding allow- line!
+# Also remember that adding interfaces to the ovs bridge removed their
+# autostart property, so eth2 is now without an autostart!
+update_iface('vmbr0', [], ovs_ports => 'eth1');
+# eth2 is now autoremoved and thus loses its priority, so it appears after eth3
+expect load('loopback') . <<"/etc/network/interfaces";
+auto eth0
+iface eth0 inet manual
+
+allow-vmbr0 eth1
+iface eth1 inet manual
+       ovs_type OVSPort
+       ovs_bridge vmbr0
+
+iface eth3 inet manual
+
+iface eth2 inet manual
+
+auto vmbr0
+iface vmbr0 inet static
+       address  $ip
+       netmask  $nm
+       gateway  $gw
+       ovs_type OVSBridge
+       ovs_ports eth1
+
+/etc/network/interfaces
+
+1;