{{/*
# Copyright © 2017 Amdocs, Bell Canada
# Modifications Copyright © 2018 AT&T
#
# 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: {{ include "common.fullname" . }}
  namespace: {{ include "common.namespace" . }}
  labels:
    app: {{ include "common.name" . }}
    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
    release: {{ include "common.release" . }}
    heritage: {{ .Release.Service }}
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels:
      app: {{ include "common.name" . }}
  template:
    metadata:
      labels:
        app: {{ include "common.name" . }}
        release: {{ include "common.release" . }}
      name: {{ include "common.name" . }}
    spec:
     containers:
     - env:
       - name: MSB_PROTO
         value: "{{ if (include "common.needTLS" .) }}https{{ else }}http{{ end }}"
       - name: MSB_ADDR
         value: "{{ .Values.config.msbgateway }}.{{ include "common.namespace" . }}"
       - name: MSB_PORT
         value: "{{- if (include "common.needTLS" .) }}{{ .Values.config.msbPort }}{{ else }}{{ .Values.config.msbPlainPort }}{{ end }}"
       - name: AAI_ADDR
         value: "aai.{{ include "common.namespace" . }}"
       - name: AAI_PORT
         value: "{{- if (include "common.needTLS" .) }}{{ .Values.config.aai.aaiPort }}{{ else }}{{ .Values.config.aai.aaiPlainPort }}{{ end }}"
       - name: AAI_SCHEMA_VERSION
         value: "{{ .Values.config.aai.schemaVersion }}"
       - name: AAI_USERNAME
         value: "{{ .Values.config.aai.username }}"
       - name: AAI_PASSWORD
         value: "{{ .Values.config.aai.password }}"
       - name: SSL_ENABLED
         value: "{{- if (include "common.needTLS" .) }}{{ .Values.config.ssl_enabled }}{{ else }}false{{ end }}"
       resources:
{{ include "common.resources" . | indent 12 }}
       image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
       imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
       name: {{ include "common.name" . }}
       volumeMounts:
       - mountPath: "{{ .Values.log.path }}"
         name: framework-log
       - mountPath: /opt/multivimbroker/multivimbroker/pub/config/log.yml
         name: framework-logconfig
         subPath: log.yml
       - mountPath: /opt/multivimbroker/multivimbroker/pub/config/provider-plugin.json
         name: provider-plugin
         subPath: provider-plugin.json
       ports:
       - containerPort: {{ .Values.service.internalPort }}
       # disable liveness probe when breakpoints set in debugger
       # so K8s doesn't restart unresponsive container
       {{- if eq .Values.liveness.enabled true }}
       livenessProbe:
         httpGet:
           path: /api/multicloud/v0/swagger.json
           port: {{ .Values.service.internalPort }}
           scheme: "{{ if (include "common.needTLS" .) }}HTTPS{{ else }}HTTP{{ end }}"
         initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
         periodSeconds: {{ .Values.liveness.periodSeconds }}
         timeoutSeconds: {{ .Values.liveness.timeoutSeconds }}
         successThreshold: {{ .Values.liveness.successThreshold }}
         failureThreshold: {{ .Values.liveness.failureThreshold }}
       {{ end -}}

      # side car containers
     {{ include "common.log.sidecar" . | nindent 5 }}
     serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
     volumes:
     - name: framework-log
       emptyDir: {}
     - name: provider-plugin
       configMap:
         name: {{ include "common.fullname" . }}-provider-plugin-configmap
     {{ include "common.log.volumes" . | nindent 5 }}
     - name: framework-logconfig
       configMap:
         name: {{ include "common.fullname" . }}-log-configmap
     imagePullSecrets:
     - name: "{{ include "common.namespace" . }}-docker-registry-key"
     restartPolicy: Always
