From fc4269db1bf1adcab37a8ddf082f2af7fb799de3 Mon Sep 17 00:00:00 2001 From: Mikhail Date: Wed, 18 Jan 2017 12:37:02 +0400 Subject: [PATCH] Fix multiq configuration for dpdk in runtime Change-Id: Ib4048eb037b34d0d8f0c651783b540922a7cfd98 Closes-Bug: #1643920 --- .../l23_stored_config/dpdkovs_ubuntu.rb | 11 +---------- .../lib/puppet/provider/l2_port/dpdkovs.rb | 4 ++++ .../dpdkovs_ubuntu__spec/ifcfg-bond_lacp | 1 - .../dpdkovs_ubuntu__bond__spec.rb | 19 +------------------ .../dpdkovs_ubuntu__port__spec.rb | 12 +++++------- 5 files changed, 11 insertions(+), 36 deletions(-) diff --git a/deployment/puppet/l23network/lib/puppet/provider/l23_stored_config/dpdkovs_ubuntu.rb b/deployment/puppet/l23network/lib/puppet/provider/l23_stored_config/dpdkovs_ubuntu.rb index fb4f3ee929..7af2d3fe05 100644 --- a/deployment/puppet/l23network/lib/puppet/provider/l23_stored_config/dpdkovs_ubuntu.rb +++ b/deployment/puppet/l23network/lib/puppet/provider/l23_stored_config/dpdkovs_ubuntu.rb @@ -14,10 +14,6 @@ Puppet::Type.type(:l23_stored_config).provide(:dpdkovs_ubuntu, :parent => Puppet L23network.get_dpdk_ports_mapping end - def self.get_config - L23network::Scheme.get_config(Facter.value(:l3_fqdn_hostname)) - end - def self.check_if_provider(if_data) if if_data[:if_type] =~ /dpdkovsport/ if_data[:if_type] = "ethernet" @@ -132,12 +128,7 @@ Puppet::Type.type(:l23_stored_config).provide(:dpdkovs_ubuntu, :parent => Puppet end def multiq_threads - if self.if_type.to_s == 'bond' - cfg = self.class.get_config - multiq_threads = self.bond_slaves.map { |iface| cfg[:interfaces][iface.to_sym][:vendor_specific][:max_queues]}.min - else - multiq_threads = self.vendor_specific['max_queues'] - end + multiq_threads = self.vendor_specific['max_queues'] end def self.mangle__bond_slaves(val) diff --git a/deployment/puppet/l23network/lib/puppet/provider/l2_port/dpdkovs.rb b/deployment/puppet/l23network/lib/puppet/provider/l2_port/dpdkovs.rb index e5d050cd07..015f4b2d42 100644 --- a/deployment/puppet/l23network/lib/puppet/provider/l2_port/dpdkovs.rb +++ b/deployment/puppet/l23network/lib/puppet/provider/l2_port/dpdkovs.rb @@ -43,6 +43,10 @@ Puppet::Type.type(:l2_port).provide(:dpdkovs, :parent => Puppet::Provider::Ovs_b def flush if ! @property_flush.empty? debug("FLUSH properties: #{@property_flush}") + if !@property_flush[:vendor_specific][:max_queues].nil? and @property_flush[:vendor_specific][:max_queues] != :absent + dpdk_port = self.class.get_dpdk_ports_mapping[@resource[:interface]] + vsctl('set', 'Interface', '#{dpdk_port}', 'options:n_rxq=#{@property_flush[:vendor_specific][:max_queues].to_i}') + end @property_hash = resource.to_hash end end diff --git a/deployment/puppet/l23network/spec/fixtures/provider/l23_stored_config/dpdkovs_ubuntu__spec/ifcfg-bond_lacp b/deployment/puppet/l23network/spec/fixtures/provider/l23_stored_config/dpdkovs_ubuntu__spec/ifcfg-bond_lacp index c8f0b990a5..38e8943c9e 100644 --- a/deployment/puppet/l23network/spec/fixtures/provider/l23_stored_config/dpdkovs_ubuntu__spec/ifcfg-bond_lacp +++ b/deployment/puppet/l23network/spec/fixtures/provider/l23_stored_config/dpdkovs_ubuntu__spec/ifcfg-bond_lacp @@ -11,4 +11,3 @@ iface bond_lacp inet manual ovs_type DPDKOVSBond ovs_bridge br-prv ovs_options bond_mode=balance-tcp bond_updelay=111 bond_downdelay=222 lacp=active other_config:lacp-time=fast other_config:bond-miimon-interval=50 - multiq_threads 3 diff --git a/deployment/puppet/l23network/spec/unit/puppet/provider/l23_stored_config/dpdkovs_ubuntu__bond__spec.rb b/deployment/puppet/l23network/spec/unit/puppet/provider/l23_stored_config/dpdkovs_ubuntu__bond__spec.rb index ce3d201057..28eb921d83 100644 --- a/deployment/puppet/l23network/spec/unit/puppet/provider/l23_stored_config/dpdkovs_ubuntu__bond__spec.rb +++ b/deployment/puppet/l23network/spec/unit/puppet/provider/l23_stored_config/dpdkovs_ubuntu__bond__spec.rb @@ -25,20 +25,6 @@ describe Puppet::Type.type(:l23_stored_config).provider(:dpdkovs_ubuntu) do } } - let(:config) { - {:interfaces => - {:enp1s0f0 => - {:vendor_specific => - {:max_queues => 3} - }, - :enp1s0f1 => - {:vendor_specific => - {:max_queues => 3} - } - } - } - } - let(:dpdk_ports_mapping) { { 'enp1s0f0' => 'dpdk0', @@ -93,7 +79,6 @@ describe Puppet::Type.type(:l23_stored_config).provider(:dpdkovs_ubuntu) do subject { providers[:bond_lacp] } let(:cfg_file) do subject.class.stubs(:get_dpdk_ports_mapping).returns(dpdk_ports_mapping) - subject.class.stubs(:get_config).returns(config) subject.class.format_file('filepath', [subject]) end it { expect(cfg_file).not_to match(/auto\s+bond_lacp/) } @@ -110,8 +95,7 @@ describe Puppet::Type.type(:l23_stored_config).provider(:dpdkovs_ubuntu) do it { expect(cfg_file).to match(/ovs_options.+bond_updelay=111/) } it { expect(cfg_file).to match(/ovs_options.+bond_downdelay=222/) } it { expect(cfg_file).to match(/ovs_options.+lacp=active/) } - it { expect(cfg_file).to match(/multiq_threads\s+3/) } - it { expect(cfg_file.split(/\n/).reject{|x| x=~/(^\s*$)|(^#.*$)/}.length). to eq(8) } # no more lines in the interface file + it { expect(cfg_file.split(/\n/).reject{|x| x=~/(^\s*$)|(^#.*$)/}.length). to eq(7) } # no more lines in the interface file end context "parse data from fixture" do @@ -131,7 +115,6 @@ describe Puppet::Type.type(:l23_stored_config).provider(:dpdkovs_ubuntu) do it { expect(res[:bond_updelay]).to eq '111' } it { expect(res[:bond_downdelay]).to eq '222' } it { expect(res[:bond_slaves]).to eq ['enp1s0f0', 'enp1s0f1'] } - it { expect(res[:multiq_threads].to_s).to eq '3' } end end end diff --git a/deployment/puppet/l23network/spec/unit/puppet/provider/l23_stored_config/dpdkovs_ubuntu__port__spec.rb b/deployment/puppet/l23network/spec/unit/puppet/provider/l23_stored_config/dpdkovs_ubuntu__port__spec.rb index 26f207c619..3f06d70c91 100644 --- a/deployment/puppet/l23network/spec/unit/puppet/provider/l23_stored_config/dpdkovs_ubuntu__port__spec.rb +++ b/deployment/puppet/l23network/spec/unit/puppet/provider/l23_stored_config/dpdkovs_ubuntu__port__spec.rb @@ -4,13 +4,11 @@ describe Puppet::Type.type(:l23_stored_config).provider(:dpdkovs_ubuntu) do let(:input_data) { { :'enp1s0f0' => { - :name => 'enp1s0f0', - :if_type => 'ethernet', - :bridge => 'br-prv', - :provider => 'dpdkovs_ubuntu', - :vendor_specific => { - :max_queues => 3 - }, + :name => 'enp1s0f0', + :if_type => 'ethernet', + :bridge => 'br-prv', + :provider => 'dpdkovs_ubuntu', + :vendor_specific => {'max_queues' => 3}, }, } }