# 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: 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: {{ include "common.release" . }}
    heritage: {{ .Release.Service }}
spec:
  replicas: {{ .Values.replicaCount }}
  template:
    metadata:
      labels:
        app: {{ include "common.name" . }}
        release: {{ include "common.release" . }}
    spec:
      initContainers:
      - command:
        - sh
        args:
        - -c
        - "cd /config-input && for PFILE in `ls -1 *.conf`; do envsubst <${PFILE} >/config/${PFILE}; done"
        env:
        - name: JDBC_USER
          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-secret" "key" "login") | indent 10 }}
        - name: JDBC_PASSWORD
          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-secret" "key" "password") | indent 10 }}
        volumeMounts:
        - mountPath: /config-input
          name: pe
        - mountPath: /config
          name: pe-processed
        image: "{{ .Values.global.envsubstImage }}"
        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
        name: {{ include "common.name" . }}-update-config
      - command:
        - /root/ready.py
        args:
        - --container-name
        - {{ include "common.release" . }}-galera-config
        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
      containers:
        - command:
          - /bin/bash
          - ./do-start.sh
          - pap
          name: {{ include "common.name" . }}
          image: "{{ include "common.repository" . }}/{{ .Values.image }}"
          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
          resources:
{{ include "common.resources" . | indent 12 }}
          ports:
          - containerPort: {{ .Values.service.externalPort }}
          - containerPort: {{ .Values.service.externalPort2 }}
          {{- if eq .Values.liveness.enabled true }}
          livenessProbe:
            tcpSocket:
              port: {{ .Values.service.externalPort }}
            initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
            periodSeconds: {{ .Values.liveness.periodSeconds }}
          {{ end -}}
          readinessProbe:
            tcpSocket:
              port: {{ .Values.service.externalPort }}
            initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
            periodSeconds: {{ .Values.readiness.periodSeconds }}
          env:
          - name: PRELOAD_POLICIES
            value: "{{ .Values.config.preloadPolicies }}"
          volumeMounts:
          - mountPath: /etc/localtime
            name: localtime
            readOnly: true
          - mountPath: /tmp/policy-install/config/pap-tweaks.sh
            name: pe-pap
            subPath: pap-tweaks.sh
          - mountPath: /tmp/policy-install/config/paplp.conf
            name: pe-pap
            subPath: paplp.conf
          - mountPath: /tmp/policy-install/config/pap.conf
            name: pe-pap
            subPath: pap.conf
          - mountPath: /tmp/policy-install/config/mysql.conf
            name: pe-pap
            subPath: mysql.conf
          - mountPath: /tmp/policy-install/config/elk.conf
            name: pe-pap
            subPath: elk.conf
          - mountPath: /tmp/policy-install/config/console.conf
            name: pe-pap
            subPath: console.conf
          - mountPath: /tmp/policy-install/config/base.conf
            name: pe-processed
            subPath: base.conf
          - mountPath: /tmp/policy-install/do-start.sh
            name: pe-scripts
            subPath: do-start.sh
          - mountPath: /var/log/onap
            name: policy-logs
          - mountPath: /tmp/policy-install/logback.xml
            name: policy-sdk-logback
            subPath: logback.xml
          - mountPath: /tmp/logback.xml
            name: policy-logback
            subPath: logback.xml
          lifecycle:
            postStart:
              exec:
                command: ["/bin/sh", "-c", "export LOG=wait_logback.log; touch $LOG; export SRC=/tmp/logback.xml; export DST=/opt/app/policy/servers/pap/webapps/pap/WEB-INF/classes/; while [ ! -e $DST ]; do echo 'Waiting for $DST...' >> $LOG; sleep 5; done; sleep 2; /bin/cp -f $SRC $DST; export SRC=/tmp/policy-install/logback.xml; export DST=/opt/app/policy/servers/console/webapps/onap/WEB-INF/classes/; while [ ! -e $DST ]; do echo 'Waiting for $DST...' >> $LOG; sleep 5; done; sleep 2; /bin/cp -f $SRC $DST; echo 'Done' >> $LOG"]
        - image: "{{ .Values.global.loggingRepository | default .Values.loggingRepository }}/{{ .Values.global.loggingImage | default .Values.loggingImage }}"
          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
          name: filebeat-onap
          volumeMounts:
          - mountPath: /usr/share/filebeat/filebeat.yml
            name: filebeat-conf
            subPath: filebeat.yml
          - mountPath: /var/log/onap
            name: policy-logs
          - mountPath: /usr/share/filebeat/data
            name: policy-data-filebeat
      volumes:
        - name: localtime
          hostPath:
            path: /etc/localtime
        - name: filebeat-conf
          configMap:
            name: {{ include "common.release" . }}-filebeat-configmap
        - name: policy-logs
          emptyDir: {}
        - name: policy-data-filebeat
          emptyDir: {}
        - name: policy-logback
          configMap:
            name: {{ include "common.fullname" . }}-log-configmap
        - name: policy-sdk-logback
          configMap:
            name: {{ include "common.fullname" . }}-sdk-log-configmap
        - name: pe
          configMap:
            name: {{ include "common.release" . }}-pe-configmap
            defaultMode: 0755
        - name: pe-scripts
          configMap:
            name: {{ include "common.release" . }}-pe-scripts-configmap
            defaultMode: 0777
        - name: pe-pap
          configMap:
            name: {{ include "common.fullname" . }}-pe-configmap
            defaultMode: 0755
        - name: pe-processed
          emptyDir:
            medium: Memory
      imagePullSecrets:
      - name: "{{ include "common.namespace" . }}-docker-registry-key"
