]> git.apps.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
shrink-rbdmirror: check if rbdmirror is well removed from cluster 4238/head
authorGuillaume Abrioux <gabrioux@redhat.com>
Thu, 11 Jul 2019 09:26:50 +0000 (11:26 +0200)
committerGuillaume Abrioux <gabrioux@redhat.com>
Mon, 15 Jul 2019 09:22:17 +0000 (11:22 +0200)
This commits adds a check to ensure the daemon has been removed from the
cluster.

Signed-off-by: Guillaume Abrioux <gabrioux@redhat.com>
infrastructure-playbooks/shrink-rbdmirror.yml

index 7d2fd19ca754c5070fa6dcc6ac6d240fb0503dbe..85f893d9f328f39810a96db949bb29a59aa7cfed 100644 (file)
@@ -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
       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:
       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