# 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.disableAppcAppcDgbuilder }}
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: appc-dgbuilder
  namespace: "{{ .Values.nsPrefix }}"
spec:
  replicas: {{ .Values.dgbuilderReplicas }}
  selector:
    matchLabels:
      app: appc-dgbuilder
  template:
    metadata:
      labels:
        app: appc-dgbuilder
      name: appc-dgbuilder
    spec:
      initContainers:
      - command:
        - /root/ready.py
        args:
        - --container-name
        - appc-db-container
        - --container-name
        - appc-controller-container
        env:
        - name: NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        image: {{ .Values.image.readiness }}
        imagePullPolicy: {{ .Values.pullPolicy }}
        name: appc-dgbuilder-readiness
      containers:
      - command:
        - /bin/bash
        - -c
        - cd /opt/onap/sdnc/dgbuilder/ && ./start.sh sdnc1.0 && wait
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: openECOMP1.0
        - name: SDNC_CONFIG_DIR
          value: /opt/onap/sdnc/data/properties
        image: {{ .Values.image.dgbuilderSdnc }}
        imagePullPolicy: {{ .Values.pullPolicy }}
        name: appc-dgbuilder-container
        ports:
        - containerPort: 3100
        readinessProbe:
          tcpSocket:
            port: 3100
          initialDelaySeconds: 5
          periodSeconds: 10
        volumeMounts:
        - name: localtime
          mountPath: /etc/localtime
          readOnly: true
        - name: dgbuilder-conf
          mountPath: /opt/onap/sdnc/dgbuilder/releases/sdnc1.0/conf/svclogic.properties
          subPath: svclogic.properties
        - name: dgbuilder-conf
          mountPath: /opt/onap/sdnc/dgbuilder/svclogic/svclogic.properties
          subPath: svclogic.properties
        - name: dgbuilder-scripts
          mountPath: /opt/onap/sdnc/dgbuilder/createReleaseDir.sh
          subPath: createReleaseDir.sh
        - name: dgbuilder-scripts
          mountPath: /opt/onap/sdnc/dgbuilder/releases/sdnc1.0/customSettings.js
          subPath: customSettings.js
      volumes:
      - name: localtime
        hostPath:
          path: /etc/localtime
      - name: dgbuilder-conf
        configMap:
          name: appc-dgbuilder-conf-configmap
      - name: dgbuilder-scripts
        configMap:
          name: appc-dgbuilder-scripts-configmap
          defaultMode: 0755
      restartPolicy: Always
      imagePullSecrets:
      - name: "{{ .Values.nsPrefix }}-docker-registry-key"
#{{ end }}
