apiVersion: batch/v1
kind: Job
metadata:
  name: "job-{{ id }}"

  labels:
    btrix.profile: "1"
    btrix.archive: {{ aid }}
    btrix.user: {{ userid }}
    {%- if baseprofile %}
    btrix.baseprofile: "{{ baseprofile }}"
    {%- endif %}

spec:
  template:
    metadata:
      labels:
        btrix.profile: "1"
        btrix.archive: {{ aid }}
        btrix.user: {{ userid }}
        {%- if baseprofile %}
        btrix.baseprofile: "{{ baseprofile }}"
        {%- endif %}

    spec:
      restartPolicy: OnFailure

      affinity:
        nodeAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
            - weight: 1
              preference:
                matchExpressions:
                - key: nodeType
                  operator: In
                  values:
                    - "{{ crawler_node_type }}"

      tolerations:
        - key: "nodeType"
          operator: "Equal"
          value: "crawling"
          effect: "NoSchedule"

      containers:
        - name: crawl-job
          image: {{ job_image }}
          imagePullPolicy: Always
          command: ["python", "-m", "btrixcloud.k8s.profile_job"]

          volumeMounts:
            - name: config-volume
              mountPath: /config

          env:
            - name: JOB_ID
              valueFrom:
                fieldRef:
                  fieldPath: metadata.labels['job-name']

            - name: STORE_PATH
              value: {{ storage_path }}

            - name: STORAGE_NAME
              value: {{ storage_name }}

            - name: IDLE_TIMEOUT
              value: "60"

            - name: START_URL
              value: {{ url }}

            - name: PROFILE_PATH
              value: {{ profile_path }}
              
      volumes:
        - name: config-volume
          configMap:
            name: shared-job-config
            items:
              - key: config.yaml
                path: config.yaml
 
