Merge "Change extensions list type"
diff --git a/neutron/compute.sls b/neutron/compute.sls
index bb80f21..6829780 100644
--- a/neutron/compute.sls
+++ b/neutron/compute.sls
@@ -42,7 +42,7 @@
     - file: /etc/neutron/plugins/ml2/openvswitch_agent.ini
     - file: /etc/neutron/plugins/ml2/sriov_agent.ini
     {%- if compute.message_queue.get('ssl',{}).get('enabled', False) %}
-    - file: rabbitmq_ca
+    - file: rabbitmq_ca_neutron_compute
     {%- endif %}
 
 {% endif %}
@@ -74,7 +74,7 @@
       - file: /etc/neutron/fwaas_driver.ini
       {% endif %}
       {%- if compute.message_queue.get('ssl',{}).get('enabled', False) %}
-      - file: rabbitmq_ca
+      - file: rabbitmq_ca_neutron_compute
       {%- endif %}
     - require:
       - pkg: neutron_dvr_packages
@@ -114,12 +114,12 @@
     - file: /etc/neutron/neutron.conf
     - file: /etc/neutron/plugins/ml2/openvswitch_agent.ini
     {%- if compute.message_queue.get('ssl',{}).get('enabled', False) %}
-    - file: rabbitmq_ca
+    - file: rabbitmq_ca_neutron_compute
     {%- endif %}
 
 
 {%- if compute.message_queue.get('ssl',{}).get('enabled', False) %}
-rabbitmq_ca:
+rabbitmq_ca_neutron_compute:
 {%- if compute.message_queue.ssl.cacert is defined %}
   file.managed:
     - name: {{ compute.message_queue.ssl.cacert_file }}
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 5356db2..8f5e8dd 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 =
diff --git a/neutron/gateway.sls b/neutron/gateway.sls
index 96d7e9f..81513d8 100644
--- a/neutron/gateway.sls
+++ b/neutron/gateway.sls
@@ -63,12 +63,12 @@
     - file: /etc/neutron/fwaas_driver.ini
     {%- endif %}
     {%- if gateway.message_queue.get('ssl',{}).get('enabled', False) %}
-    - file: rabbitmq_ca
+    - file: rabbitmq_ca_neutron_gateway
     {%- endif %}
 
 
 {%- if gateway.message_queue.get('ssl',{}).get('enabled', False) %}
-rabbitmq_ca:
+rabbitmq_ca_neutron_gateway:
 {%- if gateway.message_queue.ssl.cacert is defined %}
   file.managed:
     - name: {{ gateway.message_queue.ssl.cacert_file }}
diff --git a/neutron/meta/grafana.yml b/neutron/meta/grafana.yml
index 74c3432..282590f 100644
--- a/neutron/meta/grafana.yml
+++ b/neutron/meta/grafana.yml
@@ -61,7 +61,7 @@
                 alias: "Fatal"
                 rawQuery: true
                 query: SELECT count(max) FROM openstack_neutron_http_response_times WHERE environment_label = '$environment' AND http_status = '5xx' AND $timeFilter
-  main:
+  main_influxdb:
     datasource: influxdb
     row:
       ost-control-plane:
@@ -77,6 +77,21 @@
               cluster_status:
                 rawQuery: true
                 query: SELECT last(value) FROM cluster_status WHERE cluster_name = 'neutron-control' AND environment_label = '$environment' AND $timeFilter GROUP BY time($interval) fill(null)
+  main_prometheus:
+    datasource: prometheus
+    row:
+      ost-control-plane:
+        title: OpenStack Control Plane
+        panel:
+          neutron:
+            title: Neutron
+            links:
+            - dashboard: Neutron
+              title: Neutron
+              type: dashboard
+            target:
+              cluster_status:
+                expr: avg(openstack_api_check_status{service=~"neutron.*"})
 {%- if pillar.neutron.get('server', {}).get('backend', {}).engine is defined and pillar.neutron.server.backend.engine == "ml2" %}
       ost-data-plane:
         title: OpenStack Data Plane
diff --git a/neutron/server.sls b/neutron/server.sls
index 3c15b67..79e5aba 100644
--- a/neutron/server.sls
+++ b/neutron/server.sls
@@ -67,7 +67,7 @@
   - watch:
     - file: /etc/neutron/neutron.conf
     {%- if server.message_queue.get('ssl',{}).get('enabled', False) %}
-    - file: rabbitmq_ca
+    - file: rabbitmq_ca_neutron_server
     {%- endif %}
 
 {%- endif %}
@@ -220,7 +220,7 @@
   - watch:
     - file: /etc/neutron/neutron.conf
     {%- if server.message_queue.get('ssl',{}).get('enabled', False) %}
-    - file: rabbitmq_ca
+    - file: rabbitmq_ca_neutron_server
     {%- endif %}
 
 {%- if grains.get('virtual_subtype', None) == "Docker" %}
@@ -236,7 +236,7 @@
 
 
 {%- if server.message_queue.get('ssl',{}).get('enabled', False) %}
-rabbitmq_ca:
+rabbitmq_ca_neutron_server:
 {%- if server.message_queue.ssl.cacert is defined %}
   file.managed:
     - name: {{ server.message_queue.ssl.cacert_file }}