mirror of https://github.com/ceph/ceph-ansible.git
monitor: use quorum_status instead of ceph status
The ceph status command returns a lot of information stored in variables
and/or facts which could consume resources for nothing.
When checking the quorum status, we're only using the quorum_names
structure in the ceph status output.
To optimize this, we could use the ceph quorum_status command which contains
the same needed information.
This command returns less information.
$ ceph status -f json | wc -c
2001
$ ceph quorum_status -f json | wc -c
957
$ time ceph status -f json > /dev/null
real 0m0.577s
user 0m0.538s
sys 0m0.029s
$ time ceph quorum_status -f json > /dev/null
real 0m0.544s
user 0m0.527s
sys 0m0.016s
Signed-off-by: Dimitri Savineau <dsavinea@redhat.com>
(cherry picked from commit 88f91d8c12
)
pull/6008/head
parent
1185b7e86a
commit
69b51b5f19
|
@ -233,7 +233,7 @@
|
||||||
ignore_errors: True # if no mgr collocated with mons
|
ignore_errors: True # if no mgr collocated with mons
|
||||||
|
|
||||||
- name: non container | waiting for the monitor to join the quorum...
|
- name: non container | waiting for the monitor to join the quorum...
|
||||||
command: ceph --cluster "{{ cluster }}" -m "{{ hostvars[groups[mon_group_name][0]]['_current_monitor_address'] }}" -s --format json
|
command: ceph --cluster "{{ cluster }}" -m "{{ hostvars[groups[mon_group_name][0]]['_current_monitor_address'] }}" quorum_status --format json
|
||||||
register: ceph_health_raw
|
register: ceph_health_raw
|
||||||
until:
|
until:
|
||||||
- ceph_health_raw.rc == 0
|
- ceph_health_raw.rc == 0
|
||||||
|
@ -245,7 +245,7 @@
|
||||||
|
|
||||||
- name: container | waiting for the containerized monitor to join the quorum...
|
- name: container | waiting for the containerized monitor to join the quorum...
|
||||||
command: >
|
command: >
|
||||||
{{ container_binary }} exec ceph-mon-{{ ansible_hostname }} ceph --cluster "{{ cluster }}" -m "{{ hostvars[groups[mon_group_name][0]]['_current_monitor_address'] }}" -s --format json
|
{{ container_binary }} exec ceph-mon-{{ ansible_hostname }} ceph --cluster "{{ cluster }}" -m "{{ hostvars[groups[mon_group_name][0]]['_current_monitor_address'] }}" quorum_status --format json
|
||||||
register: ceph_health_raw
|
register: ceph_health_raw
|
||||||
until:
|
until:
|
||||||
- ceph_health_raw.rc == 0
|
- ceph_health_raw.rc == 0
|
||||||
|
|
|
@ -112,7 +112,7 @@
|
||||||
|
|
||||||
post_tasks:
|
post_tasks:
|
||||||
- name: verify the monitor is out of the cluster
|
- name: verify the monitor is out of the cluster
|
||||||
command: "{{ container_exec_cmd }} ceph --cluster {{ cluster }} -s -f json"
|
command: "{{ container_exec_cmd }} ceph --cluster {{ cluster }} quorum_status -f json"
|
||||||
delegate_to: "{{ mon_host }}"
|
delegate_to: "{{ mon_host }}"
|
||||||
failed_when: false
|
failed_when: false
|
||||||
register: result
|
register: result
|
||||||
|
|
|
@ -135,7 +135,7 @@
|
||||||
|
|
||||||
post_tasks:
|
post_tasks:
|
||||||
- name: waiting for the monitor to join the quorum...
|
- name: waiting for the monitor to join the quorum...
|
||||||
command: "{{ container_exec_cmd }} ceph --cluster {{ cluster }} -s --format json"
|
command: "{{ container_exec_cmd }} ceph --cluster {{ cluster }} quorum_status --format json"
|
||||||
register: ceph_health_raw
|
register: ceph_health_raw
|
||||||
until: >
|
until: >
|
||||||
hostvars[mon_host]['ansible_hostname'] in (ceph_health_raw.stdout | from_json)["quorum_names"]
|
hostvars[mon_host]['ansible_hostname'] in (ceph_health_raw.stdout | from_json)["quorum_names"]
|
||||||
|
|
|
@ -19,7 +19,7 @@ $DOCKER_EXEC test -S /var/run/ceph/{{ cluster }}-mon.{{ ansible_hostname }}.asok
|
||||||
|
|
||||||
check_quorum() {
|
check_quorum() {
|
||||||
while [ $RETRIES -ne 0 ]; do
|
while [ $RETRIES -ne 0 ]; do
|
||||||
$DOCKER_EXEC ceph --cluster {{ cluster }} -s --format json | "{{ discovered_interpreter_python }}" -c 'import sys, json; exit(0) if "{{ monitor_name }}" in json.load(sys.stdin)["quorum_names"] else exit(1)' && exit 0
|
$DOCKER_EXEC ceph --cluster {{ cluster }} quorum_status --format json | "{{ discovered_interpreter_python }}" -c 'import sys, json; exit(0) if "{{ monitor_name }}" in json.load(sys.stdin)["quorum_names"] else exit(1)' && exit 0
|
||||||
sleep $DELAY
|
sleep $DELAY
|
||||||
let RETRIES=RETRIES-1
|
let RETRIES=RETRIES-1
|
||||||
done
|
done
|
||||||
|
|
Loading…
Reference in New Issue