{{ define "agent.config.metricsServiceOTLP" }}
otelcol.receiver.prometheus "metrics_service" {
  output {
    metrics = [otelcol.processor.attributes.metrics_service.input]
  }
}

otelcol.processor.attributes "metrics_service" {
  action {
    key = "k8s.cluster.name"
    value = {{ required ".Values.cluster.name is a required value. Please set it and try again." .Values.cluster.name | quote }}
    action = "upsert"
  }
  output {
    metrics = [otelcol.processor.batch.metrics_service.input]
  }
}
{{ with .Values.externalServices.prometheus }}
otelcol.processor.batch "metrics_service" {
  send_batch_size = {{ .processors.batch.size | int }}
  send_batch_max_size = {{ .processors.batch.maxSize | int }}
  timeout = {{ .processors.batch.timeout | quote}}
  output {
{{- if .processors.memoryLimiter.enabled }}
    metrics = [otelcol.processor.memory_limiter.metrics_service.input]
  }
}

otelcol.processor.memory_limiter "metrics_service" {
  check_interval = {{ .processors.memoryLimiter.checkInterval | quote }}
  limit = {{ .processors.memoryLimiter.limit | quote }}
  output {
{{- end }}
{{- if eq .protocol "otlp" }}
    metrics = [otelcol.exporter.otlp.metrics_service.input]
{{- end }}
{{- if eq .protocol "otlphttp" }}
    metrics = [otelcol.exporter.otlphttp.metrics_service.input]
{{- end }}
  }
}
{{ if eq .authMode "basic" }}
otelcol.auth.basic "metrics_service" {
  username = nonsensitive(remote.kubernetes.secret.metrics_service.data[{{ .basicAuth.usernameKey | quote }}])
  password = remote.kubernetes.secret.metrics_service.data[{{ .basicAuth.passwordKey | quote }}]
}
{{- end }}
{{ if eq .protocol "otlp" }}
otelcol.exporter.otlp "metrics_service" {
{{- end }}
{{- if eq .protocol "otlphttp" }}
otelcol.exporter.otlphttp "metrics_service" {
{{- end }}
  client {
    endpoint = nonsensitive(remote.kubernetes.secret.metrics_service.data[{{ .hostKey | quote }}]) + "{{ .writeEndpoint }}"
{{ if or (.basicAuth.username) (.basicAuth.password) }}
    auth = otelcol.auth.basic.metrics_service.handler
{{- end }}
{{- if .tenantId }}
    headers = { "X-Scope-OrgID" = nonsensitive(remote.kubernetes.secret.metrics_service.data[{{ .tenantIdKey | quote }}]) }
{{- end }}
{{- if .tls }}
    tls {
    {{- range $k, $v := .tls }}
      {{ $k }} = {{ $v | toJson }}
    {{- end }}
    }
{{- end }}
  }
}
{{- end }}
{{ end }}
