# Copyright © 2017 Amdocs, 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.

#{{ if not .Values.disableAaiDataRouter }}
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: aai-data-router
  namespace: "{{ .Values.nsPrefix }}"
spec:
  replicas: {{ .Values.dataRouterReplicas }}
  selector:
    matchLabels:
      app: aai-data-router
  template:
    metadata:
      labels:
        app: aai-data-router
      name: aai-data-router
    spec:
      initContainers:
      - command:
        - /bin/sh
        - -c
        - |
          mkdir -p /logroot/data-router/logs
          chmod -R 777 /logroot/data-router/logs
          chown -R root:root /logroot
        env:
        - name: NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        securityContext:
          privileged: true
        image: {{ .Values.image.es_bb }}
        imagePullPolicy: {{ .Values.pullPolicy }}
        name: init-sysctl
        volumeMounts:
        - name: aai-data-router-logs
          mountPath: /logroot/
      containers:
      - name: aai-data-router
        image: "{{ .Values.image.dataRouterImage }}:{{ .Values.image.dataRouterVersion }}"
        imagePullPolicy: {{ .Values.pullPolicy }}
        env:
        - name: SERVICE_BEANS
          value: /opt/app/data-router/dynamic/conf
        - name: CONFIG_HOME
          value: /opt/app/data-router/config/
        - name: KEY_STORE_PASSWORD
          value: OBF:1y0q1uvc1uum1uvg1pil1pjl1uuq1uvk1uuu1y10
        - name: DYNAMIC_ROUTES
          value: /opt/app/data-router/dynamic/routes
        - name: KEY_MANAGER_PASSWORD
          value: OBF:1y0q1uvc1uum1uvg1pil1pjl1uuq1uvk1uuu1y10
        - name: PATH
          value: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
        - name: JAVA_HOME
          value: usr/lib/jvm/java-8-openjdk-amd64
        volumeMounts:
        - mountPath: /etc/localtime
          name: localtime
          readOnly: true
        - mountPath: /opt/app/data-router/config/model/aai_oxm_v8.xml
          subPath: aai_oxm_v8.xml
          name: aai-data-router-model-v8
        - mountPath: /opt/app/data-router/config/model/aai_oxm_v9.xml
          subPath: aai_oxm_v9.xml
          name: aai-data-router-model-v9
        - mountPath: /opt/app/data-router/config/model/aai_oxm_v10.xml
          subPath: aai_oxm_v10.xml
          name: aai-data-router-model-v10
        - mountPath: /opt/app/data-router/config/model/aai_oxm_v11.xml
          subPath: aai_oxm_v11.xml
          name: aai-data-router-model-v11
        - mountPath:  /opt/app/data-router/config/auth
          name: aai-data-router-auth
        - mountPath:  /opt/app/data-router/config/data-router.properties
          name: aai-data-router-properties
          subPath: data-router.properties
        - mountPath: /opt/app/data-router/dynamic/routes/entity-event.route
          subPath: entity-event.route
          name: aai-data-router-dynamic-route
        - mountPath: /opt/app/data-router/dynamic/conf/entity-event-policy.xml
          subPath: entity-event-policy.xml
          name: aai-data-router-dynamic-policy
        - mountPath: /logs/
          name: aai-data-router-logs
        ports:
        - containerPort: 9502
        readinessProbe:
          tcpSocket:
            port: 9502
          initialDelaySeconds: 5
          periodSeconds: 10
      volumes:
      - name: localtime
        hostPath:
          path: /etc/localtime
      - name: aai-data-router-model-v8
        configMap:
          name: aai-data-router-model-v8-configmap
      - name: aai-data-router-model-v9
        configMap:
          name: aai-data-router-model-v9-configmap
      - name: aai-data-router-model-v10
        configMap:
          name: aai-data-router-model-v10-configmap
      - name: aai-data-router-model-v11
        configMap:
          name: aai-data-router-model-v11-configmap
      - name: aai-data-router-auth
        secret:
          secretName: aai-data-router-secret
      - name: aai-data-router-properties
        configMap:
          name: aai-data-router-prop-configmap
      - name: aai-data-router-dynamic-route
        configMap:
          name: aai-data-router-dynamic-configmap
      - name: aai-data-router-dynamic-policy
        configMap:
          name: aai-data-router-dynamic-configmap
      - name: aai-data-router-logs
        hostPath:
          path: "/dockerdata-nfs/{{ .Values.nsPrefix }}/aai/data-router/logs"
      restartPolicy: Always
      imagePullSecrets:
      - name: "{{ .Values.nsPrefix }}-docker-registry-key"
#{{ end }}
