#  Copyright © Microsoft Corporation
#
#  Licensed 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.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Release.Name }}
  namespace: osdu
spec:
  replicas: {{ .Values.global.replicaCount }}
  selector:
    matchLabels:
      app: {{ .Chart.Name }}
  template:
    metadata:
      labels:
        app: {{ .Chart.Name }}
        aadpodidbinding: osdu-identity
    spec:
{{- if .Values.global.isAutoscalingEnabled }}
      nodeSelector:
        nodepool: {{ .Values.global.nodepool }}
{{- end }}
      volumes:
        - name: azure-keyvault
          csi:
            driver: secrets-store.csi.k8s.io
            readOnly: true
            volumeAttributes:
              secretProviderClass: azure-keyvault
      containers:
        - name: {{ .Chart.Name }}
          image: {{ .Values.image.repository }}/{{ .Chart.Name }}-{{ .Values.image.branch }}:{{ .Values.image.tag | default .Chart.AppVersion }}
          imagePullPolicy: Always
          lifecycle:
            preStop:
              exec:
                command: ["sleep","90"]
          ports:
            - containerPort: 80
          readinessProbe:
            httpGet:
              path: /api/notification/v1/swagger-ui/index.html
              port: 80
          volumeMounts:
            - name: azure-keyvault
              mountPath: "/mnt/azure-keyvault"
              readOnly: true
          env:
            - name: spring_application_name
              value: notification-azure
            - name: LOG_PREFIX
              value: "notification"
            - name: server.servlet.contextPath
              value: /api/notification/v1
            - name: server_port
              value: "80"
            - name: notification_spring_logging_level
              value: INFO
            - name: KEYVAULT_URI
              valueFrom:
                configMapKeyRef:
                  name: osdu-svc-properties
                  key: ENV_KEYVAULT
            - name: aad_client_id
              valueFrom:
                secretKeyRef:
                 name: active-directory
                 key: application-appid
            - name: appinsights_key
              valueFrom:
                secretKeyRef:
                  name: central-logging
                  key: appinsights
            - name: cosmosdb_database
              value: osdu-db
            - name: entitlements_service_endpoint
              value: http://entitlements/api/entitlements/v2
            - name: entitlements_service_api_key
              value: "OBSOLETE"
            - name: registeration_service_endpoint
              value: http://register/api/register/v1
            - name: partition_service_endpoint
              value: http://partition/api/partition/v1
            - name: maxCacheSize
              value:  "20"
            - name: max_concurrent_calls
              value: "3"
            - name: executor_n_threads
              value: "32"
            - name: max_lock_renew_duration_seconds
              value: "2000"
            - name: initial_subscription_manager_delay_seconds
              value: "0"
            - name: consecutive_subscription_manager_delay_seconds
              value: "1800"
            - name: service_bus_enabled
              value: "false"
            - name: event_grid_to_service_bus_enabled
              value: "false"
            - name: event_grid_enabled
              value: "true"
      terminationGracePeriodSeconds: 101