{{- if or (and .Values.grafana.enabled .Values.grafana.sidecar.datasources.enabled ) .Values.grafana.forceDeployDatasource }}
{{- $ctx := dict "helm" . }}
{{- $grafanaOperator := .Values.defaultDatasources.grafanaOperator }}
{{- $fullname := include "vm.fullname" $ctx }}
{{- $output := include "vm.data.sources" . | fromYaml }}
{{- if $grafanaOperator.enabled }}
{{- range $ds := $output.datasources }}
---
apiVersion: grafana.integreatly.org/v1beta1
kind: GrafanaDatasource
metadata:
  namespace: {{ include "vm.namespace" $ }}
  name: {{ $fullname }}-{{ regexReplaceAll "[-]+" (regexReplaceAll "[^\\w]" (lower $ds.name) "-") "-" | trimSuffix "-" }}
  labels: {{ include "vm.labels" $ctx | nindent 4 }}
  {{- with $grafanaOperator.annotations }}
  annotations:
    {{- range $key, $val := . }}
    {{ $key }}: {{ $val | quote }}
    {{- end }}
  {{- end }}
  {{- $spec := deepCopy $grafanaOperator.spec }}
  {{- $_ := set $spec "datasource" $ds }}
  {{- $_ := set $ctx "ds" $ds }}
  {{- if eq (include "vm.data.source.enabled" $ctx) "false" -}}
    {{- $_ := set $spec "plugins" (list (dict "name" $ds.type "version" $ds.version)) }}
  {{- end }}
  {{- $_ := unset $ds "version" }}
spec: {{ toYaml $spec | nindent 2 }}
{{- end }}
{{- else }}
  {{- $datasources := default list }}
  {{- range $ds := $output.datasources }}
    {{- $_ := set $ctx "ds" $ds }}
    {{- if eq (include "vm.data.source.enabled" $ctx) "true" -}}
      {{- $_ := unset $ds "version" }}
      {{- $datasources = append $datasources $ds }}
    {{- end -}}
  {{- end }}
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ $fullname }}-grafana-ds
  namespace: {{ include "vm.namespace" $ }}
  {{- with $.Values.grafana.sidecar.datasources.annotations }}
  annotations: {{ toYaml $ | nindent 4 }}
  {{- end }}
  labels:
    {{ $.Values.grafana.sidecar.datasources.label }}: "1"
    {{- $app := ((printf "%s-grafana" (include "vm.name" $ctx)) | trunc 63 | trimSuffix "-") }}
    app: {{ $app }}
    {{- include "vm.labels" $ctx | nindent 4 }}
data:
  datasource.yaml: |-
    apiVersion: 1
    datasources: {{ toYaml $datasources | nindent 6 }}
{{- end }}
{{- end }}
