# Copyright © 2017-2018 AT&T
# Modifications Copyright © 2018 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 .Values.global.jobs.updateQueryData.enabled }}

apiVersion: batch/v1
kind: Job
metadata:
  name: {{ include "common.fullname" . }}-update-query-data
  namespace: {{ include "common.namespace" . }}
  labels:
    app: {{ include "common.name" . }}
    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
{{ if .Values.global.jobs.migration.enabled }}
  annotations:
    "helm.sh/hook": post-upgrade,post-rollback,post-install
    "helm.sh/hook-weight": "2"
    "helm.sh/hook-delete-policy": before-hook-creation
{{ end }}
spec:
  template:
    metadata:
      labels:
        app: {{ include "common.name" . }}-job
        release: {{ .Release.Name }}
      name: {{ include "common.name" . }}
    spec:
      initContainers:
      - command:
        - /root/ready.py
        args:
        - --container-name
        - aai
        {{ if eq .Values.global.aafEnabled true }}
        - --container-name
        - aaf-locate
        {{ end }}
        env:
        - name: NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
        name: {{ include "common.name" . }}-readiness
      containers:
      - name: {{ include "common.name" . }}-job
        image: "{{ include "common.repository" . }}/{{ .Values.image }}"
        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
        command:
        - bash
        - "-c"
        - |
          set -x
          mkdir -p /opt/aai/logroot/AAI-GQ/misc
          until nc -w10 -z -v aai.{{.Release.Namespace}} 8443; do echo "Retrying to reach aai on port 8443"; done;
          bash -x /opt/app/aai-traversal/docker-entrypoint.sh install/updateQueryData.sh
        env:
        - name: LOCAL_USER_ID
          value: {{ .Values.global.config.userId | quote }}
        - name: LOCAL_GROUP_ID
          value: {{ .Values.global.config.groupId | quote }}
        volumeMounts:
        - mountPath: /etc/localtime
          name: localtime
          readOnly: true
        - mountPath: /opt/app/aai-traversal/resources/etc/appprops/janusgraph-realtime.properties
          name: {{ include "common.fullname" . }}-config
          subPath: janusgraph-realtime.properties
        - mountPath: /opt/app/aai-traversal/resources/etc/appprops/janusgraph-cached.properties
          name: {{ include "common.fullname" . }}-config
          subPath: janusgraph-cached.properties
        - mountPath: /opt/app/aai-traversal/resources/etc/appprops/aaiconfig.properties
          name: {{ include "common.fullname" . }}-config
          subPath: aaiconfig.properties
        - mountPath: /opt/aai/logroot/AAI-GQ/
          name: {{ include "common.fullname" . }}-logs
        - mountPath: /opt/app/aai-traversal/resources/logback.xml
          name: {{ include "common.fullname" . }}-config
          subPath: logback.xml
        - mountPath: /opt/app/aai-traversal/resources/localhost-access-logback.xml
          name: {{ include "common.fullname" . }}-config
          subPath: localhost-access-logback.xml
        - mountPath: /opt/app/aai-traversal/resources/application.properties
          name: {{ include "common.fullname" . }}-config
          subPath: application.properties
          {{ $global := . }}
          {{ range $job := .Values.global.config.auth.files }}
        - mountPath: /opt/app/aai-traversal/resources/etc/auth/{{ . }}
          name: {{ include "common.fullname" $global }}-auth-truststore-sec
          subPath: {{ . }}
          {{ end }}
        # disable liveness probe when breakpoints set in debugger
        # so K8s doesn't restart unresponsive container
      volumes:
      - name: localtime
        hostPath:
          path: /etc/localtime
      - name: filebeat-conf
        configMap:
          name: aai-filebeat
      - name: {{ include "common.fullname" . }}-logs
        hostPath:
          path: {{ .Values.persistence.mountPath }}/{{ .Release.Name }}/{{ .Values.persistence.mountSubPath }}-update-query
      - name: {{ include "common.fullname" . }}-filebeat
        emptyDir: {}
      - name: {{ include "common.fullname" . }}-config
        configMap:
         name: {{ include "common.fullname" . }}-configmap
      - name: {{ include "common.fullname" . }}-auth-truststore-sec
        secret:
         secretName: aai-common-truststore
         items:
          {{ range $job := .Values.global.config.auth.files }}
           - key: {{ . }}
             path: {{ . }}
          {{ end }}
      restartPolicy: OnFailure
      imagePullSecrets:
      - name: "{{ include "common.namespace" . }}-docker-registry-key"
{{ end }}
