{{- $app := .Values.server }}
{{- $route := $app.route }}
{{- if and $app.enabled $route.enabled  }}
{{- $ctx := dict "helm" . "appKey" "server" }}
{{- $fullname := include "vm.plain.fullname" $ctx }}
{{- $ns := include "vm.namespace" $ctx }}
---
apiVersion: {{ $route.apiVersion | default "gateway.networking.k8s.io/v1" }}
kind: {{ $route.kind | default "HTTPRoute" }}
metadata:
  name: {{ $fullname }}
  namespace: {{ $ns }}
  {{- $_ := set $ctx "extraLabels" $app.route.extraLabels }}
  labels: {{ include "vm.labels" $ctx | nindent 4 }}
  {{- $_ := unset $ctx "extraLabels" }}
  {{- with $route.annotations }}
  annotations: {{ tpl (toYaml .) $ | nindent 4 }}
  {{- end }}
spec:
  {{- with $route.parentRefs }}
  parentRefs: {{ toYaml . | nindent 4 }}
  {{- end }}
  {{- with $route.hostnames }}
  hostnames: {{ tpl (toYaml .) $ | nindent 4 }}
  {{- end }}
  rules:
    {{- with $route.extraRules }}
    {{- tpl (toYaml .) $ | nindent 4 }}
    {{- end }}
    - backendRefs:
        - name: {{ $fullname }}
          port: {{ $route.port | default (include "vm.port.from.flag" (dict "flag" ($app.extraArgs).httpListenAddr)) }}
          group: ''
          kind: Service
          weight: 1
      {{- with $route.filters }}
      filters: {{ toYaml . | nindent 8 }}
      {{- end }}
      {{- with $route.matches }}
      matches: {{ tpl (toYaml .) $ | nindent 8 }}
      {{- end }}

{{- end }}
