# 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.disablePolicyPap }}
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: policy-pap
  namespace: "{{ .Values.nsPrefix }}"
spec:
  replicas: {{ .Values.papReplicas }}
  selector:
    matchLabels:
      app: pap
  template:
    metadata:
      labels:
        app: pap
      name: policy-pap
    spec:
      initContainers:
      - command:
        - /root/ready.py
        args:
        - --container-name
        - mariadb
        env:
        - name: NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        image: "{{ .Values.image.readiness }}:{{ .Values.image.readinessVersion }}"
        imagePullPolicy: {{ .Values.pullPolicy }}
        name: pap-readiness
      - command: ["/bin/bash", "-c", "echo $POD_IP > /config/ip_addr.txt"]
        env:
        - name: POD_IP
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        volumeMounts:
        - mountPath: /config/
          name: pe
        image: {{ .Values.image.ubuntu }}
        imagePullPolicy: {{ .Values.pullPolicy }}
        name: generate-ip-addr-txt
      containers:
      - command:
        - /bin/bash
        - ./do-start.sh
        - pap
        image: "{{ .Values.image.policyPe }}:{{ .Values.image.policyPeVersion }}"
        imagePullPolicy: {{ .Values.pullPolicy }}
        name: pap
        env:
        - name: PRELOAD_POLICIES
          value: "true"
        ports:
        - containerPort: 8443
        - containerPort: 9091
        readinessProbe:
          tcpSocket:
            port: 9091
          initialDelaySeconds: 5
          periodSeconds: 10
        volumeMounts:
        - mountPath: /etc/localtime
          name: localtime
          readOnly: true
        - mountPath: /tmp/policy-install/config/
          name: pe
        - 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.image.filebeat }}
        imagePullPolicy: {{ .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: policy-filebeat-configmap
        - name: policy-logs
          emptyDir: {}
        - name: policy-data-filebeat
          emptyDir: {}
        - name: policy-logback
          configMap:
            name: policy-pap-log-configmap
        - name: policy-sdk-logback
          configMap:
            name: policy-sdk-log-configmap
        - name: pe
          configMap:
            name: policy-dep-pe-configmap
            defaultMode: 0755
      imagePullSecrets:
      - name: "{{ .Values.nsPrefix }}-docker-registry-key"
#{{ end }}
