---

- name: Set facts about infra VMs
  gather_facts: false
  hosts: "{{ infra_vm_limit | default('infra-vms') }}"
  tags:
    - always
  tasks:
    - name: Group virtual machines by hypervisor
      group_by:
        key: infra_vms_{{ infra_vm_hypervisor }}
      # FIXME(mgoddard): Is delegate_to necessary?
      delegate_to: "{{ infra_vm_hypervisor }}"
      changed_when: false

- name: Ensure defined infra VMs are destroyed
  hosts: hypervisors
  max_fail_percentage: >-
    {{ infra_vm_deprovision_max_fail_percentage |
       default(kayobe_max_fail_percentage) |
       default(100) }}
  tags:
    - infra-vm-deprovision
  tasks:
    - import_role:
        name: infra-vms
      vars:
        infra_vm_action: destroy
        infra_vm_vms: "{{ groups['infra_vms_' ~ inventory_hostname ] | default([]) }}"

- name: Set facts about infra VMs
  gather_facts: false
  hosts: "{{ infra_vm_limit | default('infra-vms') }}"
  max_fail_percentage: >-
    {{ infra_vm_deprovision_max_fail_percentage |
       default(kayobe_max_fail_percentage) |
       default(100) }}
  tags:
    - infra-vm-deprovision
  tasks:
    - name: Remove host key from known hosts
      known_hosts:
        name: "{{ ansible_host }}"
        state: "absent"
      delegate_to: localhost
      throttle: 1
