From bee8a31afe2de33bfb509cb20a98bf8a6cb5755b Mon Sep 17 00:00:00 2001 From: Guillaume Abrioux Date: Thu, 11 Jul 2019 11:26:50 +0200 Subject: [PATCH] shrink-rbdmirror: check if rbdmirror is well removed from cluster This commits adds a check to ensure the daemon has been removed from the cluster. Signed-off-by: Guillaume Abrioux (cherry picked from commit 916dc1f52f372d52eec045a7780291bef143e037) --- infrastructure-playbooks/shrink-rbdmirror.yml | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/infrastructure-playbooks/shrink-rbdmirror.yml b/infrastructure-playbooks/shrink-rbdmirror.yml index 7d2fd19ca..85f893d9f 100644 --- a/infrastructure-playbooks/shrink-rbdmirror.yml +++ b/infrastructure-playbooks/shrink-rbdmirror.yml @@ -66,7 +66,7 @@ container_exec_cmd: "{{ container_binary }} exec ceph-mon-{{ hostvars[groups[mon_group_name][0]]['ansible_hostname'] }}" - name: exit playbook, if can not connect to the cluster - command: "{{ container_exec_cmd | default('') }} timeout 5 ceph --cluster {{ cluster }} health" + command: "{{ container_exec_cmd | default('') }} timeout 5 ceph --cluster {{ cluster }} -s -f json" register: ceph_health until: ceph_health.rc failed_when: ceph_health.rc != 0 @@ -78,6 +78,18 @@ set_fact: rbdmirror_to_kill_hostname: "{{ hostvars[rbdmirror_to_kill]['ansible_hostname'] }}" + - name: set_fact rbdmirror_gids + set_fact: + rbdmirror_gids: "{{ rbdmirror_gids | default([]) + [ item ] }}" + with_items: "{{ (ceph_health.stdout | from_json)['servicemap']['services']['rbd-mirror']['daemons'].keys() | list }}" + when: item != 'summary' + + - name: set_fact rbdmirror_to_kill_gid + set_fact: + rbdmirror_to_kill_gid: "{{ (ceph_health.stdout | from_json)['servicemap']['services']['rbd-mirror']['daemons'][item]['gid'] }}" + with_items: "{{ rbdmirror_gids }}" + when: (ceph_health.stdout | from_json)['servicemap']['services']['rbd-mirror']['daemons'][item]['metadata']['hostname'] == rbdmirror_to_kill_hostname + tasks: - name: stop rbdmirror service service: @@ -94,6 +106,27 @@ delegate_to: "{{ rbdmirror_to_kill }}" post_tasks: + - name: get servicemap details + command: "{{ container_exec_cmd | default('') }} timeout 5 ceph --cluster {{ cluster }} -s -f json" + register: ceph_health + delegate_to: "{{ groups[mon_group_name][0] }}" + + - name: set_fact rbdmirror_gids + set_fact: + post_rbdmirror_gids: "{{ post_rbdmirror_gids | default([]) + [ item ] }}" + with_items: "{{ (ceph_health.stdout | from_json)['servicemap']['services']['rbd-mirror']['daemons'].keys() | list }}" + when: + - "'rbd-mirror' in (ceph_health.stdout | from_json)['servicemap']['services'].keys() | list" + - item != 'summary' + - name: show ceph health command: "{{ container_exec_cmd | default('') }} ceph --cluster {{ cluster }} -s" delegate_to: "{{ groups[mon_group_name][0] }}" + + - name: check presence of "{{ rbdmirror_to_kill_hostname }}" + fail: + msg: "{{ rbdmirror_to_kill_hostname }} still active!" + when: + - rbdmirror_to_kill_gid is defined + - post_rbdmirror_gids is defined + - rbdmirror_to_kill_gid in post_rbdmirror_gids