diff --git a/src/vnm_mad/remotes/802.1Q/HostManaged.rb b/src/vnm_mad/remotes/802.1Q/HostManaged.rb index 28e9a602be..90cbff26e1 100644 --- a/src/vnm_mad/remotes/802.1Q/HostManaged.rb +++ b/src/vnm_mad/remotes/802.1Q/HostManaged.rb @@ -17,8 +17,9 @@ require 'OpenNebulaNetwork' class OpenNebulaHM < OpenNebulaNetwork + XPATH_FILTER = "TEMPLATE/NIC[VLAN='YES']" def initialize(vm, hypervisor = nil) - super(vm,hypervisor) + super(vm,XPATH_FILTER,hypervisor) @bridges = get_interfaces end diff --git a/src/vnm_mad/remotes/Firewall.rb b/src/vnm_mad/remotes/Firewall.rb index 2cc4f98eca..c139bfeabe 100644 --- a/src/vnm_mad/remotes/Firewall.rb +++ b/src/vnm_mad/remotes/Firewall.rb @@ -15,8 +15,10 @@ #--------------------------------------------------------------------------- # class OpenNebulaFirewall < OpenNebulaNetwork + XPATH_FILTER = "TEMPLATE/NIC[ICMP|WHITE_PORTS_TCP|WHITE_PORTS_UDP|" << + "BLACK_PORTS_TCP|BLACK_PORTS_UDP]" def initialize(vm, hypervisor = nil) - super(vm,hypervisor) + super(vm,XPATH_FILTER,hypervisor) end def activate vm_id = @vm['ID'] diff --git a/src/vnm_mad/remotes/OpenNebulaNetwork.rb b/src/vnm_mad/remotes/OpenNebulaNetwork.rb index a944adeb8d..284eb7a680 100644 --- a/src/vnm_mad/remotes/OpenNebulaNetwork.rb +++ b/src/vnm_mad/remotes/OpenNebulaNetwork.rb @@ -45,14 +45,15 @@ COMMANDS = { class VM attr_accessor :nics, :vm_info - def initialize(vm_root, hypervisor) - @vm_root = vm_root - @hypervisor = hypervisor - @vm_info = Hash.new + def initialize(vm_root, xpath_filter, hypervisor) + @vm_root = vm_root + @xpath_filter = xpath_filter + @hypervisor = hypervisor + @vm_info = Hash.new nics = Nics.new(@hypervisor) - @vm_root.elements.each("TEMPLATE/NIC[VLAN='YES']") do |nic_element| + @vm_root.elements.each(@xpath_filter) do |nic_element| nic = nics.new_nic nic_element.elements.each('*') do |nic_attribute| @@ -96,14 +97,14 @@ class OpenNebulaNetwork self.new(vm_xml, hypervisor) end - def initialize(vm_tpl, hypervisor=nil) + def initialize(vm_tpl, xpath_filter, hypervisor=nil) if !hypervisor @hypervisor = detect_hypervisor else @hypervisor = hypervisor end - @vm = VM.new(REXML::Document.new(vm_tpl).root, @hypervisor) + @vm = VM.new(REXML::Document.new(vm_tpl).root, xpath_filter, @hypervisor) end def process(&block) diff --git a/src/vnm_mad/remotes/ebtables/Ebtables.rb b/src/vnm_mad/remotes/ebtables/Ebtables.rb index c22ad69340..fc3dead298 100644 --- a/src/vnm_mad/remotes/ebtables/Ebtables.rb +++ b/src/vnm_mad/remotes/ebtables/Ebtables.rb @@ -17,8 +17,9 @@ require 'OpenNebulaNetwork' class EbtablesVLAN < OpenNebulaNetwork + XPATH_FILTER = "TEMPLATE/NIC[VLAN='YES']" def initialize(vm, hypervisor = nil) - super(vm,hypervisor) + super(vm,XPATH_FILTER,hypervisor) end def ebtables(rule) diff --git a/src/vnm_mad/remotes/ovswitch/OpenvSwitch.rb b/src/vnm_mad/remotes/ovswitch/OpenvSwitch.rb index 9716d99f8a..2cdaeafd80 100644 --- a/src/vnm_mad/remotes/ovswitch/OpenvSwitch.rb +++ b/src/vnm_mad/remotes/ovswitch/OpenvSwitch.rb @@ -17,8 +17,9 @@ require 'OpenNebulaNetwork' class OpenvSwitchVLAN < OpenNebulaNetwork + XPATH_FILTER = "TEMPLATE/NIC[VLAN='YES']" def initialize(vm, hypervisor = nil) - super(vm,hypervisor) + super(vm,XPATH_FILTER,hypervisor) end def activate diff --git a/src/vnm_mad/remotes/test/OpenNebulaNetwork_spec.rb b/src/vnm_mad/remotes/test/OpenNebulaNetwork_spec.rb index b97942055e..cfbfe8cf89 100644 --- a/src/vnm_mad/remotes/test/OpenNebulaNetwork_spec.rb +++ b/src/vnm_mad/remotes/test/OpenNebulaNetwork_spec.rb @@ -43,7 +43,7 @@ describe 'networking' do $capture_commands = { /virsh.*dumpxml/ => OUTPUT[:virsh_dumpxml] } - onevlan = OpenNebulaNetwork.new(OUTPUT[:onevm_show],"kvm") + onevlan = OpenNebulaNetwork.new(OUTPUT[:onevm_show],"TEMPLATE/NIC","kvm") nics_expected = [{:bridge=>"br0", :ip=>"172.16.0.100", :mac=>"02:00:ac:10:00:64",