---
- name: init bundle check
  uri:
    method: GET
    return_content: true
    validate_certs: false
    url: "https://{{ api_ep }}/v1/cluster-init/init-bundles"
    headers:
      Authorization: Bearer {{ api_token }}
      Accept: application/json
  register: init_bundle_response

- name: assume init bundle isn't there
  set_fact:
    init_bundle_present: false

- name: unless found
  set_fact:
    init_bundle_present: true
  when:
    - init_bundle_response.json['items'] | length > 0
    - (init_bundle_response.json['items'] | items2dict(key_name='name', value_name='expiresAt'))[clusters[cluster].name] is defined

- name: generate init bundle
  uri:
    method: POST
    return_content: true
    validate_certs: false
    url: "https://{{ api_ep }}/v1/cluster-init/init-bundles"
    headers:
      Authorization: Bearer {{ api_token }}
      Accept: application/json
      Content-Type: application/json
    body: '{"name":"{{ clusters[cluster].name | string }}"}'
  register: init_bundle_content
  when:
    - not init_bundle_present

- name: store init bundle - operator
  copy:
    dest: "{{ ansible_facts['user_dir'] }}/{{ cluster }}-init-bundle.yaml"
    content: "{{ init_bundle_content.json.kubectlBundle | b64decode }}"
    owner: "{{ ansible_user }}"
    group: "{{ ansible_user }}"
    mode: 0600
  when:
    - not init_bundle_present
    - clusters[cluster].method == 'operator'

- name: store init bundle - helm
  copy:
    dest: "{{ ansible_facts['user_dir'] }}/{{ cluster }}-helm-bundle.yaml"
    content: "{{ init_bundle_content.json.helmValuesBundle | b64decode }}"
    owner: "{{ ansible_user }}"
    group: "{{ ansible_user }}"
    mode: 0600
  when:
    - not init_bundle_present
    - clusters[cluster].method == 'helm'

- name: make sure namespace is there
  kubernetes.core.k8s:
    kubeconfig: "{{ ansible_facts['user_dir'] }}/kubeconfig-{{ cluster }}"
    validate_certs: no
    api_version: v1
    kind: Namespace
    name: "{{ clusters[cluster].namespace }}"
    namespace: ""
    state: present

- name: create init bundle
  kubernetes.core.k8s:
    kubeconfig: "{{ ansible_facts['user_dir'] }}/kubeconfig-{{ cluster }}"
    validate_certs: no
    src: "{{ ansible_facts['user_dir'] }}/{{ cluster }}-init-bundle.yaml"
    namespace: "{{ clusters[cluster].namespace }}"
  when:
    - clusters[cluster].method == 'operator'
...