summaryrefslogtreecommitdiffstats
path: root/roles/etcd/tasks/migration/check_cluster_status.yml
diff options
context:
space:
mode:
authorJan Chaloupka <jchaloup@redhat.com>2017-09-19 15:14:18 +0200
committerJan Chaloupka <jchaloup@redhat.com>2017-09-22 10:12:20 +0200
commitf8664e17ef5e6bead61d8471facd2859fd10c180 (patch)
tree478c21fd924ce9d6abf410b57257c004637aa31a /roles/etcd/tasks/migration/check_cluster_status.yml
parent2d0501b63ff07b177b3fb5b1c6663ed369656240 (diff)
downloadopenshift-f8664e17ef5e6bead61d8471facd2859fd10c180.tar.gz
openshift-f8664e17ef5e6bead61d8471facd2859fd10c180.tar.bz2
openshift-f8664e17ef5e6bead61d8471facd2859fd10c180.tar.xz
openshift-f8664e17ef5e6bead61d8471facd2859fd10c180.zip
consolidate etcd_migrate role
Diffstat (limited to 'roles/etcd/tasks/migration/check_cluster_status.yml')
-rw-r--r--roles/etcd/tasks/migration/check_cluster_status.yml32
1 files changed, 32 insertions, 0 deletions
diff --git a/roles/etcd/tasks/migration/check_cluster_status.yml b/roles/etcd/tasks/migration/check_cluster_status.yml
new file mode 100644
index 000000000..b69fb5a52
--- /dev/null
+++ b/roles/etcd/tasks/migration/check_cluster_status.yml
@@ -0,0 +1,32 @@
+---
+# etcd_ip originates from etcd_common role
+- name: Check cluster status
+ command: >
+ etcdctl --cert {{ etcd_peer_cert_file }} --key {{ etcd_peer_key_file }} --cacert {{ etcd_peer_ca_file }} --endpoints 'https://{{ etcd_peer }}:{{ etcd_client_port }}' -w json endpoint status
+ environment:
+ ETCDCTL_API: 3
+ register: l_etcd_cluster_status
+
+- name: Retrieve raftIndex
+ set_fact:
+ etcd_member_raft_index: "{{ (l_etcd_cluster_status.stdout | from_json)[0]['Status']['raftIndex'] }}"
+
+- block:
+ # http://docs.ansible.com/ansible/playbooks_filters.html#extracting-values-from-containers
+ - name: Group all raftIndices into a list
+ set_fact:
+ etcd_members_raft_indices: "{{ groups['oo_etcd_to_migrate'] | map('extract', hostvars, 'etcd_member_raft_index') | list | unique }}"
+
+ - name: Check the minimum and the maximum of raftIndices is at most 1
+ set_fact:
+ etcd_members_raft_indices_diff: "{{ ((etcd_members_raft_indices | max | int) - (etcd_members_raft_indices | min | int)) | int }}"
+
+ - debug:
+ msg: "Raft indices difference: {{ etcd_members_raft_indices_diff }}"
+
+ when: inventory_hostname in groups.oo_etcd_to_migrate[0]
+
+# The cluster raft status is ok if the difference of the max and min raft index is at most 1
+- name: capture the status
+ set_fact:
+ l_etcd_cluster_status_ok: "{{ hostvars[groups.oo_etcd_to_migrate[0]]['etcd_members_raft_indices_diff'] | int < 2 }}"