apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Release.Name }}
  namespace: {{ .Release.Namespace }}
  labels:
    app: {{ .Release.Name }}
spec:
  progressDeadlineSeconds: 600
  replicas: {{ .Values.replicaCount }}
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: {{ .Release.Name }}
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: {{ .Release.Name }}
    spec:
      containers:
        - image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
          imagePullPolicy: {{ .Values.image.pullPolicy }}
          env:
          {{- if and (hasKey .Values "vendor") (eq .Values.vendor "azure") }}
            - name: AZURE_STORAGE_ACCOUNT_NAME
              value: {{ .Values.env.azureStorageAccountName }}
            - name: STORAGE_ACCOUNT_NAME
              value: {{ .Values.env.azureStorageAccountName }}
            - name: AZURE_TENANT_ID
              value: 6c865c34-8ff8-4792-bbca-8c9d15efb29d
            - name: AZURE_CLIENT_ID
              value: {{ .Values.env.azureClientID }}
            - name: AZURE_FEDERATED_TOKEN_FILE
              value: /var/run/secrets/azure/tokens/azure-identity-token
            - name: AZURE_AUTHORITY_HOST
              value: https://login.microsoftonline.com/
          {{- end }}
          {{- if and (hasKey .Values "vendor") (eq .Values.vendor "alicloud") }}
            - name: AWS_REGION
              value: {{ .Values.env.region }}
            - name: AWS_ENDPOINT_URL
              value: {{ .Values.env.aws_endpoint_url }}
            - name: AWS_ENDPOINT_S3
              value: {{ .Values.env.aws_endpoint_url }}
            - name: AWS_COPY_IF_NOT_EXISTS
              value: header-with-status:x-oss-forbid-overwrite:true:409
            - name: AWS_ACCESS_KEY_ID
              valueFrom:
                secretKeyRef:
                  name: o11y-regional-ram-credentials
                  key: AWS_ACCESS_KEY_ID
            - name: AWS_SECRET_ACCESS_KEY
              valueFrom:
                secretKeyRef:
                  name: o11y-regional-ram-credentials
                  key: AWS_SECRET_ACCESS_KEY
            - name: AWS_REQUEST_CHECKSUM_CALCULATION
              value: "WHEN_REQUIRED"
            - name: AWS_RESPONSE_CHECKSUM_VALIDATION
              value: "WHEN_REQUIRED"
          {{- end }}
          name: deltalake-ops-server
          ports:
            - containerPort: {{ .Values.service.targetPort }}
              protocol: TCP
          resources:
            limits:
              cpu: {{ .Values.resources.limits.cpu }}
              memory: {{ .Values.resources.limits.memory }}
            requests:
              cpu: {{ .Values.resources.requests.cpu }}
              memory: {{ .Values.resources.requests.memory }}
          {{- if and (hasKey .Values "vendor") (eq .Values.vendor "azure") }}
          volumeMounts:
            - name: azure-identity-token
              mountPath: /var/run/secrets/azure/tokens
              readOnly: true
          {{- end }}
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      nodeSelector:
        node_type: {{ .Values.nodeSelector.nodeType }}
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      serviceAccount: regional-server-controller-manager
      serviceAccountName: regional-server-controller-manager
      {{- if and (hasKey .Values "vendor") (eq .Values.vendor "azure") }}
      volumes:
      - name: azure-identity-token
        projected:
          sources:
          - serviceAccountToken:
              audience: api://AzureADTokenExchange
              expirationSeconds: 3600
              path: azure-identity-token
      {{- end }}
      terminationGracePeriodSeconds: 10
