---
apiVersion: v1
kind: Pod
metadata:
  name: browser-{{ id }}
  namespace: {{ namespace }}
  labels:
    browser: {{ id }}
    role: browser

spec:
  hostname: browser-{{ id }}
  subdomain: browser

  {% if priorityClassName %}
  priorityClassName: {{ priorityClassName }}
  {% endif %}

  restartPolicy: OnFailure

{% if crawler_node_type %}
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
          - matchExpressions:
            - key: nodeType
              operator: In
              values:
                - "{{ crawler_node_type }}"
{% endif %}

  tolerations:
    - key: nodeType
      operator: Equal
      value: crawling
      effect: NoSchedule
    - key: node.kubernetes.io/not-ready
      operator: Exists
      tolerationSeconds: 300
      effect: NoExecute
    - key: node.kubernetes.io/unreachable
      operator: Exists
      effect: NoExecute
      tolerationSeconds: 300

  containers:
    - name: browser
      image: {{ crawler_image }}
      imagePullPolicy: {{ crawler_image_pull_policy }}
      command:
        - create-login-profile
        - --interactive
        - --filename
        - /tmp/profile.tar.gz
        - --url
        - {{ url }}
      {%- if profile_filename %}
        - --profile
        - "@{{ profile_filename }}"
      {%- endif %}

      envFrom:
        - secretRef:
            name: {{ storage_secret }}

      env:
        - name: STORE_PATH
          value: {{ storage_path }}

        - name: VNC_PASS
          value: {{ vnc_password }}

      {% if crawler_socks_proxy_host %}
        - name: CHROME_FLAGS
          value: "--proxy-server=socks5://{{ crawler_socks_proxy_host }}:{{ crawler_socks_proxy_port | default('9050') }}"
      {% endif %}

      resources:
        limits:
          memory: "{{ crawler_memory }}"

        requests:
          cpu: "{{ crawler_cpu }}"
          memory: "{{ crawler_memory }}"
