#
# 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.
#

{{- if .Values.extra.dashboard }}
apiVersion: apps/v1
kind: Deployment
metadata:
  name: "{{ template "pulsar.fullname" . }}-{{ .Values.dashboard.component }}"
  namespace: {{ template "pulsar.namespace" . }}
  labels:
    {{- include "pulsar.standardLabels" . | nindent 4 }}
    component: {{ .Values.dashboard.component }}
spec:
  replicas: {{ .Values.dashboard.replicaCount }}
  selector:
    matchLabels:
      app: {{ template "pulsar.name" . }}
      release: {{ .Release.Name }}
      component: {{ .Values.dashboard.component }}
  template:
    metadata:
      labels:
        {{- include "pulsar.template.labels" . | nindent 8 }}
        component: {{ .Values.dashboard.component }}

      annotations:
{{ toYaml .Values.dashboard.annotations | indent 8 }}
    spec:
    {{- if .Values.dashboard.nodeSelector }}
      nodeSelector:
{{ toYaml .Values.dashboard.nodeSelector | indent 8 }}
    {{- end }}
    {{- if .Values.dashboard.tolerations }}
      tolerations:
{{ toYaml .Values.dashboard.tolerations | indent 8 }}
    {{- end }}
      terminationGracePeriodSeconds: {{ .Values.dashboard.gracePeriod }}
      containers:
      - name: "{{ template "pulsar.fullname" . }}-{{ .Values.dashboard.component }}"
        image: "{{ .Values.dashboard.image.repository }}:{{ .Values.dashboard.image.tag }}"
        imagePullPolicy: {{ .Values.dashboard.image.pullPolicy }}
      {{- if .Values.dashboard.resources }}
        resources:
{{ toYaml .Values.dashboard.resources | indent 10 }}
      {{- end }}
        ports:
        - name: http
          containerPort: 80
        env:
        - name: SERVICE_URL
          value: http://{{ template "pulsar.fullname" . }}-{{ .Values.broker.component }}:8080/
{{- end }}
