# 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: {{ .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 }}
        msb.onap.org/service-info: '[
          {
              "serviceName": "_aai-generic-query",
              "version": "v11",
              "url": "/aai/v11/search/generic-query",
              "protocol": "REST",
              "port": "8446",
              "enable_ssl": true,
              "lb_policy":"ip_hash",
              "visualRange": "1",
              "path": "/aai/v11/search/generic-query"
          },
          {
              "serviceName": "_aai-generic-query",
              "version": "v12",
              "url": "/aai/v12/search/generic-query",
              "protocol": "REST",
              "port": "8446",
              "enable_ssl": true,
              "lb_policy":"ip_hash",
              "visualRange": "1",
              "path": "/aai/v12/search/generic-query"
          },
          {
              "serviceName": "_aai-generic-query",
              "version": "v13",
              "url": "/aai/v13/search/generic-query",
              "protocol": "REST",
              "port": "8446",
              "enable_ssl": true,
              "lb_policy":"ip_hash",
              "visualRange": "1",
              "path": "/aai/v13/search/generic-query"
          },
          {
              "serviceName": "_aai-nodes-query",
              "version": "v11",
              "url": "/aai/v11/search/nodes-query",
              "protocol": "REST",
              "port": "8446",
              "enable_ssl": true,
              "lb_policy":"ip_hash",
              "visualRange": "1",
              "path": "/aai/v11/search/nodes-query"
          },
          {
              "serviceName": "_aai-nodes-query",
              "version": "v12",
              "url": "/aai/v12/search/nodes-query",
              "protocol": "REST",
              "port": "8446",
              "enable_ssl": true,
              "lb_policy":"ip_hash",
              "visualRange": "1",
              "path": "/aai/v12/search/nodes-query"
          },
          {
              "serviceName": "_aai-nodes-query",
              "version": "v13",
              "url": "/aai/v13/search/nodes-query",
              "protocol": "REST",
              "port": "8446",
              "enable_ssl": true,
              "lb_policy":"ip_hash",
              "visualRange": "1",
              "path": "/aai/v13/search/nodes-query"
          },
          {
              "serviceName": "_aai-query",
              "version": "v11",
              "url": "/aai/v11/query",
              "protocol": "REST",
              "port": "8446",
              "enable_ssl": true,
              "lb_policy":"ip_hash",
              "visualRange": "1",
              "path": "/aai/v11/query"
          },
          {
              "serviceName": "_aai-query",
              "version": "v12",
              "url": "/aai/v12/query",
              "protocol": "REST",
              "port": "8446",
              "enable_ssl": true,
              "lb_policy":"ip_hash",
              "visualRange": "1",
              "path": "/aai/v12/query"
          },
          {
              "serviceName": "_aai-query",
              "version": "v13",
              "url": "/aai/v13/query",
              "protocol": "REST",
              "port": "8446",
              "enable_ssl": true,
              "lb_policy":"ip_hash",
              "visualRange": "1",
              "path": "/aai/v13/query"
          },
          {
              "serviceName": "_aai-named-query",
              "url": "/aai/search",
              "protocol": "REST",
              "port": "8446",
              "enable_ssl": true,
              "lb_policy":"ip_hash",
              "visualRange": "1",
              "path": "/aai/search"
          },
          {
              "serviceName": "aai-generic-query",
              "version": "v11",
              "url": "/aai/v11/search/generic-query",
              "protocol": "REST",
              "port": "8446",
              "enable_ssl": true,
              "lb_policy":"ip_hash",
              "visualRange": "1"
          },
          {
              "serviceName": "aai-generic-query",
              "version": "v12",
              "url": "/aai/v12/search/generic-query",
              "protocol": "REST",
              "port": "8446",
              "enable_ssl": true,
              "lb_policy":"ip_hash",
              "visualRange": "1"
          },
          {
              "serviceName": "aai-generic-query",
              "version": "v13",
              "url": "/aai/v13/search/generic-query",
              "protocol": "REST",
              "port": "8446",
              "enable_ssl": true,
              "lb_policy":"ip_hash",
              "visualRange": "1"
          },
          {
              "serviceName": "aai-nodes-query",
              "version": "v11",
              "url": "/aai/v11/search/nodes-query",
              "protocol": "REST",
              "port": "8446",
              "enable_ssl": true,
              "lb_policy":"ip_hash",
              "visualRange": "1"
          },
          {
              "serviceName": "aai-nodes-query",
              "version": "v12",
              "url": "/aai/v12/search/nodes-query",
              "protocol": "REST",
              "port": "8446",
              "enable_ssl": true,
              "lb_policy":"ip_hash",
              "visualRange": "1"
          },
          {
              "serviceName": "aai-nodes-query",
              "version": "v13",
              "url": "/aai/v13/search/nodes-query",
              "protocol": "REST",
              "port": "8446",
              "enable_ssl": true,
              "lb_policy":"ip_hash",
              "visualRange": "1"
          },
          {
              "serviceName": "aai-query",
              "version": "v11",
              "url": "/aai/v11/query",
              "protocol": "REST",
              "port": "8446",
              "enable_ssl": true,
              "lb_policy":"ip_hash",
              "visualRange": "1"
          },
          {
              "serviceName": "aai-query",
              "version": "v12",
              "url": "/aai/v12/query",
              "protocol": "REST",
              "port": "8446",
              "enable_ssl": true,
              "lb_policy":"ip_hash",
              "visualRange": "1"
          },
          {
              "serviceName": "aai-query",
              "version": "v13",
              "url": "/aai/v13/query",
              "protocol": "REST",
              "port": "8446",
              "enable_ssl": true,
              "lb_policy":"ip_hash",
              "visualRange": "1"
          },
          {
              "serviceName": "aai-named-query",
              "url": "/aai/search",
              "protocol": "REST",
              "port": "8446",
              "enable_ssl": true,
              "lb_policy":"ip_hash",
              "visualRange": "1"
          }
          ]'
    spec:
      hostname: aai-traversal
    {{ 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: DISABLE_UPDATE_QUERY
          value: {{ .Values.config.disableUpdateQuery | quote }}
        - name: LOCAL_USER_ID
          value: {{ .Values.global.config.userId | quote }}
        - name: LOCAL_GROUP_ID
          value: {{ .Values.global.config.groupId | quote }}
        volumeMounts:
        - mountPath: /etc/localtime
          name: localtime
          readOnly: true
        - mountPath: /opt/app/aai-traversal/resources/etc/appprops/janusgraph-realtime.properties
          name: {{ include "common.fullname" . }}-db-real-conf
          subPath: janusgraph-realtime.properties
        - mountPath: /opt/app/aai-traversal/resources/etc/appprops/janusgraph-cached.properties
          name: {{ include "common.fullname" . }}-db-cached-conf
          subPath: janusgraph-cached.properties
        - mountPath: /opt/app/aai-traversal/resources/etc/appprops/aaiconfig.properties
          name: {{ include "common.fullname" . }}-aaiconfig-conf
          subPath: aaiconfig.properties
        - mountPath: /opt/aai/logroot/AAI-GQ
          name: {{ include "common.fullname" . }}-logs
        - mountPath: /opt/app/aai-traversal/resources/logback.xml
          name: {{ include "common.fullname" . }}-log-conf
          subPath: logback.xml
        - mountPath: /opt/app/aai-traversal/resources/localhost-access-logback.xml
          name: {{ include "common.fullname" . }}-localhost-access-log-conf
          subPath: localhost-access-logback.xml
        - mountPath: /opt/app/aai-traversal/resources/aaf/org.onap.aai.keyfile
          name: {{ include "common.fullname" . }}-aaf-certs
          subPath: org.onap.aai.keyfile
        - mountPath: /opt/app/aai-traversal/resources/aaf/org.onap.aai.props
          name: {{ include "common.fullname" . }}-aaf-properties
          subPath: org.onap.aai.props
        - mountPath: /opt/app/aai-traversal/resources/aaf/org.osaaf.location.props
          name: {{ include "common.fullname" . }}-aaf-properties
          subPath: org.osaaf.location.props
        - mountPath: /opt/app/aai-traversal/resources/aaf/permissions.properties
          name: {{ include "common.fullname" . }}-aaf-properties
          subPath: permissions.properties
        - mountPath: /opt/app/aai-traversal/resources/cadi.properties
          name: {{ include "common.fullname" . }}-aaf-properties
          subPath: cadi.properties
        - mountPath: /opt/app/aai-traversal/resources/aaf/org.onap.aai.p12
          name: {{ include "common.fullname" . }}-aaf-certs
          subPath: org.onap.aai.p12
        - mountPath: /opt/app/aai-traversal/resources/aaf/truststoreONAPall.jks
          name: {{ include "common.fullname" . }}-aaf-certs
          subPath: truststoreONAPall.jks
        - mountPath: /opt/app/aai-traversal/resources/application.properties
          name: {{ include "common.fullname" . }}-springapp-conf
          subPath: application.properties
          {{ $global := . }}
          {{ range $job := .Values.global.config.auth.files }}
        - mountPath: /opt/app/aai-traversal/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:
{{ toYaml .Values.resources | indent 10 }}
      {{- 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" . }}-aaf-properties
        configMap:
         name: {{ include "common.fullname" . }}-aaf-props
      - name: {{ include "common.fullname" . }}-aaf-certs
        secret:
         secretName: {{ include "common.fullname" . }}-aaf-keys
      - 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.global.restartPolicy | default .Values.restartPolicy }}
      imagePullSecrets:
      - name: "{{ include "common.namespace" . }}-docker-registry-key"
