From 65af42af7e9b1baeac47071b0a26d6bf8a349f15 Mon Sep 17 00:00:00 2001 From: Teoman ONAY Date: Tue, 28 May 2024 13:58:50 +0200 Subject: [PATCH] ceph_orch_apply: fix idempotency As is idempotency does not work as the ceph orch output does contain more attributes than the expected spec. Signed-off-by: Teoman ONAY (cherry picked from commit aefda375b2ea1ae643566a29639fc9026baec604) --- library/ceph_orch_apply.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/library/ceph_orch_apply.py b/library/ceph_orch_apply.py index 4848e98..2b40be6 100644 --- a/library/ceph_orch_apply.py +++ b/library/ceph_orch_apply.py @@ -103,6 +103,21 @@ def apply_spec(module: "AnsibleModule", return rc, cmd, out, err +def change_required(current: Dict, expected: Dict) -> bool: + """ checks if the current config differs from what is expected """ + if not current: + return True + + for key, value in expected.items(): + if key in current: + if current[key] != value: + return True + continue + else: + return True + return False + + def run_module() -> None: module_args = dict( @@ -137,7 +152,7 @@ def run_module() -> None: expected = parse_spec(module.params.get('spec')) current_spec = retrieve_current_spec(module, expected) - if not current_spec or current_spec != expected: + if change_required(current_spec, expected): rc, cmd, out, err = apply_spec(module, spec) changed = True else: