
driverctl will be used to bind the pci with the DPDK driver, but the DPDK driver modules has to be loaded for it. Adding sysconfig modules files to load driver module on reboot. Implements: blueprint tripleo-ovs-dpdk Depends-On: I79308ac5949a47a707d42bb2566407b9e8adfb9c Change-Id: I46331a882eca97d8b2ea0229ff768ce629971a6d
82 lines
2.3 KiB
Puppet
82 lines
2.3 KiB
Puppet
#
|
|
# Configure OVS to use DPDK
|
|
#
|
|
# === Parameters
|
|
#
|
|
# [*core_list*]
|
|
# (required) The list of cores to be used by the DPDK Poll Mode Driver
|
|
# The core_list is a string with format as <c1>[-c2][,c3[-c4],...] where c1, c2, etc are core indexes between 0 and 128
|
|
# For example, to configure 3 cores the value should be "0-2"
|
|
#
|
|
# [*memory_channels*]
|
|
# (required) The number of memory channels to use as an integer
|
|
#
|
|
# [*package_ensure*]
|
|
# (Optional) State of the openvswitch package
|
|
# Defaults to 'present'.
|
|
#
|
|
# [*socket_mem*]
|
|
# (Optional) Set the memory to be allocated on each socket
|
|
# The socket_mem is a string with comma separated memory list in MB in the order of socket numbers.
|
|
# For example, to allocate memory of 1GB for socket 1 and no allocation for socket 0, the value should be "0,1024"
|
|
# Defaults to undef.
|
|
#
|
|
# [*driver_type*]
|
|
# (Optional) The DPDK Driver type
|
|
# Defaults to 'vfio-pci'
|
|
#
|
|
class vswitch::dpdk (
|
|
$core_list,
|
|
$memory_channels,
|
|
$package_ensure = 'present',
|
|
$socket_mem = undef,
|
|
$driver_type = 'vfio-pci',
|
|
) {
|
|
|
|
include ::vswitch::params
|
|
|
|
kmod::load { 'vfio-pci': }
|
|
|
|
package { $::vswitch::params::ovs_dpdk_package_name:
|
|
ensure => $package_ensure,
|
|
before => Service['openvswitch'],
|
|
tag => 'openvswitch',
|
|
}
|
|
|
|
# Set DPDK_OPTIONS to openvswitch
|
|
if $socket_mem {
|
|
$socket_string = "--socket-mem ${socket_mem}"
|
|
}
|
|
|
|
if $driver_type {
|
|
$pci_list = inline_template('<%= Facter.value("pci_address_driver_#@driver_type") %>')
|
|
unless empty($pci_list) {
|
|
$white_list = inline_template('-w <%= @pci_list.gsub(",", " -w ") %>')
|
|
}
|
|
}
|
|
|
|
$options = "DPDK_OPTIONS = \"-l ${core_list} -n ${memory_channels} ${socket_string} ${white_list}\""
|
|
|
|
case $::osfamily {
|
|
'Redhat': {
|
|
file_line { '/etc/sysconfig/openvswitch':
|
|
path => '/etc/sysconfig/openvswitch',
|
|
match => '^DPDK_OPTIONS.*',
|
|
line => $options,
|
|
require => Package[$::vswitch::params::ovs_dpdk_package_name],
|
|
before => Service['openvswitch']
|
|
}
|
|
|
|
service { 'openvswitch':
|
|
ensure => true,
|
|
enable => true,
|
|
name => $::vswitch::params::ovs_service_name,
|
|
}
|
|
}
|
|
default: {
|
|
fail( "${::osfamily} not yet supported for dpdk installation by puppet-vswitch")
|
|
}
|
|
}
|
|
|
|
}
|