From 908d5e137c458139fe2e09769a3f50790d8c5021 Mon Sep 17 00:00:00 2001 From: Jaime Melis Date: Mon, 5 Dec 2011 16:57:25 +0100 Subject: [PATCH 1/3] feature #863: fix minor typo in xpath --- src/cli/one_helper/onevm_helper.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/cli/one_helper/onevm_helper.rb b/src/cli/one_helper/onevm_helper.rb index 1ecdd0ac87..02a0d838e0 100644 --- a/src/cli/one_helper/onevm_helper.rb +++ b/src/cli/one_helper/onevm_helper.rb @@ -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 From d7853c4a000ec15f1937deae7733fcff29d2a53d Mon Sep 17 00:00:00 2001 From: Jaime Melis Date: Mon, 5 Dec 2011 16:58:34 +0100 Subject: [PATCH 2/3] feature #863: don't use exec_and_log for commands that may fail --- src/vnm_mad/remotes/802.1Q/HostManaged.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/vnm_mad/remotes/802.1Q/HostManaged.rb b/src/vnm_mad/remotes/802.1Q/HostManaged.rb index 47a65a3cce..28e9a602be 100644 --- a/src/vnm_mad/remotes/802.1Q/HostManaged.rb +++ b/src/vnm_mad/remotes/802.1Q/HostManaged.rb @@ -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) From 6aca0412d2ae6265167b0d08057f983901e0b8ed Mon Sep 17 00:00:00 2001 From: Jaime Melis Date: Mon, 5 Dec 2011 16:59:31 +0100 Subject: [PATCH 3/3] feature #863: add a test for vlan tag and fix other tests --- .../remotes/test/OpenNebulaNetwork_spec.rb | 59 ++++++++++---- src/vnm_mad/remotes/test/SystemMock.rb | 11 ++- .../remotes/test/output/onevm_show_mixed | 81 +++++++++++++++++++ 3 files changed, 134 insertions(+), 17 deletions(-) create mode 100644 src/vnm_mad/remotes/test/output/onevm_show_mixed diff --git a/src/vnm_mad/remotes/test/OpenNebulaNetwork_spec.rb b/src/vnm_mad/remotes/test/OpenNebulaNetwork_spec.rb index c06453ffb0..b97942055e 100644 --- a/src/vnm_mad/remotes/test/OpenNebulaNetwork_spec.rb +++ b/src/vnm_mad/remotes/test/OpenNebulaNetwork_spec.rb @@ -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 diff --git a/src/vnm_mad/remotes/test/SystemMock.rb b/src/vnm_mad/remotes/test/SystemMock.rb index 6e83e85411..e1447a4ff3 100644 --- a/src/vnm_mad/remotes/test/SystemMock.rb +++ b/src/vnm_mad/remotes/test/SystemMock.rb @@ -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 diff --git a/src/vnm_mad/remotes/test/output/onevm_show_mixed b/src/vnm_mad/remotes/test/output/onevm_show_mixed new file mode 100644 index 0000000000..a45abbf003 --- /dev/null +++ b/src/vnm_mad/remotes/test/output/onevm_show_mixed @@ -0,0 +1,81 @@ + + 12 + 0 + 0 + oneadmin + oneadmin + ttylinux + 1323096916 + 3 + 3 + 1323096908 + 0 + one-12 + 0 + 0 + 0 + 0 + + + + 0 + localhost + /var/lib/one/ + 1 + 1323096914 + 0 + vmm_kvm + 802.1Q + tm_shared + 1323096914 + 1323096914 + 1323096914 + 0 + 0 + 0 + 0 + + +