Do not fail if PCI device is missing
authorBrent Eagles <beagles@redhat.com>
Tue, 27 Jun 2017 12:25:37 +0000 (09:55 -0230)
committerBrent Eagles <beagles@redhat.com>
Thu, 29 Jun 2017 14:25:14 +0000 (11:55 -0230)
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
manifests/host/sriov.pp
releasenotes/notes/allow-missing-pci-dev-for-sriov-bbc29f62fcac10ff.yaml [new file with mode: 0644]
spec/classes/tripleo_host_sriov_spec.rb

index cfa663c..22acf21 100644 (file)
@@ -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
 
index b94c472..c06796d 100644 (file)
@@ -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 (file)
index 0000000..f2fc2f2
--- /dev/null
@@ -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.
index 920eb9b..eb2213a 100644 (file)
@@ -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"