From b94b6f6a4368c133808a060946b86dbc7e2ee2af Mon Sep 17 00:00:00 2001 From: Sergey Vasilenko Date: Thu, 9 Jun 2016 14:14:53 +0300 Subject: [PATCH] Separate OVS kernel module name for Ubuntu 14.xx and ubuntu 16.xx Change-Id: I7a1644073093306338a948cd3f609c50160868e2 Related-bug: #1587084 --- .../puppet/l23network/manifests/init.pp | 2 - deployment/puppet/l23network/manifests/l2.pp | 3 +- .../puppet/l23network/manifests/params.pp | 5 +- .../l23network/spec/classes/l2__spec.rb | 95 ++++++++++++++----- .../netconfig/configure_default_route.pp | 17 +++- .../manifests/netconfig/netconfig.pp | 19 ++-- 6 files changed, 98 insertions(+), 43 deletions(-) diff --git a/deployment/puppet/l23network/manifests/init.pp b/deployment/puppet/l23network/manifests/init.pp index 027c92f1f5..d45d8a3445 100644 --- a/deployment/puppet/l23network/manifests/init.pp +++ b/deployment/puppet/l23network/manifests/init.pp @@ -58,7 +58,6 @@ class l23network ( $modprobe_8021q = undef, $install_ethtool = undef, $ovs_module_name = $::l23network::params::ovs_kern_module_name, - $use_ovs_dkms_datapath_module = true, $ovs_datapath_package_name = $::l23network::params::ovs_datapath_package_name, $ovs_common_package_name = $::l23network::params::ovs_common_package_name, $disable_hotplug = true, @@ -81,7 +80,6 @@ class l23network ( modprobe_8021q => pick($modprobe_8021q, $use_lnx), install_ethtool => pick($install_ethtool, $use_lnx), ovs_module_name => $ovs_module_name, - use_ovs_dkms_datapath_module => $use_ovs_dkms_datapath_module, ovs_datapath_package_name => $ovs_datapath_package_name, ovs_common_package_name => $ovs_common_package_name, dpdk_options => $dpdk_options, diff --git a/deployment/puppet/l23network/manifests/l2.pp b/deployment/puppet/l23network/manifests/l2.pp index 60531e8357..b387c599c2 100644 --- a/deployment/puppet/l23network/manifests/l2.pp +++ b/deployment/puppet/l23network/manifests/l2.pp @@ -36,7 +36,6 @@ class l23network::l2 ( $modprobe_8021q = undef, $install_ethtool = undef, $ovs_module_name = $::l23network::params::ovs_kern_module_name, - $use_ovs_dkms_datapath_module = true, $ovs_datapath_package_name = $::l23network::params::ovs_datapath_package_name, $ovs_common_package_name = $::l23network::params::ovs_common_package_name, $dpdk_options = {}, @@ -47,7 +46,7 @@ class l23network::l2 ( $_install_ovs = pick($install_ovs, $use_ovs) if $_install_ovs { - if $use_ovs_dkms_datapath_module { + if $ovs_datapath_package_name { package { 'openvswitch-datapath': ensure => $ensure_package, name => $ovs_datapath_package_name, diff --git a/deployment/puppet/l23network/manifests/params.pp b/deployment/puppet/l23network/manifests/params.pp index 4adc315f1d..c0af4de114 100644 --- a/deployment/puppet/l23network/manifests/params.pp +++ b/deployment/puppet/l23network/manifests/params.pp @@ -14,7 +14,10 @@ class l23network::params { $lnx_bond_tools = 'ifenslave' $lnx_ethernet_tools = 'ethtool' $lnx_bridge_tools = 'bridge-utils' - $ovs_datapath_package_name = 'openvswitch-datapath-dkms' + $ovs_datapath_package_name = $::operatingsystemmajrelease ? { + /^14\./ =>'openvswitch-datapath-dkms', + default => undef + } $ovs_common_package_name = 'openvswitch-switch' $ovs_dpdk_package_name = 'openvswitch-switch-dpdk' $ovs_dpdk_dkms_package_name = 'dpdk-dkms' diff --git a/deployment/puppet/l23network/spec/classes/l2__spec.rb b/deployment/puppet/l23network/spec/classes/l2__spec.rb index c3dd21dcf5..9a8b085f1d 100644 --- a/deployment/puppet/l23network/spec/classes/l2__spec.rb +++ b/deployment/puppet/l23network/spec/classes/l2__spec.rb @@ -99,7 +99,7 @@ describe 'l23network::l2' do { :ensure_package => 'present', :use_lnx => true, :use_ovs => true, - :use_ovs_dkms_datapath_module => false, + :ovs_datapath_package_name => nil, } end @@ -149,10 +149,11 @@ describe 'l23network::l2' do end - context 'Ubuntu' do + context 'Ubuntu-14.04' do let (:facts) do { :l23_os => 'ubuntu', :l3_fqdn_hostname => 'my_name', + :operatingsystemmajrelease => '14.04' } end @@ -241,29 +242,6 @@ describe 'l23network::l2' do end - context 'use_ovs with disabled dkms ovs module' do - - let :params do - { :ensure_package => 'present', - :use_lnx => true, - :use_ovs => true, - :use_ovs_dkms_datapath_module => false, - } - end - - it { should compile.with_all_deps } - - it { should_not contain_package('openvswitch-datapath').with_name('openvswitch-datapath-dkms') } - - it { should contain_package('openvswitch-common').with_name('openvswitch-switch') } - it { should contain_package('openvswitch-common').that_notifies('Service[openvswitch-service]') } - - it { should contain_service('openvswitch-service') } - - it { should contain_k_mod('openvswitch').with_ensure('present') } - - end - context 'use_ovs, use_dpdk with default parameters' do let :params do @@ -303,5 +281,72 @@ describe 'l23network::l2' do end + context 'Ubuntu-16.04' do + let (:facts) do + { :l23_os => 'ubuntu', + :l3_fqdn_hostname => 'my_name', + :operatingsystemmajrelease => '16.04' + } + end + + let :pre_condition do + 'K_mod <| |>' + end + + puppet_debug_override + + context 'with a default params' do + let :params do + { + :modprobe_bonding => true, + :modprobe_8021q => true, + :modprobe_bridge => true, + } + end + + it { should compile.with_all_deps } + + it { should_not contain_package('openvswitch-datapath') } + + it { should_not contain_package('openvswitch-common') } + + it { should_not contain_package('openvswitch-dpdk').with_name('openvswitch-switch-dpdk') } + + it { should_not contain_service('openvswitch-service') } + + it { should_not contain_service('dpdk') } + + it { should_not contain_k_mod('openvswitch').with_ensure('present') } + + it { should contain_k_mod('bonding') } + it { should contain_k_mod('8021q') } + it { should contain_k_mod('bridge') } + + end + + context 'use_ovs with default parameters' do + + let :params do + { :ensure_package => 'present', + :use_lnx => true, + :use_ovs => true, + } + end + + it { should compile.with_all_deps } + + it { should_not contain_package('openvswitch-datapath').with_name('openvswitch-datapath-dkms') } + it { should_not contain_package('openvswitch-datapath').that_comes_before('Service[openvswitch-service]') } + + it { should contain_package('openvswitch-common').with_name('openvswitch-switch') } + it { should contain_package('openvswitch-common').that_notifies('Service[openvswitch-service]') } + + it { should contain_service('openvswitch-service') } + + it { should contain_k_mod('openvswitch').with_ensure('present') } + + end + end + end diff --git a/deployment/puppet/osnailyfacter/manifests/netconfig/configure_default_route.pp b/deployment/puppet/osnailyfacter/manifests/netconfig/configure_default_route.pp index 3f3a2804c1..5043faa32f 100644 --- a/deployment/puppet/osnailyfacter/manifests/netconfig/configure_default_route.pp +++ b/deployment/puppet/osnailyfacter/manifests/netconfig/configure_default_route.pp @@ -7,17 +7,24 @@ class osnailyfacter::netconfig::configure_default_route { $management_role = 'management' $fw_admin_role = 'fw-admin' - if ( $::l23_os =~ /(?i:centos6)/ and $::kernelmajversion == '3.10' ) { + $dpdk_options = hiera_hash('dpdk', {}) + + if ($::l23_os =~ /(?i:redhat7|centos7)/) { + # do not install + $ovs_datapath_package_name = false + } elsif $::l23_os =~ /(?i:centos6)/ and $::kernelmajversion == '3.10' { + # install more specific version for Centos6 AND 3.10 kernel $ovs_datapath_package_name = 'kmod-openvswitch-lt' + } else { + # do not change default behavior + $ovs_datapath_package_name = undef } class { '::l23network' : use_ovs => hiera('use_ovs', false), - use_ovs_dkms_datapath_module => $::l23_os ? { - /(?i:redhat7|centos7|oraclelinux7)/ => false, - default => true - }, ovs_datapath_package_name => $ovs_datapath_package_name, + use_dpdk => pick($dpdk_options['enabled'], false), + dpdk_options => $dpdk_options, } $new_network_scheme = configure_default_route($network_scheme, $management_vrouter_vip, $fw_admin_role, $management_role ) diff --git a/deployment/puppet/osnailyfacter/manifests/netconfig/netconfig.pp b/deployment/puppet/osnailyfacter/manifests/netconfig/netconfig.pp index 558b3e1e37..3b72c10e11 100644 --- a/deployment/puppet/osnailyfacter/manifests/netconfig/netconfig.pp +++ b/deployment/puppet/osnailyfacter/manifests/netconfig/netconfig.pp @@ -5,18 +5,21 @@ class osnailyfacter::netconfig::netconfig { $network_scheme = hiera_hash('network_scheme', {}) prepare_network_config($network_scheme) - if ( $::l23_os =~ /(?i:centos6)/ and $::kernelmajversion == '3.10' ) { - $ovs_datapath_package_name = 'kmod-openvswitch-lt' - } - $dpdk_options = hiera_hash('dpdk', {}) + if ($::l23_os =~ /(?i:redhat7|centos7)/) { + # do not install + $ovs_datapath_package_name = false + } elsif $::l23_os =~ /(?i:centos6)/ and $::kernelmajversion == '3.10' { + # install more specific version for Centos6 AND 3.10 kernel + $ovs_datapath_package_name = 'kmod-openvswitch-lt' + } else { + # do not change default behavior + $ovs_datapath_package_name = undef + } + class { '::l23network' : use_ovs => hiera('use_ovs', false), - use_ovs_dkms_datapath_module => $::l23_os ? { - /(?i:redhat7|centos7)/ => false, - default => true - }, ovs_datapath_package_name => $ovs_datapath_package_name, use_dpdk => pick($dpdk_options['enabled'], false), dpdk_options => $dpdk_options,