c425a5b9fb
This patch shall create VFs via the PCI SYS interface. Default value : $::os_service_default Sample Format : ['eth0:4','eth2:128'] For values as in sample format, the sriov_numvfs config files for eth0 and eth2 will have the values 4 and 128 respectively Change-Id: I2c1fce461d4602cd9f7de44b34e94920d1a581a6 Implements: blueprint tripleo-sriov Signed-off-by: karthik s <ksundara@redhat.com>
59 lines
1.6 KiB
Ruby
59 lines
1.6 KiB
Ruby
Puppet::Type.type(:neutron_agent_sriov_numvfs).provide(:sriov_numvfs) do
|
|
desc <<-EOT
|
|
The file /sys/class/net/<sriov_interface_name>/device/sriov_numvfs will be
|
|
present when a physical PCIe device supports SR-IOV. A number written to
|
|
this file will enable the specified number of VFs. This provider shall read
|
|
the file and ensure that the value is zero, before writing the number of
|
|
VFs that should be enabled. If the VFs needs to be disabled then we shall
|
|
write a zero to this file.
|
|
EOT
|
|
|
|
def create
|
|
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")
|
|
end
|
|
end
|
|
|
|
def destroy
|
|
if File.file?(sriov_numvfs_path)
|
|
File.write(sriov_numvfs_path,"0")
|
|
end
|
|
end
|
|
|
|
def exists?
|
|
if File.file?(sriov_numvfs_path)
|
|
cur_value = File.read(sriov_numvfs_path)
|
|
if cur_value.to_i == sriov_numvfs_value
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
def _set_numvfs
|
|
# During an update, the content of file sriov_numvfs_path has to be set
|
|
# to 0 (ZERO), before writing the actual value
|
|
cur_value = File.read(sriov_numvfs_path)
|
|
if cur_value != 0
|
|
File.write(sriov_numvfs_path,"0")
|
|
end
|
|
File.write(sriov_numvfs_path,sriov_numvfs_value)
|
|
end
|
|
|
|
def sriov_numvfs_path
|
|
"/sys/class/net/#{sriov_get_interface}/device/sriov_numvfs"
|
|
end
|
|
|
|
def sriov_get_interface
|
|
resource[:name].split(':', 2).first
|
|
end
|
|
|
|
def sriov_numvfs_value
|
|
resource[:name].split(':', 2).last.to_i
|
|
end
|
|
|
|
end
|
|
|