{{- /*
# *****************************************************************************
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#
# ******************************************************************************
*/ -}}

{{- $route := .Values.keycloak.route -}}
{{- if $route.enabled -}}
apiVersion: route.openshift.io/v1
kind: Route
metadata:
  name: {{ include "keycloak.fullname" . }}
  {{- with $route.annotations }}
  annotations:
    {{- toYaml . | nindent 4 }}
  {{- end }}
  labels:
    {{- include "keycloak.commonLabels" . | nindent 4 }}
    {{- with $route.labels }}
    {{- toYaml . | nindent 4 }}
    {{- end }}
spec:
{{- if $route.host }}
  host: {{ $route.host }}
{{- end }}
  path: {{ $route.path }}
  port:
    targetPort: http
  to:
    kind: Service
    name: {{ include "keycloak.fullname" $ }}-http
    weight: 100
  {{- if $route.tls.enabled }}
  tls:
    insecureEdgeTerminationPolicy: {{ $route.tls.insecureEdgeTerminationPolicy }}
    termination: {{ $route.tls.termination }}
  {{- end }}
{{- end -}}
