---
- name: Fail if nova_libvirt container is enabled
  fail:
    msg: >-
      The nova_libvirt container has not been cleaned up because it is enabled.
      It may be disabled by setting enable_nova_libvirt_container to false.
  when: enable_nova_libvirt_container | bool

- name: Get container facts
  become: true
  kolla_container_facts:
    action: get_containers
    container_engine: "{{ kolla_container_engine }}"
    name:
      - nova_libvirt
  register: container_facts

- block:
    # NOTE(mgoddard): pgrep exit status 1 means no match.
    - name: Check if there are any running VMs
      become: true
      shell:
        cmd: >
          set -o pipefail &&
          { pgrep -l qemu || test $? = 1; } | awk '!/qemu-ga/  && !/qemu-img/ {print $1}'
        executable: /bin/bash
      register: running_vms

    - name: Fail if there are any running VMs
      fail:
        msg: >-
          Refusing to remove nova_libvirt container with running VMs:
          {{ running_vms.stdout }}
      when:
        - running_vms.stdout != ''
        - nova_libvirt_cleanup_running_vms_fatal | bool

    - name: Stop and remove nova_libvirt container
      become: true
      kolla_container:
        common_options: "{{ docker_common_options }}"
        action: "stop_and_remove_container"
        name: nova_libvirt
  when: container_facts.containers['nova_libvirt'] is defined

- name: Remove nova_libvirt Docker volumes
  become: true
  kolla_container:
    common_options: "{{ docker_common_options }}"
    action: "remove_volume"
    name: "{{ item }}"
  loop:
    - libvirtd
    - nova_libvirt_qemu
    - nova_libvirt_secrets
  when: nova_libvirt_cleanup_remove_volumes | bool

- name: Remove config for nova_libvirt
  become: true
  file:
    path: "{{ node_config_directory }}/nova-libvirt"
    state: "absent"

# Revert the changes applied in config-host.yml.
- block:
    - name: Remove udev kolla kvm rules
      become: true
      file:
        path: "/etc/udev/rules.d/99-kolla-kvm.rules"
        state: absent

    - name: Reset /dev/kvm ownership
      become: true
      file:
        path: /dev/kvm
        group: kvm

    - name: Unmask qemu-kvm service
      become: true
      systemd:
        name: qemu-kvm.service
        masked: false
      when:
        - ansible_facts.distribution == 'Ubuntu'
  when:
    - nova_compute_virt_type == 'kvm'
