#
# ============LICENSE_START=======================================================
# org.onap.aai
# ================================================================================
# Copyright © 2018 AT&T Intellectual Property. All rights reserved.
# ================================================================================
# 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.
# ============LICENSE_END=========================================================

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: {{ include "common.fullname" . }}
  namespace: {{ include "common.namespace" . }}
  labels:
    app: {{ include "common.name" . }}
    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels:
      app: {{ include "common.name" . }}
  template:
    metadata:
      labels:
        app: {{ include "common.name" . }}
        release: {{ .Release.Name }}
      name: {{ include "common.name" . }}
      annotations:
        checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
    spec:
      hostname: aai-graphadmin
    {{ if .Values.global.initContainers.enabled }}
      initContainers:
      - command:
      {{  if .Values.global.jobs.createSchema.enabled  }}
        - /root/job_complete.py
        args:
        - --job-name
        - {{ .Release.Name }}-aai-graphadmin-create-db-schema
      {{  else }}
        - /root/ready.py
        args:
        - --container-name
        - aai-cassandra
      {{  end  }}
        env:
        - name: NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
        name: {{ include "common.name" . }}-readiness
      {{  end  }}
      containers:
      - name: {{ include "common.name" . }}
        image: "{{ include "common.repository" . }}/{{ .Values.image }}"
        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
        env:
        - name: LOCAL_USER_ID
          value: {{ .Values.config.userId | quote }}
        - name: LOCAL_GROUP_ID
          value: {{ .Values.config.groupId | quote }}
        volumeMounts:
        - mountPath: /etc/localtime
          name: localtime
          readOnly: true
        - mountPath: /opt/app/aai-graphadmin/resources/etc/appprops/janusgraph-realtime.properties
          name: {{ include "common.fullname" . }}-db-real-conf
          subPath: janusgraph-realtime.properties
        - mountPath: /opt/app/aai-graphadmin/resources/etc/appprops/janusgraph-cached.properties
          name: {{ include "common.fullname" . }}-db-cached-conf
          subPath: janusgraph-cached.properties
        - mountPath: /opt/app/aai-graphadmin/resources/etc/appprops/aaiconfig.properties
          name: {{ include "common.fullname" . }}-aaiconfig-conf
          subPath: aaiconfig.properties
        - mountPath: /opt/aai/logroot/AAI-RES
          name: {{ include "common.fullname" . }}-logs
        - mountPath: /opt/app/aai-graphadmin/resources/logback.xml
          name: {{ include "common.fullname" . }}-log-conf
          subPath: logback.xml
        - mountPath: /opt/app/aai-graphadmin/resources/localhost-access-logback.xml
          name: {{ include "common.fullname" . }}-localhost-access-log-conf
          subPath: localhost-access-logback.xml
        - mountPath: /opt/app/aai-graphadmin/resources/application.properties
          name: {{ include "common.fullname" . }}-springapp-conf
          subPath: application.properties
          {{ $global := . }}
          {{ range $job := .Values.global.config.auth.files }}
        - mountPath: /opt/app/aai-graphadmin/resources/etc/auth/{{ . }}
          name: {{ include "common.fullname" $global }}-auth-truststore-sec
          subPath: {{ . }}
          {{ end }}
        ports:
        - containerPort: {{ .Values.service.internalPort }}
        - containerPort: {{ .Values.service.internalPort2 }}
        # disable liveness probe when breakpoints set in debugger
        # so K8s doesn't restart unresponsive container
        {{ if .Values.liveness.enabled }}
        livenessProbe:
          tcpSocket:
            port: {{ .Values.service.internalPort }}
          initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
          periodSeconds: {{ .Values.liveness.periodSeconds }}
        {{ end }}
        readinessProbe:
          tcpSocket:
            port: {{ .Values.service.internalPort }}
          initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
          periodSeconds: {{ .Values.readiness.periodSeconds }}
        resources:
{{ include "common.resources" . | indent 12 }}
      {{- if .Values.nodeSelector }}
      nodeSelector:
{{ toYaml .Values.nodeSelector | indent 8 }}
      {{- end -}}
      {{- if .Values.affinity }}
      affinity:
{{ toYaml .Values.affinity | indent 8 }}
      {{- end }}

      # side car containers
      - name: filebeat-onap
        image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}"
        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
        volumeMounts:
        - mountPath: /usr/share/filebeat/filebeat.yml
          subPath: filebeat.yml
          name: filebeat-conf
        - mountPath: /var/log/onap
          name: {{ include "common.fullname" . }}-logs
        - mountPath: /usr/share/filebeat/data
          name: {{ include "common.fullname" . }}-filebeat

      volumes:
      - name: localtime
        hostPath:
          path: /etc/localtime
      - name: filebeat-conf
        configMap:
          name: aai-filebeat
      - name: {{ include "common.fullname" . }}-logs
        emptyDir: {}
      - name: {{ include "common.fullname" . }}-filebeat
        emptyDir: {}
      - name: {{ include "common.fullname" . }}-log-conf
        configMap:
         name: {{ include "common.fullname" . }}-log
      - name: {{ include "common.fullname" . }}-localhost-access-log-conf
        configMap:
         name: {{ include "common.fullname" . }}-localhost-access-log-configmap
      - name: {{ include "common.fullname" . }}-db-real-conf
        configMap:
         name: {{ include "common.fullname" . }}-db-real-configmap
      - name: {{ include "common.fullname" . }}-db-cached-conf
        configMap:
         name: {{ include "common.fullname" . }}-db-cached-configmap
      - name: {{ include "common.fullname" . }}-aaiconfig-conf
        configMap:
         name: {{ include "common.fullname" . }}-aaiconfig-configmap
      - name: {{ include "common.fullname" . }}-springapp-conf
        configMap:
         name: {{ include "common.fullname" . }}-springapp-configmap
      - name: {{ include "common.fullname" . }}-realm-conf
        configMap:
         name: {{ include "common.fullname" . }}-realm-configmap
      - name: {{ include "common.fullname" . }}-auth-truststore-sec
        secret:
         secretName: aai-auth-truststore-secret
         items:
          {{ range $job := .Values.global.config.auth.files }}
           - key: {{ . }}
             path: {{ . }}
          {{ end }}
      restartPolicy: {{ .Values.restartPolicy }}
      imagePullSecrets:
      - name: "{{ include "common.namespace" . }}-docker-registry-key"
