---
# Copyright 2018-present Open Networking Foundation
#
# 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: batch/v1
kind: Job
metadata:
  name: xos-tester
  labels:
    app: xos-tester
    chart: xos-tester
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
spec:
  template:
    metadata:
      labels:
        app: xos-tester
        release: {{ .Release.Name }}
    spec:
      restartPolicy: Never
      containers:
        - name: xos-tester
          image: {{ .Values.global.registry }}{{ .Values.image.repository }}:{{ tpl .Values.image.tag . }}
          imagePullPolicy: {{ .Values.image.pullPolicy }}
          command: [
            "bash",
            "run_tests.sh"
          ]
          volumeMounts:
            - name: xos-tester-command
              mountPath: /src/cord-api/Tests/run_tests.sh
              subPath: command/run_tests.sh
      volumes:
        - name: xos-tester-command
          configMap:
            name: xos-tester-command
            items:
              - key: command
                path: command/run_tests.sh
