- name: Setup resources and mark the subnode as forced down
  become: true
  become_user: stack
  shell: "/opt/stack/nova/roles/run-evacuate-hook/files/setup_evacuate_resources.sh"
  environment:
    SUBNODE_HOSTNAME: "{{ hostvars['compute1']['ansible_hostname'] }}"

- name: Fence subnode by stopping n-cpu
  delegate_to: compute1
  become: true
  systemd:
    name: devstack@n-cpu
    state: stopped

- name: Check if q-agt exists
  shell: sudo systemctl status devstack@q-agt
  ignore_errors: true
  register: qagtstatus

- name: Fence subnode by stopping q-agt (if exists)
  delegate_to: compute1
  become: true
  systemd:
    name: devstack@q-agt
    state: stopped
  when: qagtstatus.rc | int == 0

- name: Make sure lxml is installed
  delegate_to: compute1
  become: true
  package:
    name: python3-lxml
    state: present

- name: Register running domains on subnode
  delegate_to: compute1
  become: true
  virt:
    command: list_vms
    state: running
  register: subnode_vms

- name: Destroy running domains on subnode
  delegate_to: compute1
  become: true
  virt:
    name: "{{ item }}"
    state: destroyed
  with_items: "{{ subnode_vms.list_vms }}"

- name: Stop libvirtd on "{{ inventory_hostname }}"
  become: true
  systemd:
    name: "{{ item }}"
    state: stopped
    enabled: no
  with_items:
    - libvirtd.service
    - libvirtd.socket
    - libvirtd-admin.socket
    - libvirtd-ro.socket
    - virtlogd.service
    - virtlogd-admin.socket
    - virtlogd.socket
    - virtlockd.service
    - virtlockd-admin.socket
    - virtlockd.socket

- name: Run negative evacuate tests
  become: true
  become_user: stack
  shell: "/opt/stack/nova/roles/run-evacuate-hook/files/test_negative_evacuate.sh"
  environment:
    CONTROLLER_HOSTNAME: "{{ hostvars['controller']['ansible_hostname'] }}"

- name: Start libvirtd on "{{ inventory_hostname }}"
  become: true
  systemd:
    name: "{{ item }}"
    state: started
    enabled: yes
  with_items:
    - libvirtd.service
    - libvirtd.socket
    - libvirtd-admin.socket
    - libvirtd-ro.socket
    - virtlogd.service
    - virtlogd-admin.socket
    - virtlogd.socket
    - virtlockd.service
    - virtlockd-admin.socket
    - virtlockd.socket

- name: Run evacuate tests
  become: true
  become_user: stack
  shell: "/opt/stack/nova/roles/run-evacuate-hook/files/test_evacuate.sh"
  environment:
    CONTROLLER_HOSTNAME: "{{ hostvars['controller']['ansible_hostname'] }}"
