]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
ceph-osd: Fix crush_rules.yml in check mode
authorBenoît Knecht <bknecht@protonmail.ch>
Mon, 13 Dec 2021 13:41:23 +0000 (14:41 +0100)
committerGuillaume Abrioux <gabrioux@redhat.com>
Wed, 16 Feb 2022 08:50:24 +0000 (09:50 +0100)
Set a default value for `item.stdout` before passing it to `from_json()`. The
`when` condition doesn't prevent this template from being evaluated in check
mode, so it fails if `item.stdout` doesn't contain a valid JSON string.

Signed-off-by: Benoît Knecht <bknecht@protonmail.ch>
(cherry picked from commit ef05e9a313ad232508440131b59f1ab832aaa46d)

roles/ceph-osd/tasks/crush_rules.yml

index 8af06407430fda35aa242c98330ebdf42814ba86..b2c25cee6b458c80a1cf9d733c9af9d417a58082 100644 (file)
@@ -44,8 +44,8 @@
 # NOTE(leseb): we should actually fail if multiple rules are set as default
 - name: set_fact info_ceph_default_crush_rule_yaml, ceph_osd_pool_default_crush_rule_name
   set_fact:
-    info_ceph_default_crush_rule_yaml: "{{ item.stdout | from_json() }}"
-    ceph_osd_pool_default_crush_rule_name: "{{ (item.stdout | from_json).rule_name }}"
+    info_ceph_default_crush_rule_yaml: "{{ item.stdout | default('{}', True) | from_json() }}"
+    ceph_osd_pool_default_crush_rule_name: "{{ (item.stdout | default('{}', True) | from_json).get('rule_name') }}"
   with_items: "{{ info_ceph_default_crush_rule.results }}"
   run_once: true
   when: not item.get('skipped', false)