{{ define "agent.config.loki" }}
// Loki
remote.kubernetes.secret "logs_service" {
  name = {{ include "kubernetes_monitoring.logs_service.secret.name" . | quote}}
  namespace = {{ .Values.externalServices.loki.secret.namespace | default .Release.Namespace | quote }}
}

otelcol.exporter.loki "otel_to_loki_converter" {
  forward_to = [loki.write.grafana_cloud_loki.receiver]
}

{{- with .Values.externalServices.loki }}
loki.write "grafana_cloud_loki" {
  endpoint {
    url = nonsensitive(remote.kubernetes.secret.logs_service.data[{{ .hostKey | quote }}]) + "{{ .writeEndpoint }}"
    tenant_id = nonsensitive(remote.kubernetes.secret.logs_service.data[{{ .tenantIdKey | quote }}])
{{- if .proxyURL }}
    proxy_url = {{ .proxyURL | quote }}
{{- end }}
{{ if eq .authMode "basic" }}
    basic_auth {
      username = nonsensitive(remote.kubernetes.secret.logs_service.data[{{ .basicAuth.usernameKey | quote }}])
      password = remote.kubernetes.secret.logs_service.data[{{ .basicAuth.passwordKey | quote }}]
    }
{{- end }}
{{- if .tls }}
    tls_config {
    {{- range $k, $v := .tls }}
      {{ $k }} = {{ $v | toJson }}
    {{- end }}
    }
{{- end }}
  }
  external_labels = {
    {{- range $k, $v := .externalLabels }}
    {{ $k }} = {{ $v | quote }},
    {{- end }}
{{- end }}
    cluster = {{ required ".Values.cluster.name is a required value. Please set it and try again." .Values.cluster.name | quote }},
  }
}
{{ end }}
