---
- name: Check cluster health
  command: >
    etcdctl --cert-file {{ etcd_peer_cert_file }} --key-file {{ etcd_peer_key_file }} --ca-file {{ etcd_peer_ca_file }} --endpoint https://{{ etcd_peer }}:{{ etcd_client_port }} cluster-health
  register: etcd_cluster_health
  changed_when: false
  failed_when: false

- name: Assume a member is not healthy
  set_fact:
    etcd_member_healthy: false

- name: Get member item health status
  set_fact:
    etcd_member_healthy: true
  with_items: "{{ etcd_cluster_health.stdout_lines }}"
  when: "(etcd_peer in item) and ('is healthy' in item)"

- name: Check the etcd cluster health
  # TODO(jchaloup): should we fail or ask user if he wants to continue? Or just wait until the cluster is healthy?
  fail:
    msg: "Etcd member {{ etcd_peer }} is not healthy"
  when: not etcd_member_healthy
