# requires --extra-vars="vhost=somevhost fqdn"

#General overview:
# talk to the vhost
# get back list of instances
# add each of their hostnames to an addhoc group
# halt each of them in a second play
# wait for them to die
# third play, reboot the vhost
#     wait for vhost to come back

# TO BE DONE - should be fixable w/ansible 0.9
# wait for all of the instances to return(?)
# compare the first list to the second for state info
# how to do this:
# capture output of action: virt command=info before halting guests
# compare to same command after vhost comes back
# ansible 0.9 should allow us to preserve content of two registered variables
# across multiple plays


- name: find instances
  hosts: "{{ vhost }}"
  user: root

  tasks:
  - name: get list of guests
    action: virt command=list_vms
    register: vmlist

  - name: add them to myvms_new group
    local_action: add_host hostname={{ item }} groupname=myvms_new
    with_items: "{{ vmlist.list_vms }}"


- name: halt instances
  hosts: myvms_new
  user: root
  serial: 1

  tasks:
  - name: tell nagios to shush
    action: nagios action=silence host={{ inventory_hostname_short }}
    delegate_to: noc01.phx2.fedoraproject.org

  - name: echo-y
    action: command /sbin/halt -p
    ignore_errors: true
    # if one of them is down we don't care

  - name: wait for them to die
    local_action: wait_for port=22 delay=30 timeout=300 state=stopped host={{ inventory_hostname }}
