Implement different ways to calculate hypervisor disk total

Depends on ceph enabled or not we have different ways to calculate
total hypervisor disk stats.

Related-PROD: PROD-18535

Change-Id: I5d76ddef20c8b5cb7936d3068a088bc739d427e3
diff --git a/nova/files/grafana_dashboards/nova_prometheus.json b/nova/files/grafana_dashboards/nova_prometheus.json
index 932f451..8ec0841 100644
--- a/nova/files/grafana_dashboards/nova_prometheus.json
+++ b/nova/files/grafana_dashboards/nova_prometheus.json
@@ -3381,7 +3381,13 @@
           "tableColumn": "",
           "targets": [
             {
+              {%- endraw %}
+              {%- if parameters is defined and parameters.get('nova_compute_ceph_ephemeral', False) == True %}
+              "expr": "max(avg(openstack_nova_used_disk) by (instance))",
+              {%- else %}
               "expr": "max(sum(openstack_nova_used_disk) by (instance))",
+              {%- endif %}
+              {%- raw %}
               "format": "time_series",
               "intervalFactor": 2,
               "legendFormat": "",
@@ -3615,7 +3621,13 @@
           "tableColumn": "",
           "targets": [
             {
+              {%- endraw %}
+              {%- if parameters is defined and parameters.get('nova_compute_ceph_ephemeral', False) == True %}
+              "expr": "max(avg(openstack_nova_disk_available) by (instance))",
+              {%- else %}
               "expr": "max(sum(openstack_nova_disk - openstack_nova_used_disk) by (instance))",
+              {%- endif %}
+              {%- raw %}
               "format": "time_series",
               "intervalFactor": 2,
               "legendFormat": "",
diff --git a/nova/files/grafana_dashboards/nova_prometheus_fluentd.json b/nova/files/grafana_dashboards/nova_prometheus_fluentd.json
index 7479452..978f951 100644
--- a/nova/files/grafana_dashboards/nova_prometheus_fluentd.json
+++ b/nova/files/grafana_dashboards/nova_prometheus_fluentd.json
@@ -3205,7 +3205,13 @@
           "tableColumn": "",
           "targets": [
             {
+              {%- endraw %}
+              {%- if parameters is defined and parameters.get('nova_compute_ceph_ephemeral', False) == True %}
+              "expr": "max(avg(openstack_nova_used_disk) by (instance))",
+              {%- else %}
               "expr": "max(sum(openstack_nova_used_disk) by (instance))",
+              {%- endif %}
+              {%- raw %}
               "format": "time_series",
               "intervalFactor": 2,
               "legendFormat": "",
@@ -3439,7 +3445,13 @@
           "tableColumn": "",
           "targets": [
             {
+              {%- endraw %}
+              {%- if parameters is defined and parameters.get('nova_compute_ceph_ephemeral', False) == True %}
+              "expr": "max(avg(openstack_nova_disk_available) by (instance))",
+              {%- else %}
               "expr": "max(sum(openstack_nova_disk - openstack_nova_used_disk) by (instance))",
+              {%- endif %}
+              {%- raw %}
               "format": "time_series",
               "intervalFactor": 2,
               "legendFormat": "",
diff --git a/nova/meta/grafana.yml b/nova/meta/grafana.yml
index 7ebae7c..1276f54 100644
--- a/nova/meta/grafana.yml
+++ b/nova/meta/grafana.yml
@@ -1,3 +1,8 @@
+{%- from "nova/map.jinja" import compute with context %}
+parameters:
+  {%- if compute is defined and compute.get('enabled', False) and compute.get('ceph', {}).get('ephemeral', False) %}
+  nova_compute_ceph_ephemeral: True
+  {%- endif %}
 dashboard:
 {%- if pillar.get('fluentd', {}).get('agent', {}).get('enabled', False) %}
   nova_prometheus: