# 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.disableVidVidServer }}
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    app: vid-server
  name: vid-server
  namespace: "{{ .Values.nsPrefix }}"
spec:
  replicas: {{ .Values.vidServerReplicas }}
  selector:
    matchLabels:
      app: vid-server
  template:
    metadata:
      labels:
        app: vid-server
      name: vid-server
    spec:
      initContainers:
      - command:
        - /root/ready.py
        args:
        - --container-name
        - vid-mariadb
        env:
        - name: NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        image: {{ .Values.image.readiness }}
        imagePullPolicy: {{ .Values.pullPolicy }}
        name: vid-server-readiness
      containers:
      - env:
        - name: ASDC_CLIENT_REST_HOST
          value: sdc-be.{{ .Values.nsPrefix }}
        - name: ASDC_CLIENT_REST_AUTH
          value: Basic dmlkOktwOGJKNFNYc3pNMFdYbGhhazNlSGxjc2UyZ0F3ODR2YW9HR21KdlV5MlU=
        - name: ASDC_CLIENT_REST_PORT
          value: "8080"
        - name: VID_AAI_HOST
          value: aai-service.{{ .Values.nsPrefix }}
        - name: VID_AAI_PORT
          value: "8443"
        - name: VID_ECOMP_SHARED_CONTEXT_REST_URL
          value: http://portalapps.{{ .Values.nsPrefix }}:8989/ONAPPORTAL/context
        - name: VID_MSO_SERVER_URL
          value: http://mso.{{ .Values.nsPrefix }}:8080
        - name: VID_MSO_PASS
          value: OBF:1ih71i271vny1yf41ymf1ylz1yf21vn41hzj1icz
        - name: MSO_DME2_SERVER_URL
          value: http://localhost:8081
        - name: MSO_DME2_ENABLED
          value: "false"
        - name: VID_ECOMP_REDIRECT_URL
          value: http://portalapps.{{ .Values.nsPrefix }}:8989/ONAPPORTAL/login.htm
        - name: VID_ECOMP_REST_URL
          value: http://portalapps.{{ .Values.nsPrefix }}:8989/ONAPPORTAL/auxapi
        - name: VID_CONTACT_US_LINK
          value: https://todo_contact_us_link.com
        - name: VID_UEB_URL_LIST
          value: dmaap.{{ .Values.nsPrefix }}
        - name: VID_MYSQL_HOST
          value: vid-mariadb
        - name: VID_MYSQL_PORT
          value: "3306"
        - name: VID_MYSQL_DBNAME
          value: vid_openecomp_epsdk
        - name: VID_MYSQL_USER
          value: vidadmin
        - name: VID_MYSQL_PASS
          value: Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
        - name: VID_MYSQL_MAXCONNECTIONS
          value: "5"
        image: {{ .Values.image.vid }}
        imagePullPolicy: {{ .Values.pullPolicy }}
        name: vid-server
        lifecycle:
          postStart:
            exec:
              command: ["/bin/sh", "-c", "export LOG=wait_logback.log; touch $LOG; export SRC=/tmp/logback.xml; export DST=/usr/local/tomcat/webapps/vid/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"]
        ports:
        - containerPort: 8080
        volumeMounts:
        - mountPath: /etc/localtime
          name: localtime
          readOnly: true
        - mountPath: /var/log/onap
          name: vid-logs
        - mountPath: /tmp/logback.xml
          name: vid-logback
          subPath: logback.xml
        readinessProbe:
          tcpSocket:
            port: 8080
          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: vid-logs
        - mountPath: /usr/share/filebeat/data
          name: vid-data-filebeat
      volumes:
        - name: localtime
          hostPath:
            path: /etc/localtime
        - name: filebeat-conf
          configMap:
            name: vid-filebeat-configmap
        - name: vid-logs
          emptyDir: {}
        - name: vid-data-filebeat
          emptyDir: {}
        - name: vid-logback
          configMap:
            name: vid-log-configmap
      imagePullSecrets:
      - name: "{{ .Values.nsPrefix }}-docker-registry-key"
#{{ end }}
