{{- if not .Values.serviceDns.mixedService }}
apiVersion: v1
kind: Service
metadata:
  name: {{ template "pihole.fullname" . }}-dns-udp
  labels:
    app: {{ template "pihole.name" . }}
    chart: {{ template "pihole.chart" . }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
{{- if .Values.serviceDns.annotations }}
  annotations:
{{ toYaml .Values.serviceDns.annotations | indent 4 }}
{{- end }}
spec:
  type: {{ .Values.serviceDns.type }}
  {{- if and (.Values.dualStack.enabled) (not (eq .Values.serviceDns.type "LoadBalancer")) }}
  ipFamilies:
  - IPv4
  - IPv6
  ipFamilyPolicy: PreferDualStack
  {{- end }}
  {{- if .Values.serviceDns.loadBalancerIP }}
  loadBalancerIP: {{ .Values.serviceDns.loadBalancerIP }}
  {{- end }}
  {{- if or (eq .Values.serviceDns.type "NodePort") (eq .Values.serviceDns.type "LoadBalancer") }}
  externalTrafficPolicy: {{ .Values.serviceDns.externalTrafficPolicy }}
  {{- end }}
  ports:
    - port: {{ .Values.serviceDns.port }}
      targetPort: dns-udp
      {{- if and (.Values.serviceDns.nodePort) (eq .Values.serviceDns.type "NodePort") }}
      nodePort: {{ .Values.serviceDns.nodePort }}
      {{- end }}
      protocol: UDP
      name: dns-udp
  selector:
    app: {{ template "pihole.name" . }}
    release: {{ .Release.Name }}
---
{{- if and (.Values.dualStack.enabled) (eq .Values.serviceDns.type "LoadBalancer") -}}
apiVersion: v1
kind: Service
metadata:
  name: {{ template "pihole.fullname" . }}-dns-udp-ipv6
  labels:
    app: {{ template "pihole.name" . }}
    chart: {{ template "pihole.chart" . }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
{{- if .Values.serviceDns.annotations }}
  annotations:
{{ toYaml .Values.serviceDns.annotations | indent 4 }}
{{- end }}
spec:
  type: {{ .Values.serviceDns.type }}
  ipFamilies:
  - IPv6
  ipFamilyPolicy: SingleStack
  {{- if .Values.serviceDns.loadBalancerIPv6 }}
  loadBalancerIP: {{ .Values.serviceDns.loadBalancerIPv6 }}
  {{- end }}
  {{- if or (eq .Values.serviceDns.type "NodePort") (eq .Values.serviceDns.type "LoadBalancer") }}
  externalTrafficPolicy: {{ .Values.serviceDns.externalTrafficPolicy }}
  {{- end }}
  ports:
    - port: {{ .Values.serviceDns.port }}
      targetPort: dns-udp
      protocol: UDP
      name: dns-udp
  selector:
    app: {{ template "pihole.name" . }}
    release: {{ .Release.Name }}
{{- end }}
{{- end }}
