From 69a990392a94b59e1404eaeae7d6dfb5217ca71c Mon Sep 17 00:00:00 2001 From: Teoman ONAY Date: Tue, 28 May 2024 14:06:03 +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 5a44fbeaa69273260f42257524df2e211b65c3ce) --- 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 b163bbd09..0c876b24b 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: