Allow to manage or not TSO issue
We need to allow some flexibility with TSO issue and allow the end-user to disable the management of TSO. Since TSO issue only affects GRE tunnels, when running VXLAN we should be able to not manage TSO issue. So let's add a new parameter to manage or not this feature. Why not using facter to detect the kernel & using neutron flags to detect the tunneling mode? Because we want to be sure that we have a real flexibility and allow end-user to use a specific kernel (with a fix or not) and make the choice to enable or not TSO/GSO.
This commit is contained in:
@@ -19,16 +19,20 @@
|
|||||||
#
|
#
|
||||||
# === Parameters:
|
# === Parameters:
|
||||||
#
|
#
|
||||||
# [*vm_rbd]
|
# [*vm_rbd*]
|
||||||
# (optional) Enable or not ceph capabilities on compute node to store
|
# (optional) Enable or not ceph capabilities on compute node to store
|
||||||
# nova instances on ceph storage.
|
# nova instances on ceph storage.
|
||||||
# Default to false.
|
# Default to false.
|
||||||
#
|
#
|
||||||
# [*volume_rbd]
|
# [*volume_rbd*]
|
||||||
# (optional) Enable or not ceph capabilities on compute node to attach
|
# (optional) Enable or not ceph capabilities on compute node to attach
|
||||||
# cinder volumes backend by ceph on nova instances.
|
# cinder volumes backend by ceph on nova instances.
|
||||||
# Default to false.
|
# Default to false.
|
||||||
#
|
#
|
||||||
|
# [*manage_tso*]
|
||||||
|
# (optional) Allow to manage or not TSO issue.
|
||||||
|
# Default to true.
|
||||||
|
#
|
||||||
|
|
||||||
class cloud::compute::hypervisor(
|
class cloud::compute::hypervisor(
|
||||||
$server_proxyclient_address = '127.0.0.1',
|
$server_proxyclient_address = '127.0.0.1',
|
||||||
@@ -43,6 +47,7 @@ class cloud::compute::hypervisor(
|
|||||||
$nova_rbd_secret_uuid = undef,
|
$nova_rbd_secret_uuid = undef,
|
||||||
$vm_rbd = false,
|
$vm_rbd = false,
|
||||||
$volume_rbd = false,
|
$volume_rbd = false,
|
||||||
|
$manage_tso = true,
|
||||||
# set to false to keep backward compatibility
|
# set to false to keep backward compatibility
|
||||||
$ks_spice_public_proto = false,
|
$ks_spice_public_proto = false,
|
||||||
$ks_spice_public_host = false,
|
$ks_spice_public_host = false,
|
||||||
@@ -144,6 +149,7 @@ Host *
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Disabling TSO/GSO/GRO
|
# Disabling TSO/GSO/GRO
|
||||||
|
if $manage_tso {
|
||||||
if $::osfamily == 'Debian' {
|
if $::osfamily == 'Debian' {
|
||||||
ensure_resource ('exec','enable-tso-script', {
|
ensure_resource ('exec','enable-tso-script', {
|
||||||
'command' => '/usr/sbin/update-rc.d disable-tso defaults',
|
'command' => '/usr/sbin/update-rc.d disable-tso defaults',
|
||||||
@@ -162,7 +168,7 @@ Host *
|
|||||||
'unless' => '/usr/bin/test -f /tmp/disable-tso-lock',
|
'unless' => '/usr/bin/test -f /tmp/disable-tso-lock',
|
||||||
'onlyif' => '/usr/bin/test -f /etc/init.d/disable-tso'
|
'onlyif' => '/usr/bin/test -f /etc/init.d/disable-tso'
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
if $::operatingsystem == 'Ubuntu' {
|
if $::operatingsystem == 'Ubuntu' {
|
||||||
service { 'dbus':
|
service { 'dbus':
|
||||||
|
@@ -20,6 +20,7 @@ class cloud::network::l3(
|
|||||||
$external_int = 'eth1',
|
$external_int = 'eth1',
|
||||||
$ext_provider_net = false,
|
$ext_provider_net = false,
|
||||||
$debug = true,
|
$debug = true,
|
||||||
|
$manage_tso = true,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
include 'cloud::network'
|
include 'cloud::network'
|
||||||
@@ -47,6 +48,7 @@ class cloud::network::l3(
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Disabling TSO/GSO/GRO
|
# Disabling TSO/GSO/GRO
|
||||||
|
if $manage_tso {
|
||||||
if $::osfamily == 'Debian' {
|
if $::osfamily == 'Debian' {
|
||||||
ensure_resource ('exec','enable-tso-script', {
|
ensure_resource ('exec','enable-tso-script', {
|
||||||
'command' => '/usr/sbin/update-rc.d disable-tso defaults',
|
'command' => '/usr/sbin/update-rc.d disable-tso defaults',
|
||||||
@@ -65,5 +67,6 @@ class cloud::network::l3(
|
|||||||
'unless' => '/usr/bin/test -f /tmp/disable-tso-lock',
|
'unless' => '/usr/bin/test -f /tmp/disable-tso-lock',
|
||||||
'onlyif' => '/usr/bin/test -f /etc/init.d/disable-tso'
|
'onlyif' => '/usr/bin/test -f /etc/init.d/disable-tso'
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -316,6 +316,18 @@ describe 'cloud::compute::hypervisor' do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'when not managing TSO/GSO/GRO' do
|
||||||
|
before :each do
|
||||||
|
params.merge!( :manage_tso => false)
|
||||||
|
end
|
||||||
|
it 'ensure TSO script is not managed at boot' do
|
||||||
|
should_not contain_exec('enable-tso-script')
|
||||||
|
end
|
||||||
|
it 'do not start TSO script' do
|
||||||
|
should_not contain_exec('start-tso-script')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context 'with RBD backend for instances and volumes on Debian plaforms' do
|
context 'with RBD backend for instances and volumes on Debian plaforms' do
|
||||||
before :each do
|
before :each do
|
||||||
facts.merge!( :osfamily => 'Debian',
|
facts.merge!( :osfamily => 'Debian',
|
||||||
|
@@ -193,6 +193,18 @@ describe 'cloud::network::l3' do
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'when not managing TSO/GSO/GRO' do
|
||||||
|
before :each do
|
||||||
|
params.merge!( :manage_tso => false)
|
||||||
|
end
|
||||||
|
it 'ensure TSO script is not enabled at boot' do
|
||||||
|
should_not contain_exec('enable-tso-script')
|
||||||
|
end
|
||||||
|
it 'do not start TSO script' do
|
||||||
|
should_not contain_exec('start-tso-script')
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'on Debian platforms' do
|
context 'on Debian platforms' do
|
||||||
|
Reference in New Issue
Block a user