Merge "Add extensions list"
diff --git a/README.rst b/README.rst
index 2047af9..60eb58a 100644
--- a/README.rst
+++ b/README.rst
@@ -953,6 +953,19 @@
Instance port in the stated subnet will be associated with the dynamically generated floating IP.
+
+Enable Neutron extensions (QoS, DNS, etc.)
+------------------------------------------
+.. code-block:: yaml
+
+ neutron:
+ server:
+ backend:
+ extension:
+ - dns
+ - qos
+
+
Documentation and Bugs
======================
diff --git a/neutron/files/ocata/ml2_conf.ini b/neutron/files/ocata/ml2_conf.ini
index 0d48951..5ecafe3 100644
--- a/neutron/files/ocata/ml2_conf.ini
+++ b/neutron/files/ocata/ml2_conf.ini
@@ -137,7 +137,10 @@
# neutron.ml2.extension_drivers namespace. For example: extension_drivers =
# port_security,qos (list value)
#extension_drivers =
-extension_drivers = port_security{% if server.get('qos', 'True') %},qos{% endif %}
+{%- set tmp_ext_list = server.backend.get('extension', []) %}
+{%- do tmp_ext_list.append('port_security') if 'port_security' not in tmp_ext_list %}
+{%- do tmp_ext_list.append('qos') if server.get('qos', 'True') and 'qos' not in tmp_ext_list %}
+extension_drivers={{ tmp_ext_list|join(',') }}
# Maximum size of an IP packet (MTU) that can traverse the underlying physical
# network infrastructure without fragmentation when using an overlay/tunnel
diff --git a/neutron/files/ocata/openvswitch_agent.ini b/neutron/files/ocata/openvswitch_agent.ini
index 00c33b4..654fc76 100644
--- a/neutron/files/ocata/openvswitch_agent.ini
+++ b/neutron/files/ocata/openvswitch_agent.ini
@@ -195,9 +195,9 @@
#agent_type = Open vSwitch agent
# Extensions list to use (list value)
-{% if neutron.get('qos', 'True') %}
-extensions = qos
-{% endif %}
+{%- set tmp_ext_list = neutron.backend.get('extension', []) %}
+{%- do tmp_ext_list.append('qos') if neutron.get('qos', 'True') and 'qos' not in tmp_ext_list %}
+extensions={{ tmp_ext_list|join(',') }}
[ovs]
diff --git a/neutron/files/ocata/sriov_agent.ini b/neutron/files/ocata/sriov_agent.ini
index eebd662..9ba9c1a 100644
--- a/neutron/files/ocata/sriov_agent.ini
+++ b/neutron/files/ocata/sriov_agent.ini
@@ -122,9 +122,9 @@
#
# Extensions list to use (list value)
-{% if neutron.get('qos', 'True') %}
-extensions = qos
-{% endif %}
+{%- set tmp_ext_list = neutron.backend.get('extension', []) %}
+{%- do tmp_ext_list.append('qos') if neutron.get('qos', 'True') and 'qos' not in tmp_ext_list %}
+extensions={{ tmp_ext_list|join(',') }}
[sriov_nic]