# Copyright © 2018 Amdocs, Bell Canada, AT&T
#
# 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: apps/v1
kind: Deployment
metadata:
  name: {{ include "common.fullname" . }}
  namespace: {{ include "common.namespace" . }}
  labels:
    app: {{ include "common.name" . }}
    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
    release: {{ include "common.release" . }}
    heritage: {{ .Release.Service }}
spec:
  selector:
    matchLabels:
      app: {{ include "common.name" . }}
  replicas: {{ .Values.replicaCount }}
  template:
    metadata:
      labels:
        app: {{ include "common.name" . }}
        release: {{ include "common.release" . }}
    spec:
      hostAliases:
      - ip: {{ .Values.kubernetesExternalIp }}
        hostnames:
        - "portal.api.simpledemo.onap.org"
        - "vid.api.simpledemo.onap.org"
        - "sdc.api.fe.simpledemo.onap.org"
        - "portal-sdk.simpledemo.onap.org"
        - "policy.api.simpledemo.onap.org"
        - "aai.api.sparky.simpledemo.onap.org"
        - "aai.ui.simpledemo.onap.org"
        - "cli.api.simpledemo.onap.org"
        - "so-monitoring"
      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: dshm
          mountPath: /dev/shm
        - name: localtime
          mountPath: /etc/localtime
          readOnly: true
        - name: robot-eteshare
          mountPath: /share/config
        - name: robot-lighttpd
          mountPath: /etc/lighttpd
        - name: robot-lighttpd-ssl
          mountPath: /etc/lighttpd/ssl
        - name: robot-logs
          mountPath: /share/logs
        resources:
{{ include "common.resources" . }}
      {{- if .Values.nodeSelector }}
      nodeSelector:
{{ toYaml .Values.nodeSelector | indent 8 }}
      {{- end -}}
      {{- if .Values.affinity }}
      affinity:
{{ toYaml .Values.affinity | indent 8 }}
      {{- end }}
      volumes:
    {{- if .Values.persistence.enabled }}
      - name: robot-logs
        persistentVolumeClaim:
          claimName: {{ include "common.fullname" . }}
    {{- else }}
        emptyDir: {}
    {{- end }}
      - name: dshm
        emptyDir:
          medium: Memory
      - name: localtime
        hostPath:
          path: /etc/localtime
      - name: robot-eteshare
        configMap:
          name: {{ include "common.fullname" . }}-eteshare-configmap
          defaultMode: 0755
      - name: robot-lighttpd
        configMap:
          name: {{ include "common.fullname" . }}-lighttpd-configmap
          defaultMode: 0755
      - name: robot-lighttpd-ssl
        configMap:
          name: {{ include "common.fullname" . }}-lighttpd-ssl-configmap
          defaultMode: 0600
      imagePullSecrets:
      - name: "{{ include "common.namespace" . }}-docker-registry-key"
