# Copyright 2020-present Open Networking Foundation
# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-dashboards
{{- if .Values.dashboardNamespace }}
  namespace: {{ .Values.dashboardNamespace }}
{{- end }}
  labels:
     grafana_dashboard: "1"
data:
{{- if .Values.globalDashboard }}
{{- if and .Values.edgeServerDatasourceURL .Values.googleCloudMonitoring }}
{{ (.Files.Glob "dashboards/global*.json").AsConfig | indent 2 }}
{{- end }}
{{- end }}
{{- if .Values.multiSiteDashboard }}
{{- if and .Values.edgeServerDatasourceURL .Values.clusterDatasources }}
{{ (.Files.Glob "dashboards/multi*.json").AsConfig | indent 2 }}
{{- end }}
{{- end }}
{{- if .Values.enterpriseDashboard }}
{{- if and .Values.edgeServerDatasourceURL .Values.clusterDatasources }}
{{- $path := printf "dashboards/%s*.json" .Values.enterpriseDashboard }}
{{ (.Files.Glob $path).AsConfig | indent 2 }}
{{- end }}
{{- end }}
{{- if .Values.sdCoreDashboard }}
{{- if .Values.sdCoreDatasourceURL }}
{{ (.Files.Glob "dashboards/sdcore*.json").AsConfig | indent 2 }}
{{- end }}
{{- end }}