From d71697a419f459b8fa4b748a64ac6580b3a82456 Mon Sep 17 00:00:00 2001 From: Brent Eagles Date: Tue, 27 Jun 2017 09:55:37 -0230 Subject: Do not fail if PCI device is missing Fixes a problem where SR-IOV VF count configuration will fail if a physical function is in use by a guest when 'puppet apply' is executed. This change substitutes warnings for failures and skips complaints if a PCI device is unavailable. Note: this patch has the side-effect of allowing the same configuration data on hosts that may *not* or *ever* have PCI SR-IOV devices on the hardware. Time will tell how evil this is in practice. Closes-Bug: #1701284 Change-Id: I71edc135432ab2193741c37ce977dd11172401e6 --- lib/puppet/provider/sriov_vf_config/numvfs.rb | 2 +- manifests/host/sriov.pp | 2 +- .../notes/allow-missing-pci-dev-for-sriov-bbc29f62fcac10ff.yaml | 5 +++++ spec/classes/tripleo_host_sriov_spec.rb | 4 ++-- 4 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 releasenotes/notes/allow-missing-pci-dev-for-sriov-bbc29f62fcac10ff.yaml diff --git a/lib/puppet/provider/sriov_vf_config/numvfs.rb b/lib/puppet/provider/sriov_vf_config/numvfs.rb index cfa663c..22acf21 100644 --- a/lib/puppet/provider/sriov_vf_config/numvfs.rb +++ b/lib/puppet/provider/sriov_vf_config/numvfs.rb @@ -12,7 +12,7 @@ Puppet::Type.type(:sriov_vf_config).provide(:numvfs) do if File.file?(sriov_numvfs_path) _set_numvfs else - fail("#{sriov_numvfs_path} doesn't exist. Check if #{sriov_get_interface} is a valid network interface supporting SR-IOV") + warning("#{sriov_numvfs_path} doesn't exist. Check if #{sriov_get_interface} is a valid network interface supporting SR-IOV") end end diff --git a/manifests/host/sriov.pp b/manifests/host/sriov.pp index b94c472..c06796d 100644 --- a/manifests/host/sriov.pp +++ b/manifests/host/sriov.pp @@ -16,7 +16,7 @@ class tripleo::host::sriov ( ) { if !empty($number_of_vfs) { - sriov_vf_config { $number_of_vfs: ensure => present } + sriov_vf_config { $number_of_vfs: } # the numvfs configuration needs to be persisted for every boot tripleo::host::sriov::numvfs_persistence {'persistent_numvfs': diff --git a/releasenotes/notes/allow-missing-pci-dev-for-sriov-bbc29f62fcac10ff.yaml b/releasenotes/notes/allow-missing-pci-dev-for-sriov-bbc29f62fcac10ff.yaml new file mode 100644 index 0000000..f2fc2f2 --- /dev/null +++ b/releasenotes/notes/allow-missing-pci-dev-for-sriov-bbc29f62fcac10ff.yaml @@ -0,0 +1,5 @@ +--- +fixes: + - | + Allow VF configuration files to be written for non-existent PCI devices to + allow updates while physical functions are currently in use by a guest. diff --git a/spec/classes/tripleo_host_sriov_spec.rb b/spec/classes/tripleo_host_sriov_spec.rb index 920eb9b..eb2213a 100644 --- a/spec/classes/tripleo_host_sriov_spec.rb +++ b/spec/classes/tripleo_host_sriov_spec.rb @@ -17,8 +17,8 @@ describe 'tripleo::host::sriov' do end it 'configures numvfs' do - is_expected.to contain_sriov_vf_config('eth0:4').with( :ensure => 'present' ) - is_expected.to contain_sriov_vf_config('eth1:5').with( :ensure => 'present') + is_expected.to contain_sriov_vf_config('eth0:4') + is_expected.to contain_sriov_vf_config('eth1:5') is_expected.to contain_tripleo__host__sriov__numvfs_persistence('persistent_numvfs').with( :vf_defs => ['eth0:4','eth1:5'], :content_string => "#!/bin/bash\n" -- cgit 1.2.3-korg