From e33794cfd56fc4d923ca28b4fc3628845d34261a Mon Sep 17 00:00:00 2001 From: Jaime Melis Date: Fri, 24 Jun 2011 12:30:35 +0200 Subject: [PATCH] feature #476: set device up in host-managed vlan hook. Plus tests. --- src/vnm_mad/HostManaged.rb | 10 +++++- src/vnm_mad/test/OpenNebulaNetwork_spec.rb | 18 ++++++++++ src/vnm_mad/test/output/brctl_show | 4 +++ src/vnm_mad/test/output/virsh_dumpxml_phydev | 38 ++++++++++++++++++++ 4 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 src/vnm_mad/test/output/brctl_show create mode 100644 src/vnm_mad/test/output/virsh_dumpxml_phydev diff --git a/src/vnm_mad/HostManaged.rb b/src/vnm_mad/HostManaged.rb index d6930d0d1b..8994d8e452 100644 --- a/src/vnm_mad/HostManaged.rb +++ b/src/vnm_mad/HostManaged.rb @@ -31,7 +31,10 @@ class OpenNebulaHM < OpenNebulaNetwork create_bridge bridge if !bridge_exists? bridge - create_dev_vlan(dev, vlan) if !device_exists?(dev, vlan) + if !device_exists?(dev, vlan) + create_dev_vlan(dev, vlan) + ifup(dev, vlan) + end if !attached_bridge_dev?(bridge, dev, vlan) attach_brigde_dev(bridge, dev, vlan) @@ -73,4 +76,9 @@ class OpenNebulaHM < OpenNebulaNetwork dev = "#{dev}.#{vlan}" if vlan system("#{COMMANDS[:brctl]} addif #{bridge} #{dev}") end + + def ifup(dev, vlan=nil) + dev = "#{dev}.#{vlan}" if vlan + system("#{COMMANDS[:ip]} set #{dev} up") + end end diff --git a/src/vnm_mad/test/OpenNebulaNetwork_spec.rb b/src/vnm_mad/test/OpenNebulaNetwork_spec.rb index 48738eff55..e76bc170c3 100644 --- a/src/vnm_mad/test/OpenNebulaNetwork_spec.rb +++ b/src/vnm_mad/test/OpenNebulaNetwork_spec.rb @@ -132,3 +132,21 @@ describe 'firewall' do $collector[:system].should == fw_activate_rules end end + +describe 'host-managed' do + it "tag tun/tap devices with vlans in kvm" do + $capture_commands = { + /virsh.*dumpxml/ => OUTPUT[:virsh_dumpxml_phydev], + /brctl show/ => OUTPUT[:brctl_show] + } + hm = OpenNebulaHM.new(OUTPUT[:onevm_show_phydev_kvm],"kvm") + hm.activate + + hm_activate_rules = ["sudo /usr/sbin/brctl addbr onebr6", + "sudo /sbin/ip link show eth0.8", + "sudo /sbin/vconfig add eth0 8", + "sudo /sbin/ip set eth0.8 up", + "sudo /usr/sbin/brctl addif onebr6 eth0.8"] + $collector[:system].should == hm_activate_rules + end +end diff --git a/src/vnm_mad/test/output/brctl_show b/src/vnm_mad/test/output/brctl_show new file mode 100644 index 0000000000..86594d596e --- /dev/null +++ b/src/vnm_mad/test/output/brctl_show @@ -0,0 +1,4 @@ +bridge name bridge id STP enabled interfaces +bpriv 8000.00238bcea87c no eth0 + vnet0 +bpub 8000.00238bcea87d no eth1 diff --git a/src/vnm_mad/test/output/virsh_dumpxml_phydev b/src/vnm_mad/test/output/virsh_dumpxml_phydev new file mode 100644 index 0000000000..50d2a064d8 --- /dev/null +++ b/src/vnm_mad/test/output/virsh_dumpxml_phydev @@ -0,0 +1,38 @@ + + one-9 + 9912b565-2d3b-f4ca-17d2-425395b57e64 + 65536 + 65536 + 1 + + hvm + + + + destroy + restart + destroy + + /usr/bin/kvm + + + + + + + + + + + + + + + + + + + libvirt-9912b565-2d3b-f4ca-17d2-425395b57e64 + + +