Merge "Change some default values for Rabbit driver"
diff --git a/_modules/novang.py b/_modules/novang.py
index 791e185..dbfc297 100644
--- a/_modules/novang.py
+++ b/_modules/novang.py
@@ -561,8 +561,13 @@
         kstone = __salt__['keystoneng.auth'](profile, **kwargs)
         self.session = kstone.session
         self.version = str(kwargs.get('version', 2))
-        self.compute_conn = client.Client(version=self.version, session=self.session)
-        self.volume_conn = client.Client(version=self.version, session=self.session)
+        self.endpoint_type = str(kwargs.get('connection_endpoint_type', 'internal'))
+        self.compute_conn = client.Client(version=self.version,
+                                          session=self.session,
+                                          endpoint_type=self.endpoint_type)
+        self.volume_conn = client.Client(version=self.version,
+                                         session=self.session,
+                                         endpoint_type=self.endpoint_type)
 
     def expand_extensions(self):
         for connection in (self.compute_conn, self.volume_conn):
diff --git a/_states/novav21.py b/_states/novav21.py
index 0d8d76d..be424b7 100644
--- a/_states/novav21.py
+++ b/_states/novav21.py
@@ -197,7 +197,7 @@
             name, availability_zone_name, cloud_name=cloud_name)
         if metadata:
             _call_nova_salt_module('aggregate_set_metadata', name)(
-                cloud_name=cloud_name, **metadata)
+                name, cloud_name=cloud_name, **metadata)
             aggregate['metadata'] = metadata
         for host in hosts or []:
             _call_nova_salt_module('aggregate_add_host', name)(
@@ -209,7 +209,7 @@
         changes = {}
         existing_meta = set(aggregate['metadata'].items())
         requested_meta = set(metadata.items())
-        if hosts and (existing_meta - requested_meta or requested_meta - existing_meta):
+        if existing_meta - requested_meta or requested_meta - existing_meta:
             _call_nova_salt_module('aggregate_set_metadata', name)(
                 name, cloud_name=cloud_name, **metadata)
             changes['metadata'] = metadata
diff --git a/nova/controller.sls b/nova/controller.sls
index cf342ae..dfd33ff 100644
--- a/nova/controller.sls
+++ b/nova/controller.sls
@@ -2,6 +2,11 @@
 
 {%- if controller.get('enabled') %}
 
+{%- set nova_manage_cell_v2_discover_hosts_args = ["--verbose"] %}
+{%- if controller.version not in ["juno", "kilo", "liberty", "mitaka", "newton", "ocata"] %}
+{%- do nova_manage_cell_v2_discover_hosts_args.append("--by-service") %}
+{%- endif %}
+
 include:
   {%- if controller.version not in ["juno", "kilo", "liberty", "mitaka", "newton"] %}
   - apache
@@ -458,7 +463,7 @@
 
 nova_controller_discover_hosts:
   cmd.run:
-  - name: nova-manage cell_v2 discover_hosts --verbose --by-service
+  - name: nova-manage cell_v2 discover_hosts {{ nova_manage_cell_v2_discover_hosts_args | join(' ') }}
   {%- if grains.get('noservices') %}
   - onlyif: /bin/false
   {%- endif %}
diff --git a/nova/files/grafana_dashboards/nova_overview_prometheus.json b/nova/files/grafana_dashboards/nova_overview_prometheus.json
index fbde0bd..f6bb024 100644
--- a/nova/files/grafana_dashboards/nova_overview_prometheus.json
+++ b/nova/files/grafana_dashboards/nova_overview_prometheus.json
@@ -102,14 +102,14 @@
       "tableColumn": "",
       "targets": [
         {
-          "expr": "min(openstack_api_check_status{name=\"nova\"})",
+          "expr": "openstack_api_check_status{interface=\"public\",service_name=\"nova\"}",
           "format": "time_series",
           "intervalFactor": 2,
           "refId": "A"
         }
       ],
       "thresholds": "0.5,0.5",
-      "title": "VIP API availability",
+      "title": "Public VIP API Availability",
       "type": "singlestat",
       "valueFontSize": "80%",
       "valueMaps": [
diff --git a/nova/files/grafana_dashboards/nova_prometheus.json b/nova/files/grafana_dashboards/nova_prometheus.json
index 8ec0841..5764563 100644
--- a/nova/files/grafana_dashboards/nova_prometheus.json
+++ b/nova/files/grafana_dashboards/nova_prometheus.json
@@ -72,16 +72,15 @@
           "tableColumn": "",
           "targets": [
             {
-              "expr": "min(openstack_api_check_status{service=\"nova\"})",
+              "expr": "openstack_api_check_status{interface=\"public\",service_name=\"nova\"}",
               "format": "time_series",
               "intervalFactor": 2,
-              "legendFormat": "{{ service }}",
               "refId": "A",
               "step": 60
             }
           ],
           "thresholds": "0.5,1.5",
-          "title": "API Availability",
+          "title": "Public VIP API Availability",
           "type": "singlestat",
           "valueFontSize": "80%",
           "valueMaps": [
diff --git a/nova/files/grafana_dashboards/nova_prometheus_fluentd.json b/nova/files/grafana_dashboards/nova_prometheus_fluentd.json
index 978f951..1fd3a3a 100644
--- a/nova/files/grafana_dashboards/nova_prometheus_fluentd.json
+++ b/nova/files/grafana_dashboards/nova_prometheus_fluentd.json
@@ -72,16 +72,15 @@
           "tableColumn": "",
           "targets": [
             {
-              "expr": "min(openstack_api_check_status{service=\"nova\"})",
+              "expr": "openstack_api_check_status{interface=\"public\",service_name=\"nova\"}",
               "format": "time_series",
               "intervalFactor": 2,
-              "legendFormat": "{{ service }}",
               "refId": "A",
               "step": 60
             }
           ],
           "thresholds": "0.5,1.5",
-          "title": "API Availability",
+          "title": "Public VIP API Availability",
           "type": "singlestat",
           "valueFontSize": "80%",
           "valueMaps": [
diff --git a/nova/meta/grafana.yml b/nova/meta/grafana.yml
index 4561b11..0ed0b1a 100644
--- a/nova/meta/grafana.yml
+++ b/nova/meta/grafana.yml
@@ -159,4 +159,4 @@
               type: dashboard
             target:
               cluster_status:
-                expr: avg(openstack_api_check_status{service="nova"})
+                expr: openstack_api_check_status{interface="public",service_name="nova"}
diff --git a/nova/meta/prometheus.yml b/nova/meta/prometheus.yml
index 04d3384..7b03f29 100644
--- a/nova/meta/prometheus.yml
+++ b/nova/meta/prometheus.yml
@@ -274,26 +274,6 @@
   alert:
 {%- if is_controller %}
 {% raw %}
-    NovaApiOutage:
-      if: >-
-        max(openstack_api_check_status{name=~"nova.*|placement"}) == 0
-      labels:
-        severity: critical
-        service: nova
-      annotations:
-        summary: "Nova API outage"
-        description: >-
-          Nova API is not accessible for all available Nova endpoints in the OpenStack service catalog.
-    NovaApiDown:
-      if: >-
-        openstack_api_check_status{name=~"nova.*|placement"} == 0
-      labels:
-        severity: major
-        service: nova
-      annotations:
-        summary: "{{ $labels.name }} endpoint is not accessible"
-        description: >-
-          Nova API is not accessible for the {{ $labels.name }} endpoint.
     NovaApiEndpointDown:
       if: >-
         http_response_status{name=~"nova-api"} == 0