# 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.disableAppcAppc }}
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: appc
  namespace: "{{ .Values.nsPrefix }}"
spec:
  replicas: {{ .Values.appcReplicas }}
  selector:
    matchLabels:
      app: appc
  template:
    metadata:
      labels:
        app: appc
      name: appc
    spec:
      initContainers:
      - command:
        - /root/ready.py
        args:
        - --container-name
        - appc-db-container
        env:
        - name: NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        image: {{ .Values.image.readiness }}
        imagePullPolicy: {{ .Values.pullPolicy }}
        name: appc-readiness
      containers:
      - command:
        - /opt/openecomp/appc/bin/startODL.sh
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: openECOMP1.0
        - name: SDNC_CONFIG_DIR
          value: /opt/openecomp/appc/data/properties
        - name: APPC_CONFIG_DIR
          value: /opt/openecomp/appc/data/properties
        - name: DMAAP_TOPIC_ENV
          value: SUCCESS
        - name: MYSQL_HOST
          value: appc-dbhost
        image: {{ .Values.image.appc }}
        imagePullPolicy: {{ .Values.pullPolicy }}
        name: appc-controller-container
        volumeMounts:
        - mountPath: /etc/localtime
          name: localtime
          readOnly: true
        - mountPath: /opt/openecomp/appc/data/properties/dblib.properties
          name: appc-openecomp-appc-data-properties
          subPath: dblib.properties
        - mountPath: /opt/openecomp/appc/data/properties/svclogic.properties
          name: appc-openecomp-appc-data-properties
          subPath: svclogic.properties
        - mountPath: /opt/openecomp/appc/data/properties/appc.properties
          name: appc-openecomp-appc-data-properties
          subPath: appc.properties
        - mountPath: /opt/openecomp/appc/data/properties/aaiclient.properties
          name: appc-openecomp-appc-data-properties
          subPath: aaiclient.properties
        - mountPath: /opt/openecomp/appc/svclogic/config/svclogic.properties
          name: appc-openecomp-appc-svclogic-config
          subPath: svclogic.properties
        - mountPath: /opt/openecomp/appc/svclogic/bin/showActiveGraphs.sh
          name: appc-openecomp-appc-svclogic-bin
          subPath: showActiveGraphs.sh
        - mountPath: /opt/openecomp/appc/bin/startODL.sh
          name: appc-openecomp-appc-bin
          subPath: startODL.sh
        - mountPath: /opt/openecomp/appc/bin/installAppcDb.sh
          name: appc-openecomp-appc-bin
          subPath: installAppcDb.sh
        - mountPath: /opt/onap/sdnc/data/properties/dblib.properties
          name: appc-onap-sdnc-data-properties
          subPath: dblib.properties
        - mountPath: /opt/onap/sdnc/data/properties/svclogic.properties
          name: appc-onap-sdnc-data-properties
          subPath: svclogic.properties
        - mountPath: /opt/onap/sdnc/data/properties/aaiclient.properties
          name: appc-onap-sdnc-data-properties
          subPath: aaiclient.properties
        - mountPath: /opt/onap/sdnc/svclogic/config/svclogic.properties
          name: appc-onap-sdnc-svclogic-config
          subPath: svclogic.properties
        - mountPath: /opt/onap/sdnc/svclogic/bin/showActiveGraphs.sh
          name: appc-onap-sdnc-svclogic-bin
          subPath: showActiveGraphs.sh
        - mountPath: /opt/onap/sdnc/bin/startODL.sh
          name: appc-onap-sdnc-bin
          subPath: startODL.sh
        - mountPath: /opt/onap/sdnc/bin/installSdncDb.sh
          name: appc-onap-sdnc-bin
          subPath: installSdncDb.sh
        - mountPath: /var/log/onap
          name: appc-logs
        - mountPath: /opt/opendaylight/current/etc/org.ops4j.pax.logging.cfg
          name: appc-log-config
          subPath: org.ops4j.pax.logging.cfg
        ports:
        - containerPort: 8181
        - containerPort: 1830
        readinessProbe:
          tcpSocket:
            port: 8181
          initialDelaySeconds: 5
          periodSeconds: 10
      - 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: appc-logs
        - mountPath: /usr/share/filebeat/data
          name: appc-data-filebeat
      volumes:
        - name: localtime
          hostPath:
            path: /etc/localtime
        - name: filebeat-conf
          configMap:
            name: appc-filebeat-configmap
        - name: appc-log-config
          configMap:
            name: appc-logging-cfg-configmap
        - name: appc-logs
          emptyDir: {}
        - name: appc-data-filebeat
          emptyDir: {}
        - name: appc-openecomp-appc-data-properties
          configMap:
            name: appc-openecomp-appc-data-properties-configmap
        - name: appc-openecomp-appc-svclogic-config
          configMap:
            name: appc-openecomp-appc-svclogic-config-configmap
        - name: appc-openecomp-appc-svclogic-bin
          configMap:
            name: appc-openecomp-appc-svclogic-bin-configmap
            defaultMode: 0755
        - name: appc-openecomp-appc-bin
          configMap:
            name: appc-openecomp-appc-bin-configmap
            defaultMode: 0755
        - name: appc-onap-sdnc-data-properties
          configMap:
            name: appc-onap-sdnc-data-properties-configmap
        - name: appc-onap-sdnc-svclogic-config
          configMap:
            name: appc-onap-sdnc-svclogic-config-configmap
        - name: appc-onap-sdnc-svclogic-bin
          configMap:
            name: appc-onap-sdnc-svclogic-bin-configmap
            defaultMode: 0755
        - name: appc-onap-sdnc-bin
          configMap:
            name: appc-onap-sdnc-bin-configmap
            defaultMode: 0755
      imagePullSecrets:
      - name: "{{ .Values.nsPrefix }}-docker-registry-key"
#{{ end }}
