summaryrefslogtreecommitdiffstats
path: root/manifests/host
diff options
context:
space:
mode:
authorBrent Eagles <beagles@redhat.com>2016-11-07 16:22:31 -0330
committerBrent Eagles <beagles@redhat.com>2016-11-11 10:02:42 -0330
commit9a79bdab86224e678414fd98ba2e888836083e79 (patch)
treeed14b867d3cd1c26694cdd629543dea169f1b026 /manifests/host
parentf5a20ed5911324311b02773dde8a917eb82ddc0c (diff)
Call VF configuration from udev rules
When a physical function that was allocated to a guest is released back the system, it is not automatically brought "up" and the VF configuration is not restored. This patch creates a file containing some udev rules to force the VF configuration. Note: we may find that the ifup-local script is no longer required but this will require further testing. Change-Id: Ie6e78730aa0a748b3b5100ab7c7bc007d8ab176d Partial-Bug: #1639901
Diffstat (limited to 'manifests/host')
-rw-r--r--manifests/host/sriov.pp3
-rw-r--r--manifests/host/sriov/numvfs_persistence.pp23
2 files changed, 23 insertions, 3 deletions
diff --git a/manifests/host/sriov.pp b/manifests/host/sriov.pp
index a30db42..b94c472 100644
--- a/manifests/host/sriov.pp
+++ b/manifests/host/sriov.pp
@@ -21,7 +21,8 @@ class tripleo::host::sriov (
# the numvfs configuration needs to be persisted for every boot
tripleo::host::sriov::numvfs_persistence {'persistent_numvfs':
vf_defs => $number_of_vfs,
- content_string => "#!/bin/bash\n"
+ content_string => "#!/bin/bash\n",
+ udev_rules => ''
}
}
}
diff --git a/manifests/host/sriov/numvfs_persistence.pp b/manifests/host/sriov/numvfs_persistence.pp
index 1ee402c..ec8c875 100644
--- a/manifests/host/sriov/numvfs_persistence.pp
+++ b/manifests/host/sriov/numvfs_persistence.pp
@@ -10,9 +10,16 @@
# [*content_string*]
# (required) String which shall be written to the script file.
#
+# [*udev_rules*]
+# (required) String of lines to write to udev rules to ensure
+# VFs are reconfigured if the PCI devices are removed and
+# readded without rebooting (e.g. when physical functions were
+# allocated to VMs)
+#
define tripleo::host::sriov::numvfs_persistence(
$vf_defs,
- $content_string
+ $content_string,
+ $udev_rules
){
# Since reduce isn't available, we use recursion to iterate each entries of
# "physical_interface:vfs" and accumulate the content that needs to be
@@ -36,6 +43,16 @@ define tripleo::host::sriov::numvfs_persistence(
replace => false
}
+ file { '/etc/udev/rules.d/70-tripleo-reset-sriov.rules':
+ ensure => file,
+ group => 'root',
+ mode => '0755',
+ owner => 'root',
+ content => $udev_rules,
+ replace => true,
+ }
+
+
file_line { 'call_ifup-local':
path => '/sbin/ifup-local',
line => '/etc/sysconfig/allocate_vfs $1',
@@ -46,9 +63,11 @@ define tripleo::host::sriov::numvfs_persistence(
$interface = $vfspec[0]
$count = $vfspec[1]
$vfdef_str = "${content_string}[ \"${interface}\" == \"\$1\" ] && echo ${count} > /sys/class/net/${interface}/device/sriov_numvfs\n"
+ $udev_str = "${udev_rules}KERNEL==\"${interface}\", RUN+=\"/etc/sysconfig/allocate_vfs %k\"\n"
tripleo::host::sriov::numvfs_persistence{"mapped ${interface}":
vf_defs => delete_at($vf_defs, 0),
- content_string => $vfdef_str
+ content_string => $vfdef_str,
+ udev_rules => $udev_str
}
}
}