cd31dd2da9
After moving mlnx interfaces to switchdev mode in sriov, it will reset that interface and may change its name and also will need ifup in order to get back the previous configuration. So adding a udev rule and ifup command the save the interface name and its configuration Change-Id: Ib4f384da344344f9e2ec666b0d8dbae441f24568 Closes-Bug: 1816710
135 lines
4.2 KiB
Ruby
135 lines
4.2 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe 'tripleo::host::sriov::numvfs_persistence' do
|
|
|
|
describe 'confugure numvfs for persistence' do
|
|
|
|
let :title do
|
|
'numvfs'
|
|
end
|
|
|
|
let :params do
|
|
{
|
|
:name => 'persistence',
|
|
:vf_defs => ['eth0:10','eth1:8'],
|
|
:content_string => "Hashbang\n",
|
|
:udev_rules => ""
|
|
}
|
|
end
|
|
|
|
it 'configures persistence' do
|
|
is_expected.to contain_file('/etc/sysconfig/allocate_vfs').with(
|
|
:ensure => 'file',
|
|
:content => "Hashbang\n[ \"eth0\" == \"\$1\" ] && echo 10 > /sys/class/net/eth0/device/sriov_numvfs\n[ \"eth1\" == \"\$1\" ] && echo 8 > /sys/class/net/eth1/device/sriov_numvfs\n",
|
|
:group => 'root',
|
|
:mode => '0755',
|
|
:owner => 'root',
|
|
)
|
|
is_expected.to contain_file('/sbin/ifup-local').with(
|
|
:group => 'root',
|
|
:mode => '0755',
|
|
:owner => 'root',
|
|
:content => '#!/bin/bash',
|
|
:replace => false,
|
|
)
|
|
is_expected.to contain_file('/etc/udev/rules.d/70-tripleo-reset-sriov.rules').with(
|
|
:ensure => 'file',
|
|
:content => "KERNEL==\"eth0\", RUN+=\"/etc/sysconfig/allocate_vfs %k\"\nKERNEL==\"eth1\", RUN+=\"/etc/sysconfig/allocate_vfs %k\"\n",
|
|
:group => 'root',
|
|
:mode => '0755',
|
|
:owner => 'root',
|
|
:replace => true
|
|
)
|
|
is_expected.to contain_file_line('call_ifup-local').with(
|
|
:path => '/sbin/ifup-local',
|
|
:line => '/etc/sysconfig/allocate_vfs $1',
|
|
)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe 'tripleo::host::sriov::numvfs_persistence' do
|
|
|
|
describe 'confugure numvfs for persistence' do
|
|
|
|
let :title do
|
|
'numvfs'
|
|
end
|
|
|
|
let :params do
|
|
{
|
|
:name => 'persistence',
|
|
:vf_defs => ['eth0:10:switchdev','eth1:8:legacy'],
|
|
:content_string => "Hashbang\n",
|
|
:udev_rules => ""
|
|
}
|
|
end
|
|
|
|
it 'configures persistence' do
|
|
is_expected.to contain_file('/etc/sysconfig/allocate_vfs').with(
|
|
:ensure => 'file',
|
|
:content => "Hashbang\nset -ex
|
|
set -o pipefail
|
|
|
|
if [ \"eth0\" == \"$1\" ]
|
|
then
|
|
exec 1> >(logger -s -t $(basename $0)) 2>&1
|
|
vendor_id=\"$(cat /sys/class/net/eth0/device/vendor)\"
|
|
if [ \"$(cat /sys/class/net/eth0/device/sriov_numvfs)\" == \"0\" ]
|
|
then
|
|
echo 10 > /sys/class/net/eth0/device/sriov_numvfs
|
|
else
|
|
exit 0
|
|
fi
|
|
if [ $vendor_id == \"0x15b3\" ]
|
|
then
|
|
vfs_pci_list=$(grep PCI_SLOT_NAME /sys/class/net/eth0/device/virtfn*/uevent | cut -d'=' -f2)
|
|
for pci in $vfs_pci_list
|
|
do
|
|
echo \"$pci\" > /sys/bus/pci/drivers/mlx5_core/unbind
|
|
done
|
|
fi
|
|
interface_pci=$(grep PCI_SLOT_NAME /sys/class/net/eth0/device/uevent | cut -d'=' -f2)
|
|
/usr/sbin/devlink dev eswitch set pci/\"$interface_pci\" mode switchdev
|
|
/usr/sbin/ifup eth0
|
|
if [[ \"$(/usr/sbin/devlink dev eswitch show pci/\"$interface_pci\")\" =~ \"mode switchdev\" ]]
|
|
then
|
|
echo \"PCI device $interface_pci set to mode switchdev.\"
|
|
else
|
|
echo \"Failed to set PCI device $interface_pci to mode switchdev.\"
|
|
exit 1
|
|
fi
|
|
interface_device=$(cat /sys/class/net/eth0/device/device)
|
|
if [ \"$interface_device\" == \"0x1013\" ] || [ \"$interface_device\" == \"0x1015\" ]
|
|
then
|
|
/usr/sbin/devlink dev eswitch set pci/\"$interface_pci\" inline-mode transport
|
|
fi
|
|
/usr/sbin/ethtool -K eth0 hw-tc-offload on
|
|
fi\n[ \"eth1\" == \"\$1\" ] && echo 8 > /sys/class/net/eth1/device/sriov_numvfs\n",
|
|
:group => 'root',
|
|
:mode => '0755',
|
|
:owner => 'root',
|
|
)
|
|
is_expected.to contain_file('/sbin/ifup-local').with(
|
|
:group => 'root',
|
|
:mode => '0755',
|
|
:owner => 'root',
|
|
:content => '#!/bin/bash',
|
|
:replace => false,
|
|
)
|
|
is_expected.to contain_file('/etc/udev/rules.d/70-tripleo-reset-sriov.rules').with(
|
|
:ensure => 'file',
|
|
:content => "KERNEL==\"eth0\", RUN+=\"/etc/sysconfig/allocate_vfs %k\"\nKERNEL==\"eth1\", RUN+=\"/etc/sysconfig/allocate_vfs %k\"\n",
|
|
:group => 'root',
|
|
:mode => '0755',
|
|
:owner => 'root',
|
|
:replace => true
|
|
)
|
|
is_expected.to contain_file_line('call_ifup-local').with(
|
|
:path => '/sbin/ifup-local',
|
|
:line => '/etc/sysconfig/allocate_vfs $1',
|
|
)
|
|
end
|
|
end
|
|
end
|