{{/*

 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.supersetWebsockets.enabled }}
apiVersion: apps/v1
kind: Deployment
metadata:
  name: "{{ template "superset.fullname" . }}-ws"
  namespace: {{ .Release.Namespace }}
  labels:
    app: "{{ template "superset.name" . }}-ws"
    chart: {{ template "superset.chart" . }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
  {{- if .Values.supersetWebsockets.deploymentAnnotations }}
  annotations: {{- toYaml .Values.supersetWebsockets.deploymentAnnotations | nindent 4 }}
  {{- end }}
spec:
  replicas: {{ .Values.supersetWebsockets.replicaCount }}
  selector:
    matchLabels:
    {{- include "supersetWebsockets.selectorLabels" . | nindent 6 }}
  {{- if .Values.supersetWebsockets.strategy }}
  strategy: {{- toYaml .Values.supersetWebsockets.strategy | nindent 4 }}
  {{- end }}
  template:
    metadata:
      annotations:
        checksum/wsconfig: {{ tpl (toJson .Values.supersetWebsockets.config) . | sha256sum }}
        checksum/secrets: {{ tpl (toJson .Values.extraSecretEnv) . | sha256sum }}
        {{- if .Values.supersetWebsockets.podAnnotations }}
          {{- toYaml .Values.supersetWebsockets.podAnnotations | nindent 8 }}
        {{- end }}
      labels:
        app: "{{ template "superset.name" . }}-ws"
        release: {{ .Release.Name }}
        {{- if .Values.supersetWebsockets.podLabels }}
          {{- toYaml .Values.supersetWebsockets.podLabels | nindent 8 }}
        {{- end }}
    spec:
      {{- if or (.Values.serviceAccount.create) (.Values.serviceAccountName) }}
      serviceAccountName: {{ template "superset.serviceAccountName" . }}
      {{- end }}
      securityContext:
        runAsUser: {{ .Values.runAsUser }}
        {{- if .Values.supersetWebsockets.podSecurityContext }}
          {{- toYaml .Values.supersetWebsockets.podSecurityContext | nindent 8 }}
        {{- end }}
      {{- with .Values.hostAliases }}
      hostAliases: {{- toYaml . | nindent 6 }}
      {{- end }}
      containers:
        - name: "{{ .Chart.Name }}-ws"
          image: "{{ .Values.supersetWebsockets.image.repository }}:{{ .Values.supersetWebsockets.image.tag }}"
          imagePullPolicy: {{ .Values.supersetWebsockets.image.pullPolicy }}
          {{- if .Values.supersetWebsockets.containerSecurityContext }}
          securityContext: {{- toYaml .Values.supersetWebsockets.containerSecurityContext | nindent 12 }}
          {{- end }}
          command: {{  tpl (toJson .Values.supersetWebsockets.command) . }}
          # Passing all the envs is a bit blunt... we only need a few (see https://github.com/apache/superset/blob/master/superset-websocket/src/config.ts)...
          env:
            {{- range $key, $value := .Values.extraEnv }}
            - name: {{ $key | quote}}
              value: {{ $value | quote }}
            {{- end }}
            {{- if .Values.extraEnvRaw }}
              {{- toYaml .Values.extraEnvRaw | nindent 12 }}
            {{- end }}
          envFrom:
            - secretRef:
                name: {{ tpl .Values.envFromSecret . | quote }}
            {{- range .Values.envFromSecrets }}
            - secretRef:
                name: {{ tpl . $ | quote }}
            {{- end }}
          ports:
            - name: ws
              containerPort: {{ .Values.supersetWebsockets.config.port }}
              protocol: TCP
          volumeMounts:
            - name: superset-ws-config
              mountPath: /home/superset-websocket/config.json
              subPath: config.json
              readOnly: true
          resources:
            {{- if .Values.supersetWebsockets.resources }}
              {{- toYaml .Values.supersetWebsockets.resources | nindent 12 }}
            {{- else }}
              {{- toYaml .Values.resources | nindent 12 }}
            {{- end }}
          {{- if .Values.supersetWebsockets.startupProbe }}
          startupProbe: {{- .Values.supersetWebsockets.startupProbe | toYaml | nindent 12 }}
          {{- end }}
          {{- if .Values.supersetWebsockets.readinessProbe }}
          readinessProbe: {{- .Values.supersetWebsockets.readinessProbe | toYaml | nindent 12 }}
          {{- end }}
          {{- if .Values.supersetWebsockets.livenessProbe }}
          livenessProbe: {{- .Values.supersetWebsockets.livenessProbe | toYaml | nindent 12 }}
          {{- end }}
        {{- if .Values.supersetWebsockets.extraContainers }}
            {{- toYaml .Values.supersetWebsockets.extraContainers | nindent 8 }}
        {{- end }}
      {{- with .Values.nodeSelector }}
      nodeSelector: {{- toYaml . | nindent 8 }}
      {{- end }}
      {{- if or .Values.affinity .Values.supersetWebsockets.affinity }}
      affinity:
        {{- with .Values.affinity }}
          {{- toYaml . | nindent 8 }}
        {{- end }}
        {{- with .Values.supersetWebsockets.affinity }}
          {{- toYaml . | nindent 8 }}
        {{- end }}
      {{- end }}
      {{- if .Values.supersetWebsockets.priorityClassName }}
      priorityClassName: {{ .Values.supersetWebsockets.priorityClassName }}
      {{- end }}
      {{- if or .Values.topologySpreadConstraints .Values.supersetWebsockets.topologySpreadConstraints }}
      topologySpreadConstraints:
        {{- with .Values.topologySpreadConstraints }}
          {{- toYaml . | nindent 8 }}
        {{- end }}
        {{- with .Values.supersetWebsockets.topologySpreadConstraints }}
          {{- toYaml . | nindent 8 }}
        {{- end }}
      {{- end }}
      {{- with .Values.tolerations }}
      tolerations:  {{- toYaml . | nindent 8 }}
      {{- end }}
      {{- if .Values.imagePullSecrets }}
      imagePullSecrets: {{- toYaml .Values.imagePullSecrets | nindent 8 }}
      {{- end }}
      volumes:
        - name: superset-ws-config
          secret:
            secretName: "{{ template "superset.fullname" . }}-ws-config"
{{- end }}
