From: Benoît Knecht Date: Mon, 13 Dec 2021 15:36:27 +0000 (+0100) Subject: ceph-facts: Fix get_def_crush_rule_name.yml in check mode X-Git-Tag: v6.0.26~26 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=df0901e8799c289f10e312a964b162fe10768b2a;p=ceph-ansible.git ceph-facts: Fix get_def_crush_rule_name.yml in check mode This construct doesn't work as intended since ansible/ansible#74212: ``` item.stdout | default('{}') | from_json ``` That PR made the `command` module return `stdout` even in check mode (setting it to the empty string), so `default()` has no effect in that case and `from_json()` fails to parse an empty string. Instead, `default()` needs to be invoked with its second argument set to `True`, so that it replaces any `False` value (such as an empty string) with its first argument: ``` item.stdout | default('{}', True) | from_json ``` Signed-off-by: Benoît Knecht (cherry picked from commit 7684d892c083ea1e07ada163e78da9f0359b116f) --- diff --git a/roles/ceph-facts/tasks/get_def_crush_rule_name.yml b/roles/ceph-facts/tasks/get_def_crush_rule_name.yml index 89e22b130..4b1a04eb0 100644 --- a/roles/ceph-facts/tasks/get_def_crush_rule_name.yml +++ b/roles/ceph-facts/tasks/get_def_crush_rule_name.yml @@ -14,6 +14,6 @@ - name: get current default crush rule name set_fact: ceph_osd_pool_default_crush_rule_name: "{{ item.rule_name }}" - with_items: "{{ default_crush_rule_details.stdout | default('{}') | from_json }}" + with_items: "{{ default_crush_rule_details.stdout | default('{}', True) | from_json }}" run_once: True - when: item.rule_id | int == osd_pool_default_crush_rule | int \ No newline at end of file + when: item.rule_id | int == osd_pool_default_crush_rule | int