# Copyright © 2018 Amdocs, AT&T
# Modifications Copyright © 2018 Bell Canada
#
# 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: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
spec:
  replicas: {{ .Values.replicaCount }}
  template:
    metadata:
      labels:
        app: {{ include "common.name" . }}
        release: {{ .Release.Name }}
    spec:
    {{ if .Values.global.installSidecarSecurity }}
      initContainers:
        - name: {{ .Values.global.tproxyConfig.name }}
          image: "{{ include "common.repository" . }}/{{ .Values.global.tproxyConfig.image }}"
          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
          securityContext:
            privileged: true
    {{ end }}
      containers:
        - name: {{ .Chart.Name }}
          image: "{{ include "common.repository" . }}/{{ .Values.image }}"
          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
          ports:
          - containerPort: {{ .Values.service.internalPort }}
          # 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 }}
            timeoutSeconds: {{ .Values.liveness.timeoutSeconds }}
            periodSeconds: {{ .Values.liveness.periodSeconds }}
          {{ end }}
          readinessProbe:
            tcpSocket:
              port: {{ .Values.service.internalPort }}
            initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
            timeoutSeconds: {{ .Values.readiness.timeoutSeconds }}
            periodSeconds: {{ .Values.readiness.periodSeconds }}
          env:
            - name: CONFIG_HOME
              value: /opt/app/crud-service/config/
            - name: KEY_STORE_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: {{ template "common.fullname" . }}-pass
                  key: KEY_STORE_PASSWORD
            - name: KEY_MANAGER_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: {{ template "common.fullname" . }}-pass
                  key: KEY_MANAGER_PASSWORD
            - name: SERVICE_BEANS
              value: /opt/app/crud-service/dynamic/conf
          volumeMounts:
          - mountPath: /etc/localtime
            name: localtime
            readOnly: true
          - mountPath: /opt/app/crud-service/config/crud-api.properties
            subPath: crud-api.properties
            name: {{ include "common.fullname" . }}-config
          - mountPath: /opt/app/crud-service/config/schema-ingest.properties
            subPath: schema-ingest.properties
            name: {{ include "common.fullname" . }}-config
          - mountPath: /opt/app/crud-service/config/edgeprops-ingest.properties
            subPath: edgeprops-ingest.properties
            name: {{ include "common.fullname" . }}-config
          - mountPath: /opt/app/crud-service/config/model/
            name: {{ include "common.fullname" . }}-model-config
          - mountPath: /opt/app/crud-service/config/auth
            name: {{ include "common.fullname" . }}-auth-secret
          - mountPath: /opt/app/crud-service/dynamic/conf/crud-beans.xml
            name: {{ include "common.fullname" . }}-config
            subPath: crud-beans.xml
          - mountPath: /var/log/onap
            name: {{ include "common.fullname" . }}-logs
          - mountPath: /opt/app/crud-api/bundleconfig/etc/logback.xml
            name: {{ include "common.fullname" . }}-logback-config
            subPath: logback.xml
          resources:
{{ include "common.resources" . }}
      {{- if .Values.nodeSelector }}
      nodeSelector:
{{ toYaml .Values.nodeSelector | indent 8 }}
      {{- end -}}
      {{- if .Values.affinity }}
      affinity:
{{ toYaml .Values.affinity | indent 8 }}
      {{- end }}

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

    {{ if .Values.global.installSidecarSecurity }}
        - name: {{ .Values.global.rproxy.name }}
          image: "{{ include "common.repository" . }}/{{ .Values.global.rproxy.image }}"
          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
          env:
          - name: CONFIG_HOME
            value: "/opt/app/rproxy/config"
          - name: KEY_STORE_PASSWORD
            value: {{ .Values.config.keyStorePassword }}
          - name: spring_profiles_active
            value: {{ .Values.global.rproxy.activeSpringProfiles }}
          volumeMounts:
          - name: {{ include "common.fullname" . }}-rproxy-config
            mountPath: /opt/app/rproxy/config/forward-proxy.properties
            subPath: forward-proxy.properties
          - name: {{ include "common.fullname" . }}-rproxy-config
            mountPath: /opt/app/rproxy/config/primary-service.properties
            subPath: primary-service.properties
          - name: {{ include "common.fullname" . }}-rproxy-config
            mountPath: /opt/app/rproxy/config/reverse-proxy.properties
            subPath: reverse-proxy.properties
          - name: {{ include "common.fullname" . }}-rproxy-config
            mountPath: /opt/app/rproxy/config/cadi.properties
            subPath: cadi.properties
          - name: {{ include "common.fullname" . }}-rproxy-log-config
            mountPath: /opt/app/rproxy/config/logback-spring.xml
            subPath: logback-spring.xml
          - name: {{ include "common.fullname" . }}-rproxy-uri-auth-config
            mountPath: /opt/app/rproxy/config/auth/uri-authorization.json
            subPath: uri-authorization.json
          - name: {{ include "common.fullname" . }}-rproxy-auth-certs
            mountPath: /opt/app/rproxy/config/auth/tomcat_keystore
            subPath: tomcat_keystore
          - name: {{ include "common.fullname" . }}-rproxy-auth-certs
            mountPath: /opt/app/rproxy/config/auth/client-cert.p12
            subPath: client-cert.p12
          - name: {{ include "common.fullname" . }}-rproxy-auth-certs
            mountPath: /opt/app/rproxy/config/auth/org.onap.aai.p12
            subPath: org.onap.aai.p12
          - name: {{ include "common.fullname" . }}-rproxy-security-config
            mountPath: /opt/app/rproxy/config/security/keyfile
            subPath: keyfile

          ports:
          - containerPort: {{ .Values.global.rproxy.port }}

        - name: {{ .Values.global.fproxy.name }}
          image: "{{ include "common.repository" . }}/{{ .Values.global.fproxy.image }}"
          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
          env:
          - name: CONFIG_HOME
            value: "/opt/app/fproxy/config"
          - name: KEY_STORE_PASSWORD
            value: {{ .Values.config.keyStorePassword }}
          - name: TRUST_STORE_PASSWORD
            value: {{ .Values.config.trustStorePassword }}
          - name: spring_profiles_active
            value: {{ .Values.global.fproxy.activeSpringProfiles }}
          volumeMounts:
          - name: {{ include "common.fullname" . }}-fproxy-config
            mountPath: /opt/app/fproxy/config/fproxy.properties
            subPath: fproxy.properties
          - name: {{ include "common.fullname" . }}-fproxy-log-config
            mountPath: /opt/app/fproxy/config/logback-spring.xml
            subPath: logback-spring.xml
          - name: {{ include "common.fullname" . }}-fproxy-auth-certs
            mountPath: /opt/app/fproxy/config/auth/tomcat_keystore
            subPath: tomcat_keystore
          - name: {{ include "common.fullname" . }}-fproxy-auth-certs
            mountPath: /opt/app/fproxy/config/auth/fproxy_truststore
            subPath: fproxy_truststore
          - name: {{ include "common.fullname" . }}-fproxy-auth-certs
            mountPath: /opt/app/fproxy/config/auth/client-cert.p12
            subPath: client-cert.p12
          ports:
          - containerPort: {{ .Values.global.fproxy.port }}
    {{ end }}

      volumes:
        - name: localtime
          hostPath:
            path: /etc/localtime
        - name: {{ include "common.fullname" . }}-data-filebeat
          emptyDir: {}
        - name: filebeat-conf
          configMap:
            name: {{ include "common.fullname" . }}-filebeat-configmap
        - name: {{ include "common.fullname" . }}-logs
          emptyDir: {}
        - name: {{ include "common.fullname" . }}-auth-secret
          secret:
            secretName: {{ include "common.fullname" . }}-auth
        - name: {{ include "common.fullname" . }}-config
          configMap:
            name: {{ include "common.fullname" . }}-configmap
            items:
            - key: crud-api.properties
              path: crud-api.properties
            - key: schema-ingest.properties
              path: schema-ingest.properties
            - key: edgeprops-ingest.properties
              path: edgeprops-ingest.properties
            - key: crud-beans.xml
              path: crud-beans.xml
        - name: {{ include "common.fullname" . }}-logback-config
          configMap:
            name: {{ include "common.fullname" . }}-log-configmap
            items:
            - key: logback.xml
              path: logback.xml
        - name: {{ include "common.fullname" . }}-model-config
          configMap:
            name: {{ include "common.fullname" . }}-model-configmap
    {{ if .Values.global.installSidecarSecurity }}
        - name: {{ include "common.fullname" . }}-rproxy-config
          configMap:
            name: {{ include "common.fullname" . }}-rproxy-config
        - name: {{ include "common.fullname" . }}-rproxy-log-config
          configMap:
            name: {{ include "common.fullname" . }}-rproxy-log-config
        - name: {{ include "common.fullname" . }}-rproxy-uri-auth-config
          configMap:
            name: {{ include "common.fullname" . }}-rproxy-uri-auth-config
        - name: {{ include "common.fullname" . }}-rproxy-auth-config
          secret:
            secretName: {{ include "common.fullname" . }}-rproxy-auth-config
        - name: {{ include "common.fullname" . }}-rproxy-auth-certs
          secret:
            secretName: aai-rproxy-auth-certs
        - name: {{ include "common.fullname" . }}-rproxy-security-config
          secret:
            secretName: aai-rproxy-security-config
        - name: {{ include "common.fullname" . }}-fproxy-config
          configMap:
            name: {{ include "common.fullname" . }}-fproxy-config
        - name: {{ include "common.fullname" . }}-fproxy-log-config
          configMap:
            name: {{ include "common.fullname" . }}-fproxy-log-config
        - name: {{ include "common.fullname" . }}-fproxy-auth-certs
          secret:
            secretName: aai-fproxy-auth-certs
    {{ end }}

      imagePullSecrets:
      - name: "{{ include "common.namespace" . }}-docker-registry-key"
