# 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.

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 }}
  template:
    metadata:
      labels:
        app: {{ include "common.name" . }}
        release: {{ .Release.Name }}
    spec:
      initContainers:
      - name: {{ include "common.name" . }}-inject-demo-project
        command:
        - /bin/bash
        - -c
        - >
          git clone -b {{ .Values.config.gerritBranch }} --single-branch {{ .Values.config.gerritProject }} /tmp/gerrit;
          echo "Clone complete. Copying from /tmp/gerrit/heat to /share";
          cp -rf /tmp/gerrit/heat /share;
          echo "Done.";
        image: "{{ .Values.global.ubuntuInitRepository }}/{{ .Values.ubuntuInitImage }}"
        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
        volumeMounts:
        - name: demodir
          mountPath: "/share"
      containers:
      - name: {{ include "common.name" . }}
        image: "{{ include "common.repository" . }}/{{ .Values.image }}"
        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
        ports:
        - containerPort: {{ .Values.service.internalPort }}
        {{ 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 }}
        volumeMounts:
        - name: localtime
          mountPath: /etc/localtime
          readOnly: true
        - name: robot-eteshare
          mountPath: /share/config
        - name: robot-resources
          mountPath: /var/opt/OpenECOMP_ETE/robot/resources/policy_interface.robot
          subPath: policy_interface.robot
        - name: robot-resources
          mountPath: /var/opt/OpenECOMP_ETE/robot/resources/sdngc_interface.robot
          subPath: sdngc_interface.robot
        - name: robot-resources
          mountPath: /var/opt/OpenECOMP_ETE/robot/resources/oof_interface.robot
          subPath: oof_interface.robot
        - name: robot-lighttpd-authorization
          mountPath: /etc/lighttpd/authorization
          subPath: authorization
        - name: demodir
          mountPath: /share
        - name: robot-logs
          mountPath: /share/logs
        resources:
{{ toYaml .Values.resources | indent 12 }}
        {{- if .Values.nodeSelector }}
        nodeSelector:
{{ toYaml .Values.nodeSelector | indent 10 }}
        {{- end -}}
        {{- if .Values.affinity }}
        affinity:
{{ toYaml .Values.affinity | indent 10 }}
        {{- end }}
      volumes:
    {{- if .Values.persistence.enabled }}
      - name: robot-logs
        persistentVolumeClaim:
          claimName: {{ include "common.fullname" . }}
    {{- else }}
        emptyDir: {}
    {{- end }}
      - name: localtime
        hostPath:
          path: /etc/localtime
      - name: robot-eteshare
        configMap:
          name: {{ include "common.fullname" . }}-eteshare-configmap
          defaultMode: 0755
      - name: robot-resources
        configMap:
          name: {{ include "common.fullname" . }}-resources-configmap
      - name: robot-lighttpd-authorization
        configMap:
          name: {{ include "common.fullname" . }}-lighttpd-authorization-configmap
      - name: demodir
        emptyDir: {}
      imagePullSecrets:
      - name: "{{ include "common.namespace" . }}-docker-registry-key"
