Skip to content

Commit

Permalink
ceph-facts: Fix get_def_crush_rule_name.yml in check mode
Browse files Browse the repository at this point in the history
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 <bknecht@protonmail.ch>
(cherry picked from commit 7684d89)
  • Loading branch information
BenoitKnecht authored and guits committed Feb 16, 2022
1 parent 3ba0e4b commit 4487e41
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions roles/ceph-facts/tasks/get_def_crush_rule_name.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,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
when: item.rule_id | int == osd_pool_default_crush_rule | int

0 comments on commit 4487e41

Please sign in to comment.