1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-22 18:50:08 +03:00

feature #476: set device up in host-managed vlan hook. Plus tests.

This commit is contained in:
Jaime Melis 2011-06-24 12:30:35 +02:00
parent a991817a3a
commit e33794cfd5
4 changed files with 69 additions and 1 deletions

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,4 @@
bridge name bridge id STP enabled interfaces
bpriv 8000.00238bcea87c no eth0
vnet0
bpub 8000.00238bcea87d no eth1

View File

@ -0,0 +1,38 @@
<domain type='kvm' id='3'>
<name>one-9</name>
<uuid>9912b565-2d3b-f4ca-17d2-425395b57e64</uuid>
<memory>65536</memory>
<currentMemory>65536</currentMemory>
<vcpu>1</vcpu>
<os>
<type arch='i686' machine='pc-0.12'>hvm</type>
<boot dev='hd'/>
</os>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/srv/cloud/images/playground/jaime/9/images/disk.0'/>
<target dev='hda' bus='ide'/>
</disk>
<interface type='bridge'>
<mac address='02:00:c0:a8:00:65'/>
<source bridge='bpriv'/>
<target dev='vnet2'/>
</interface>
<interface type='bridge'>
<mac address='02:00:0a:00:00:67'/>
<source bridge='onebr6'/>
<target dev='vnet3'/>
</interface>
</devices>
<seclabel type='dynamic' model='apparmor'>
<label>libvirt-9912b565-2d3b-f4ca-17d2-425395b57e64</label>
<imagelabel>libvirt-9912b565-2d3b-f4ca-17d2-425395b57e64</imagelabel>
</seclabel>
</domain>