summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrent Eagles <beagles@redhat.com>2017-06-27 09:55:37 -0230
committerBrent Eagles <beagles@redhat.com>2017-06-29 11:55:14 -0230
commitd71697a419f459b8fa4b748a64ac6580b3a82456 (patch)
tree1fddec7fe6b7c778da51ec0349f65076d32127a2
parent3fcafacc1e3de1c3fad756135889f2f4a3c4fbe2 (diff)
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
-rw-r--r--lib/puppet/provider/sriov_vf_config/numvfs.rb2
-rw-r--r--manifests/host/sriov.pp2
-rw-r--r--releasenotes/notes/allow-missing-pci-dev-for-sriov-bbc29f62fcac10ff.yaml5
-rw-r--r--spec/classes/tripleo_host_sriov_spec.rb4
4 files changed, 9 insertions, 4 deletions
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"