SRIOV support
Enable SRIOV support in nova scheduler and compute.
Change-Id: Ib1d180a5eb47221d322e4d147dd845aa63b1b408
Epic: PROD-8956
diff --git a/README.rst b/README.rst
index c5080b7..86fb99b 100644
--- a/README.rst
+++ b/README.rst
@@ -260,6 +260,25 @@
flavor:
...
+SRIOV
+------
+
+Add PciPassthroughFilter into scheduler filters and NICs on specific compute nodes.
+
+.. code-block:: yaml
+
+ nova:
+ controller:
+ sriov: true
+ scheduler_default_filters: "DifferentHostFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,PciPassthroughFilter"
+
+ nova:
+ compute:
+ sriov:
+ nic_one:
+ devname: eth1
+ physical_network: physnet1
+
Documentation and Bugs
============================
diff --git a/nova/files/liberty/nova-compute.conf.Debian b/nova/files/liberty/nova-compute.conf.Debian
index a9dc806..09b73fa 100644
--- a/nova/files/liberty/nova-compute.conf.Debian
+++ b/nova/files/liberty/nova-compute.conf.Debian
@@ -17,6 +17,10 @@
volumes_path=/var/lib/nova/volumes
enabled_apis=ec2,osapi_compute,metadata
+{%- for nic_name, sriov in compute.sriov.iteritems() %}
+pci_passthrough_whitelist = {"devname":"{{ sriov.devname }}","physical_network":"{{ sriov.physical_network }}"}
+{%- endfor %}
+
{%- if compute.image.use_cow is defined %}
use_cow_images = {{ compute.image.use_cow }}
{%- endif %}
diff --git a/nova/files/liberty/nova-controller.conf.Debian b/nova/files/liberty/nova-controller.conf.Debian
index 2c6145a..4aebb27 100644
--- a/nova/files/liberty/nova-controller.conf.Debian
+++ b/nova/files/liberty/nova-controller.conf.Debian
@@ -23,6 +23,10 @@
ram_allocation_ratio = {{ controller.ram_allocation_ratio }}
disk_allocation_ratio = {{ controller.disk_allocation_ratio }}
scheduler_default_filters = {{ controller.scheduler_default_filters }}
+{%- if controller.sriov %}
+scheduler_available_filters = nova.scheduler.filters.all_filters
+scheduler_available_filters = nova.scheduler.filters.pci_passthrough_filter.PciPassthroughFilter
+{%- endif %}
osapi_max_limit = {{ controller.osapi_max_limit|default('1000') }}
allow_resize_to_same_host = True
diff --git a/nova/files/mitaka/nova-compute.conf.Debian b/nova/files/mitaka/nova-compute.conf.Debian
index af03d27..ee3dbbb 100644
--- a/nova/files/mitaka/nova-compute.conf.Debian
+++ b/nova/files/mitaka/nova-compute.conf.Debian
@@ -19,6 +19,10 @@
vif_plugging_timeout=300
dhcp_domain={{ compute.get('dhcp_domain', 'novalocal') }}
+{%- for nic_name, sriov in compute.sriov.iteritems() %}
+pci_passthrough_whitelist = {"devname":"{{ sriov.devname }}","physical_network":"{{ sriov.physical_network }}"}
+{%- endfor %}
+
{%- if compute.image.use_cow is defined %}
use_cow_images = {{ compute.image.use_cow }}
{%- endif %}
diff --git a/nova/files/mitaka/nova-controller.conf.Debian b/nova/files/mitaka/nova-controller.conf.Debian
index b5b0a77..bf681db 100644
--- a/nova/files/mitaka/nova-controller.conf.Debian
+++ b/nova/files/mitaka/nova-controller.conf.Debian
@@ -20,6 +20,10 @@
ram_allocation_ratio = {{ controller.ram_allocation_ratio }}
disk_allocation_ratio = {{ controller.disk_allocation_ratio }}
scheduler_default_filters = {{ controller.scheduler_default_filters }}
+{%- if controller.sriov %}
+scheduler_available_filters = nova.scheduler.filters.all_filters
+scheduler_available_filters = nova.scheduler.filters.pci_passthrough_filter.PciPassthroughFilter
+{%- endif %}
scheduler_driver = filter_scheduler
allow_resize_to_same_host = True
osapi_max_limit = {{ controller.osapi_max_limit|default('1000') }}