---
- name: Pre-pull bootstrap images into containerd
  shell: |
    if /usr/local/bin/ctr -n k8s.io images ls -q | grep -Fx -- "{{ item }}" >/dev/null; then
      echo "already present"
      exit 0
    fi

    for attempt in 1 2 3; do
      if timeout 120s /usr/local/bin/ctr -n k8s.io images pull "{{ item }}"; then
        echo "pulled image"
        exit 0
      fi

      sleep 10
    done

    exit 1
  args:
    executable: /bin/bash
  register: bootstrap_image_pull
  loop: "{{ bootstrap_prepull_images }}"
  changed_when: "'pulled image' in bootstrap_image_pull.stdout"
  failed_when: false

- name: Report bootstrap images that did not pre-pull after retries
  debug:
    msg: >-
      Best-effort bootstrap image pre-pull did not complete for {{ item.item }} after
      3 attempt(s): {{ item.stderr | default('no stderr') }}
  loop: "{{ bootstrap_image_pull.results | default([]) }}"
  loop_control:
    label: "{{ item.item }}"
  when: item.rc is defined and item.rc != 0
