{{- if .Values.service.enabled -}}
apiVersion: v1
kind: Service
metadata:
  name: {{ include "telegraf.fullname" . }}
  labels:
    {{- include "telegraf.labels" . | nindent 4 }}
  {{- if .Values.service.annotations }}
  annotations:
{{ toYaml .Values.service.annotations | indent 4 }}
  {{- end }}
spec:
  type: {{ .Values.service.type }}
  ports:
  {{- if .Values.metrics.health.enabled }}
  - port: 8888
    targetPort: 8888
    name: "health"
  {{- end }}
  {{- range $objectKey, $objectValue := .Values.config.inputs }}
  {{- range $key, $value := . -}}
    {{- $tp := typeOf $value -}}
    {{- if eq $key "http_listener" }}
  - port: {{ trimPrefix ":" $value.service_address | int64 }}
    targetPort: {{ trimPrefix ":" $value.service_address | int64 }}
    name: "http-listener"
    {{- end }}
    {{- if eq $key "influxdb_listener" }}
  - port: {{ trimPrefix ":" $value.service_address | int64 }}
    targetPort: {{ trimPrefix ":" $value.service_address | int64 }}
    name: "influxdb-listener"
    {{- end }}
    {{- if eq $key "http_listener_v2" }}
  - port: {{ trimPrefix ":" $value.service_address | int64 }}
    targetPort: {{ trimPrefix ":" $value.service_address | int64 }}
    name: "http-listener-v2"
    {{- end }}
    {{- if eq $key "statsd" }}
  - port: {{ trimPrefix ":" $value.service_address | int64 }}
    targetPort: {{ trimPrefix ":" $value.service_address | int64 }}
    protocol: "UDP"
    name: "statsd"
    {{- end }}
    {{- if eq $key "tcp_listener" }}
  - port: {{ trimPrefix ":" $value.service_address | int64 }}
    targetPort: {{ trimPrefix ":" $value.service_address | int64 }}
    name: "tcp-listener"
    {{- end }}
    {{- if eq $key "udp_listener" }}
  - port: {{ trimPrefix ":" $value.service_address | int64 }}
    targetPort: {{ trimPrefix ":" $value.service_address | int64 }}
    protocol: "UDP"
    name: "udp-listener"
    {{- end }}
    {{- if eq $key "webhooks" }}
  - port: {{ trimPrefix ":" $value.service_address | int64 }}
    targetPort: {{ trimPrefix ":" $value.service_address | int64 }}
    name: "webhooks"
    {{- end }}
  {{- end -}}
  {{- end }}
  {{- range $objectKey, $objectValue := .Values.config.outputs }}
  {{- range $key, $value := . -}}
    {{- $tp := typeOf $value -}}
    {{- if eq $key "prometheus_client" }}
  - port: {{ trimPrefix ":" $value.listen | int64 }}
    targetPort: {{ trimPrefix ":" $value.listen | int64 }}
    name: "prometheus-client"
    {{- end }}
  {{- end -}}
  {{- end }}
  selector:
    {{- include "telegraf.selectorLabels" . | nindent 4 }}
{{- end -}}