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

Merge branch 'feature-863'

This commit is contained in:
Ruben S. Montero 2011-12-07 12:03:19 +01:00
commit 0bf92a0f22
5 changed files with 139 additions and 21 deletions

View File

@ -99,10 +99,10 @@ class OneVMHelper < OpenNebulaHelper::OneHelper
CLIHelper.print_header(str_h1 % "VIRTUAL MACHINE TEMPLATE",false)
puts vm.template_str
if vm.has_elements?("/VM/HISTORY_RECORDS/")
if vm.has_elements?("/VM/HISTORY_RECORDS")
puts
CLIHelper.print_header(str_h1 % "VIRTUAL MACHINE HISTORY",false)
format_history(vm)
end

View File

@ -64,7 +64,8 @@ class OpenNebulaHM < OpenNebulaNetwork
def device_exists?(dev, vlan=nil)
dev = "#{dev}.#{vlan}" if vlan
OpenNebula.exec_and_log("#{COMMANDS[:ip]} link show #{dev}")
`#{COMMANDS[:ip]} link show #{dev}`
$?.exitstatus == 0
end
def create_dev_vlan(dev, vlan)

View File

@ -1,10 +1,10 @@
#!/usr/bin/env ruby
$: << File.dirname(__FILE__) + '/..'
$: << File.dirname(__FILE__) + '/../ebtables'
$: << File.dirname(__FILE__) + '/../802.1Q'
$: << File.dirname(__FILE__) + '/../ovswitch'
$: << File.dirname(__FILE__) + '/../../../mad/ruby'
$: << File.dirname(__FILE__) + '/..'
$: << File.dirname(__FILE__) + '/../ebtables'
$: << File.dirname(__FILE__) + '/../802.1Q'
$: << File.dirname(__FILE__) + '/../ovswitch'
$: << File.dirname(__FILE__) + '/../../../mad/ruby'
$: << './'
$: << File.dirname(__FILE__)
$: << File.join(File.dirname(__FILE__), '..')
@ -159,34 +159,35 @@ end
describe 'host-managed' do
it "tag tun/tap devices with vlans in kvm" do
$capture_commands = {
/virsh.*dumpxml/ => OUTPUT[:virsh_dumpxml_phydev],
/virsh.*dumpxml/ => nil,
/brctl show/ => OUTPUT[:brctl_show],
/brctl add/ => nil,
/brctl add/ => nil,
/vconfig/ => nil,
/ip link/ => nil
/ip link set/ => nil,
/ip link show/ => [nil,255]
}
hm = OpenNebulaHM.new(OUTPUT[:onevm_show_phydev_kvm],"kvm")
hm.activate
hm_activate_rules = ["sudo /sbin/brctl addbr onebr6",
"sudo /sbin/ip link set onebr6 up",
"sudo /sbin/ip link show eth0.8",
"sudo /sbin/vconfig add eth0 8",
"sudo /sbin/ip link set eth0.8 up",
"sudo /sbin/brctl addif onebr6 eth0.8"]
hm_activate_rules.map{|c| c + " 2>&1 1>/dev/null"}.each do |cmd|
$collector[:backtick].include?(cmd).should == true
hm_activate_rules.each do |cmd|
$collector[:backtick].grep(Regexp.new("^"+cmd)).length.should >= 1
end
end
it "force VLAN_ID for vlans in kvm" do
$capture_commands = {
/virsh.*dumpxml/ => OUTPUT[:virsh_dumpxml_vlan_id],
/virsh.*dumpxml/ => nil,
/brctl show/ => OUTPUT[:brctl_show],
/brctl add/ => nil,
/vconfig/ => nil,
/ip link/ => nil
/ip link set/ => nil,
/ip link show/ => [nil,255]
}
hm = OpenNebulaHM.new(OUTPUT[:onevm_show_vlan_id_kvm],"kvm")
hm.activate
@ -204,8 +205,36 @@ describe 'host-managed' do
"sudo /sbin/ip link set eth0.51 up",
"sudo /sbin/brctl addif specialbr eth0.51"]
hm_vlan_id.map{|c| c + " 2>&1 1>/dev/null"}.each do |cmd|
$collector[:backtick].include?(cmd).should == true
hm_vlan_id.each do |cmd|
$collector[:backtick].grep(Regexp.new("^"+cmd)).length.should >= 1
end
end
it "ignore interfaces that don't have vlan=yes" do
$capture_commands = {
/virsh.*dumpxml/ => nil,
/brctl show/ => OUTPUT[:brctl_show],
/brctl add/ => nil,
/vconfig/ => nil,
/ip link set/ => nil,
/ip link show/ => [nil,255]
}
hm = OpenNebulaHM.new(OUTPUT[:onevm_show_mixed],"kvm")
hm.activate
hm_vlan_tag = [ "sudo /sbin/brctl show",
"sudo /sbin/brctl addbr onebr1",
"sudo /sbin/ip link set onebr1 up",
"sudo /sbin/ip link show eth0.50",
"sudo /sbin/vconfig add eth0 50",
"sudo /sbin/ip link set eth0.50 up",
"sudo /sbin/brctl addif onebr1 eth0.50" ]
hm_vlan_tag.each do |cmd|
$collector[:backtick].grep(Regexp.new("^"+cmd)).length.should >= 1
end
end
end

View File

@ -2,9 +2,16 @@ module SystemMock
def execute_cmd(cmd)
if $capture_commands
$capture_commands.each do |regex, output|
$capture_commands.each do |regex, params|
code = nil
if params.instance_of? Array
output, code = params
else
output = params
end
code ||= 0
if cmd.match(regex)
Kernel.send(:`,":;exit 0")
Kernel.send(:`,":;exit #{code}")
return output
end
end

View File

@ -0,0 +1,81 @@
<VM>
<ID>12</ID>
<UID>0</UID>
<GID>0</GID>
<UNAME>oneadmin</UNAME>
<GNAME>oneadmin</GNAME>
<NAME>ttylinux</NAME>
<LAST_POLL>1323096916</LAST_POLL>
<STATE>3</STATE>
<LCM_STATE>3</LCM_STATE>
<STIME>1323096908</STIME>
<ETIME>0</ETIME>
<DEPLOY_ID>one-12</DEPLOY_ID>
<MEMORY>0</MEMORY>
<CPU>0</CPU>
<NET_TX>0</NET_TX>
<NET_RX>0</NET_RX>
<TEMPLATE>
<CPU><![CDATA[0.1]]></CPU>
<DISK>
<CLONE><![CDATA[YES]]></CLONE>
<DISK_ID><![CDATA[0]]></DISK_ID>
<IMAGE><![CDATA[ttylinux]]></IMAGE>
<IMAGE_ID><![CDATA[0]]></IMAGE_ID>
<READONLY><![CDATA[NO]]></READONLY>
<SAVE><![CDATA[NO]]></SAVE>
<SOURCE><![CDATA[/var/lib/one/images/d7d95d4043b690b58f36f88a34910e44]]></SOURCE>
<TARGET><![CDATA[hda]]></TARGET>
<TYPE><![CDATA[DISK]]></TYPE>
</DISK>
<FEATURES>
<ACPI><![CDATA[no]]></ACPI>
</FEATURES>
<GRAPHICS>
<LISTEN><![CDATA[0.0.0.0]]></LISTEN>
<PORT><![CDATA[5900]]></PORT>
<TYPE><![CDATA[vnc]]></TYPE>
</GRAPHICS>
<MEMORY><![CDATA[64]]></MEMORY>
<NAME><![CDATA[ttylinux]]></NAME>
<NIC>
<BRIDGE><![CDATA[br0]]></BRIDGE>
<IP><![CDATA[172.16.0.201]]></IP>
<MAC><![CDATA[02:00:ac:10:00:c9]]></MAC>
<NETWORK><![CDATA[net_172]]></NETWORK>
<NETWORK_ID><![CDATA[0]]></NETWORK_ID>
<VLAN><![CDATA[NO]]></VLAN>
</NIC>
<NIC>
<BRIDGE><![CDATA[onebr1]]></BRIDGE>
<IP><![CDATA[10.0.0.250]]></IP>
<MAC><![CDATA[02:00:0a:00:00:fa]]></MAC>
<NETWORK><![CDATA[vlan50]]></NETWORK>
<NETWORK_ID><![CDATA[1]]></NETWORK_ID>
<PHYDEV><![CDATA[eth0]]></PHYDEV>
<VLAN><![CDATA[YES]]></VLAN>
<VLAN_ID><![CDATA[50]]></VLAN_ID>
</NIC>
<VMID><![CDATA[12]]></VMID>
</TEMPLATE>
<HISTORY_RECORDS>
<HISTORY>
<SEQ>0</SEQ>
<HOSTNAME>localhost</HOSTNAME>
<VM_DIR>/var/lib/one/</VM_DIR>
<HID>1</HID>
<STIME>1323096914</STIME>
<ETIME>0</ETIME>
<VMMMAD>vmm_kvm</VMMMAD>
<VNMMAD>802.1Q</VNMMAD>
<TMMAD>tm_shared</TMMAD>
<PSTIME>1323096914</PSTIME>
<PETIME>1323096914</PETIME>
<RSTIME>1323096914</RSTIME>
<RETIME>0</RETIME>
<ESTIME>0</ESTIME>
<EETIME>0</EETIME>
<REASON>0</REASON>
</HISTORY>
</HISTORY_RECORDS>
</VM>