Inaccurate mechanism drivers iteration fix.
Currently:
- l2_population mechanism enforced and could not be excluded.
- mechanism could lack of driver key which leads to failure.
This change fixes code syntax and increases flexibility for option.
Change-Id: I5921d29f77e4a9992d7527221ef5ade22fb17766
diff --git a/neutron/files/mitaka/ml2_conf.ini b/neutron/files/mitaka/ml2_conf.ini
index 9a8e79c..19ce326 100644
--- a/neutron/files/mitaka/ml2_conf.ini
+++ b/neutron/files/mitaka/ml2_conf.ini
@@ -96,7 +96,14 @@
# An ordered list of networking mechanism driver entrypoints to be loaded from the neutron.ml2.mechanism_drivers namespace. (list value)
#mechanism_drivers =openvswitch,l2population
-mechanism_drivers ={%- for backend_name, mechanism in server.backend.get('mechanism', {}).iteritems() %}{{ mechanism.driver }},{%- endfor %}l2population
+{%- set mechanism_drivers = [] %}
+{%- for mechanism_name, mechanism in server.get('backend', {}).get('mechanism', []).items() %}
+{%- do mechanism_drivers.append(mechanism.get('driver')) if 'driver' in mechanism %}
+{%- endfor %}
+{%- if server.get('dvr', False) %}
+{%- do mechanism_drivers.append('l2population') %}
+{%- endif %}
+mechanism_drivers = {{ ','.join(mechanism_drivers) }}
# An ordered list of extension driver entrypoints to be loaded from the neutron.ml2.extension_drivers namespace. For example:
# extension_drivers = port_security,qos (list value)
diff --git a/neutron/files/newton/ml2_conf.ini b/neutron/files/newton/ml2_conf.ini
index 9a8e79c..19ce326 100644
--- a/neutron/files/newton/ml2_conf.ini
+++ b/neutron/files/newton/ml2_conf.ini
@@ -96,7 +96,14 @@
# An ordered list of networking mechanism driver entrypoints to be loaded from the neutron.ml2.mechanism_drivers namespace. (list value)
#mechanism_drivers =openvswitch,l2population
-mechanism_drivers ={%- for backend_name, mechanism in server.backend.get('mechanism', {}).iteritems() %}{{ mechanism.driver }},{%- endfor %}l2population
+{%- set mechanism_drivers = [] %}
+{%- for mechanism_name, mechanism in server.get('backend', {}).get('mechanism', []).items() %}
+{%- do mechanism_drivers.append(mechanism.get('driver')) if 'driver' in mechanism %}
+{%- endfor %}
+{%- if server.get('dvr', False) %}
+{%- do mechanism_drivers.append('l2population') %}
+{%- endif %}
+mechanism_drivers = {{ ','.join(mechanism_drivers) }}
# An ordered list of extension driver entrypoints to be loaded from the neutron.ml2.extension_drivers namespace. For example:
# extension_drivers = port_security,qos (list value)
diff --git a/neutron/files/ocata/ml2_conf.ini b/neutron/files/ocata/ml2_conf.ini
index 5ecafe3..b32a5b5 100644
--- a/neutron/files/ocata/ml2_conf.ini
+++ b/neutron/files/ocata/ml2_conf.ini
@@ -131,7 +131,14 @@
# An ordered list of networking mechanism driver entrypoints to be loaded from
# the neutron.ml2.mechanism_drivers namespace. (list value)
#mechanism_drivers =
-mechanism_drivers ={%- for backend_name, mechanism in server.backend.get('mechanism', {}).iteritems() %}{{ mechanism.driver }},{%- endfor %}l2population
+{%- set mechanism_drivers = [] %}
+{%- for mechanism_name, mechanism in server.get('backend', {}).get('mechanism', []).items() %}
+{%- do mechanism_drivers.append(mechanism.get('driver')) if 'driver' in mechanism %}
+{%- endfor %}
+{%- if server.get('dvr', False) %}
+{%- do mechanism_drivers.append('l2population') %}
+{%- endif %}
+mechanism_drivers = {{ ','.join(mechanism_drivers) }}
# An ordered list of extension driver entrypoints to be loaded from the
# neutron.ml2.extension_drivers namespace. For example: extension_drivers =